diff --git a/.travis.yml b/.travis.yml index eaa289e5cc7..526ebde75ea 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,16 +5,6 @@ sudo: false git: depth: 1 -env: - global: - - BYOND_MAJOR="511" - - BYOND_MINOR="1385" - - BYOND_MACRO_COUNT=2 - matrix: - - DM_MAPFILE="cyberiad" - - DM_MAPFILE="metastation" - - DM_MAPFILE="test_away_missions" - cache: directories: - $HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR} @@ -26,24 +16,57 @@ addons: - libgcc1:i386 - libstdc++6:i386 +env: + global: + - BYOND_MAJOR="511" + - BYOND_MINOR="1385" + - BYOND_MACRO_COUNT=4 + matrix: + - DM_MAPFILE="cyberiad" + - DM_MAPFILE="metastation" + - DM_MAPFILE="test_all_maps" + +stages: + - File Checks + - test + before_script: - chmod +x ./install-byond.sh - ./install-byond.sh script: - - (num=`grep -E '\\\\(red|blue|green|black|italic|bold|b|i[^mc])' **/*.dm | wc -l`; echo "$num BYOND text macros (expecting ${BYOND_MACRO_COUNT} or fewer)"; [ $num -le ${BYOND_MACRO_COUNT} ]) - source $HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR}/byond/bin/byondsetup - bash dm.sh -M${DM_MAPFILE} paradise.dme -matrix: +jobs: include: - - env: FILE_CHECKS=1 + # Basic styling/functionality checks + - stage: File Checks + env: addons: install: - pip install --user PyYaml -q - pip install --user beautifulsoup4 -q - before_script: + before_script: skip script: - shopt -s globstar - (! grep 'step_[xy]' _maps/map_files/**/*.dmm) + - (num=$(grep -Ern '\\(red|blue|green|black|italic|bold|b|i[^mc])' code/ | wc -l); echo "$num BYOND text macros (expecting ${BYOND_MACRO_COUNT} or fewer)"; [ $num -le ${BYOND_MACRO_COUNT} ]) - md5sum -c - <<< "6dc1b6bf583f3bd4176b6df494caa5f1 *html/changelogs/example.yml" - python tools/ss13_genchangelog.py html/changelog.html html/changelogs + + # Compile NanoUI to make sure it works + - stage: NanoUI + language: node_js + node_js: + - "9" + env: + addons: + before_install: + - npm install -g bower gulp + - cd ./nano/ + install: + - npm install --loglevel=error + - bower install --silent + before_script: + script: + - gulp --min diff --git a/SQL/paradise_schema.sql b/SQL/paradise_schema.sql index 826e47878c6..ac212377724 100644 --- a/SQL/paradise_schema.sql +++ b/SQL/paradise_schema.sql @@ -265,6 +265,7 @@ CREATE TABLE `player` ( `ghost_anonsay` tinyint(1) NOT NULL DEFAULT '0', `exp` mediumtext, `clientfps` smallint(4) DEFAULT '0', + `atklog` smallint(4) DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `ckey` (`ckey`) ) ENGINE=InnoDB AUTO_INCREMENT=32446 DEFAULT CHARSET=latin1; @@ -359,12 +360,12 @@ DROP TABLE IF EXISTS `privacy`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `privacy` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `datetime` datetime NOT NULL, `ckey` varchar(32) NOT NULL, - `option` varchar(128) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=latin1; + `datetime` datetime NOT NULL, + `consent` bit(1) NOT NULL, + PRIMARY KEY (`ckey`), + UNIQUE KEY `ckey_UNIQUE` (`ckey`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; -- diff --git a/SQL/paradise_schema_prefixed.sql b/SQL/paradise_schema_prefixed.sql index e0056474db3..15dccc0a805 100644 --- a/SQL/paradise_schema_prefixed.sql +++ b/SQL/paradise_schema_prefixed.sql @@ -264,6 +264,7 @@ CREATE TABLE `SS13_player` ( `ghost_anonsay` tinyint(1) NOT NULL DEFAULT '0', `exp` mediumtext, `clientfps` smallint(4) DEFAULT '0', + `atklog` smallint(4) DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `ckey` (`ckey`) ) ENGINE=InnoDB AUTO_INCREMENT=32446 DEFAULT CHARSET=latin1; @@ -357,13 +358,13 @@ CREATE TABLE `SS13_poll_vote` ( DROP TABLE IF EXISTS `SS13_privacy`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `SS13_privacy` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `datetime` datetime NOT NULL, +CREATE TABLE `ss13_privacy` ( `ckey` varchar(32) NOT NULL, - `option` varchar(128) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=latin1; + `datetime` datetime NOT NULL, + `consent` bit(1) NOT NULL, + PRIMARY KEY (`ckey`), + UNIQUE KEY `ckey_UNIQUE` (`ckey`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; -- diff --git a/SQL/updates/2-3.sql b/SQL/updates/2-3.sql new file mode 100644 index 00000000000..d733759bc6e --- /dev/null +++ b/SQL/updates/2-3.sql @@ -0,0 +1,10 @@ +#Updating the SQL from version 2 to version 3. -alffd +#Droping privacy table and recreating for terms of service tracking +DROP TABLE `privacy`; +CREATE TABLE `privacy` ( + `ckey` varchar(32) NOT NULL, + `datetime` datetime NOT NULL, + `consent` bit(1) NOT NULL, + PRIMARY KEY (`ckey`), + UNIQUE KEY `ckey_UNIQUE` (`ckey`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; diff --git a/SQL/updates/3-4.sql b/SQL/updates/3-4.sql new file mode 100644 index 00000000000..25b6f9007cd --- /dev/null +++ b/SQL/updates/3-4.sql @@ -0,0 +1,4 @@ +#Updating the SQL from version 3 to version 4. -Kyep +#Adding new column to contain the atklog value. +ALTER TABLE `player` + ADD `atklog` smallint(4) DEFAULT '0' AFTER `clientfps`; \ No newline at end of file diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm index 145248966bc..514eda508c9 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm @@ -142,7 +142,7 @@ "acL" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/permabrig) "acM" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/security/permabrig) "acN" = (/turf/simulated/wall,/area/security/permabrig) -"acO" = (/obj/machinery/door/poddoor{density = 1; icon_state = "pdoor1"; id_tag = "SecJusticeChamber"; name = "Justice Vent"; opacity = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/security/permabrig) +"acO" = (/obj/machinery/door/poddoor{density = 1; icon_state = "pdoor1"; id_tag = "SecJusticeChamber"; name = "Justice Vent"; opacity = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/security/permabrig) "acP" = (/obj/structure/stool/bed/chair{dir = 1},/obj/item/radio/intercom{pixel_x = 25},/turf/simulated/shuttle/floor,/area/shuttle/pod_2) "acQ" = (/obj/item/soap/nanotrasen,/obj/item/bikehorn/rubberducky,/obj/machinery/shower{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig) "acR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/twohanded/required/kirbyplants{tag = "icon-plant-13"; icon_state = "plant-13"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) @@ -176,7 +176,7 @@ "adt" = (/obj/structure/table,/obj/structure/bedsheetbin,/obj/structure/window/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/security/permabrig) "adu" = (/obj/structure/window/reinforced,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/security/permabrig) "adv" = (/turf/simulated/floor/plating,/area/security/permabrig) -"adw" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/security/permabrig) +"adw" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/security/permabrig) "adx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light/small{dir = 8},/obj/machinery/sparker{dir = 2; id = "executionburn"; pixel_x = -25},/turf/simulated/floor/plasteel{tag = "icon-warndark (WEST)"; icon_state = "warndark"; dir = 8},/area/security/permabrig) "ady" = (/obj/machinery/flasher{id = "justiceflash"; name = "mounted justice flash"; pixel_x = 28},/turf/simulated/floor/plasteel{tag = "icon-warndark (EAST)"; icon_state = "warndark"; dir = 4},/area/security/permabrig) "adz" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/radio/electropack,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig) @@ -201,10 +201,10 @@ "adS" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/security/permabrig) "adT" = (/obj/machinery/vending/sustenance{desc = "A vending machine normally reserved for work camps."; name = "\improper sustenance vendor"; product_slogans = "Enjoy your meal.;Enough calories to support any worker."},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) "adU" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adV" = (/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/security/permabrig) -"adW" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/security/permabrig) +"adV" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/security/permabrig) +"adW" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/security/permabrig) "adX" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/security/permabrig) -"adY" = (/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"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/security/permabrig) +"adY" = (/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"; pixel_x = 0; pixel_y = 32},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/security/permabrig) "adZ" = (/obj/machinery/door/airlock/external{name = "Security External Airlock"; req_access_txt = "1"},/turf/simulated/floor/plating,/area/security/permabrig) "aea" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-warndark (SOUTHWEST)"; icon_state = "warndark"; dir = 10},/area/security/permabrig) "aeb" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 2; name = "justice injector"},/turf/simulated/floor/plasteel{tag = "icon-warndark (SOUTHEAST)"; icon_state = "warndark"; dir = 6},/area/security/permabrig) @@ -342,7 +342,7 @@ "agD" = (/obj/item/radio/intercom/department/security,/turf/simulated/wall/r_wall,/area/security/hos) "agE" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) "agF" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "hosprivacy"; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/hos) -"agG" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"agG" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "agH" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/pod_3) "agI" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_3) "agJ" = (/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) @@ -385,7 +385,7 @@ "ahu" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/circular_saw,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "ahv" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/optable,/obj/item/organ/internal/brain,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "ahw" = (/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "open"; id_tag = "voxshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/shuttle/window{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_mid"; tag = "icon-window5 (EAST)"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) -"ahx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarport) +"ahx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "ahy" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "ahz" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/obj/machinery/space_heater,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/permabrig) "ahA" = (/obj/item/tank/oxygen{pixel_x = -4; pixel_y = -1},/obj/item/tank/oxygen{pixel_x = 4; pixel_y = -1},/obj/item/tank/anesthetic{pixel_x = 2},/obj/item/storage/toolbox/mechanical,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/machinery/atmospherics/pipe/manifold/visible,/obj/item/wrench,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/permabrig) @@ -495,7 +495,7 @@ "ajA" = (/obj/machinery/body_scanconsole,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "ajB" = (/turf/simulated/wall/r_wall,/area/maintenance/auxsolarport) "ajC" = (/obj/machinery/power/solar_control{id = "foreport"; name = "Fore Port Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"ajD" = (/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/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarport) +"ajD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "ajE" = (/obj/machinery/power/apc{dir = 8; name = "Fore Port Solar APC"; pixel_x = -25; pixel_y = 3},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "ajF" = (/obj/structure/sign/securearea,/turf/simulated/wall,/area/security/permabrig) "ajG" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/security/glass{name = "Prison Wing"; req_access_txt = "1"},/turf/simulated/floor/plasteel,/area/security/permabrig) @@ -585,13 +585,13 @@ "alm" = (/obj/structure/rack,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/suit/space/vox/pressure,/obj/item/clothing/head/helmet/space/vox/pressure,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "aln" = (/obj/structure/rack,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "alo" = (/obj/machinery/door/poddoor{id_tag = "trash"; name = "disposal bay door"},/obj/structure/fans/tiny,/turf/simulated/floor/plating,/area/maintenance/disposal) -"alp" = (/obj/machinery/mass_driver{dir = 8; id_tag = "trash"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/disposal) +"alp" = (/obj/machinery/mass_driver{dir = 8; id_tag = "trash"},/obj/machinery/light/small{dir = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/disposal) "alq" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "garbage"; name = "disposal coveyor"},/turf/simulated/floor/plating,/area/maintenance/disposal) "alr" = (/turf/simulated/floor/plating,/area/maintenance/disposal) "als" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "hosprivacy"; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/hos) "alt" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/disposal) "alu" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "hosprivacy"; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/hos) -"alv" = (/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/hidden/supply,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/auxsolarport) +"alv" = (/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/hidden/supply,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "alw" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes,/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "alx" = (/obj/structure/table,/obj/item/stack/medical/ointment{pixel_x = 3; pixel_y = -2},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/reagent_containers/syringe/epinephrine,/obj/item/storage/secure/safe{pixel_x = 6; pixel_y = 28},/obj/item/restraints/handcuffs/cable/pink,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aly" = (/obj/item/storage/secure/safe{pixel_x = 6; pixel_y = 28},/obj/item/kitchen/rollingpin,/obj/structure/closet/crate,/obj/item/clothing/suit/xenos,/obj/item/clothing/suit/monkeysuit,/obj/item/clothing/head/xenos,/obj/item/clothing/mask/gas/monkeymask,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -697,13 +697,13 @@ "anu" = (/obj/structure/grille,/obj/structure/shuttle/window{tag = "icon-window5_end (NORTH)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; dir = 1},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) "anv" = (/obj/machinery/conveyor{dir = 2; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) "anw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal) -"anx" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/disposal) -"any" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/disposal) -"anz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/disposal) -"anA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"; tag = "icon-warnplatecorner"},/area/maintenance/disposal) +"anx" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/disposal) +"any" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/disposal) +"anz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/disposal) +"anA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plating,/area/maintenance/disposal) "anB" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"anC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"anD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"anC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"anD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anE" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anF" = (/obj/machinery/door/airlock/security/glass{name = "Secure Gear Storage"; req_access_txt = "3"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/security/armoury) "anG" = (/obj/item/vending_refill/cola,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -771,15 +771,15 @@ "aoQ" = (/obj/item/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "aoR" = (/obj/item/clothing/head/bearpelt,/obj/item/xenos_claw,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "aoS" = (/obj/machinery/conveyor{dir = 2; id = "garbage"},/obj/structure/sign/vacuum{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/disposal) -"aoT" = (/obj/machinery/disposal/deliveryChute{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; layer = 3},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/disposal) +"aoT" = (/obj/machinery/disposal/deliveryChute{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; layer = 3},/obj/structure/disposalpipe/trunk{dir = 1},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/disposal) "aoU" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "Danger: Conveyor Access"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/disposal) "aoV" = (/obj/machinery/mineral/stacking_machine,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) -"aoW" = (/obj/machinery/mineral/stacking_unit_console{dir = 2; machinedir = 8; pixel_x = 32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/disposal) +"aoW" = (/obj/machinery/mineral/stacking_unit_console{dir = 2; machinedir = 8; pixel_x = 32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/disposal) "aoX" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aoY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aoZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aoZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "apa" = (/obj/machinery/door/airlock/maintenance{name = "Secure Storage Room"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"apb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"apb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "apc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/item/bucket_sensor,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "apd" = (/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ape" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -819,7 +819,7 @@ "apM" = (/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"}) "apN" = (/obj/machinery/door/airlock/public/glass{name = "Cryodorms"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "apO" = (/obj/item/flashlight{pixel_x = 1; pixel_y = 5},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) -"apP" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fore) +"apP" = (/obj/machinery/light/small{dir = 8},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating,/area/maintenance/starboard) "apQ" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitered"; tag = "icon-whitehall (WEST)"},/area/security/brig) "apR" = (/obj/machinery/prize_counter,/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"}) "apS" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) @@ -833,14 +833,14 @@ "aqa" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/brig) "aqb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aqc" = (/obj/machinery/door/airlock/maintenance{name = "maintenance access"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"aqd" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/starboard) +"aqd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aqe" = (/obj/machinery/door/airlock/external{req_access_txt = "0"; req_one_access_txt = "13,8"},/turf/simulated/floor/plating,/area/maintenance/starboard) "aqf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravitygenerator) "aqg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/engine/gravitygenerator) "aqh" = (/obj/machinery/gravity_generator/main/station,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/engine/gravitygenerator) "aqi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/engine/gravitygenerator) "aqj" = (/obj/machinery/camera{c_tag = "Gravity Generator Room"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravitygenerator) -"aqk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarstarboard) +"aqk" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/disposal) "aql" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitered"; tag = "icon-whitehall (WEST)"},/area/security/brig) "aqm" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "aqn" = (/obj/item/clothing/head/collectable/xenom,/obj/item/clothing/head/chicken,/obj/item/aiModule/syndicate,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) @@ -849,7 +849,7 @@ "aqq" = (/obj/machinery/light/small{dir = 8},/obj/machinery/conveyor{dir = 2; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) "aqr" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) "aqs" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 4; icon_state = "left"; name = "Danger: Conveyor Access"; req_access_txt = "12"},/obj/machinery/conveyor{dir = 9; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"aqt" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/disposal) +"aqt" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) "aqu" = (/mob/living/simple_animal/bot/cleanbot{name = "Mopfficer Sweepsky"; on = 0},/turf/simulated/floor/plating,/area/maintenance/fore) "aqv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aqw" = (/obj/structure/closet/crate,/obj/item/bodybag,/obj/item/radio,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/fore) @@ -900,7 +900,7 @@ "arp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "arq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "arr" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/starboard) -"ars" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) +"ars" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/structure/disposaloutlet{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/disposal) "art" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravitygenerator) "aru" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravitygenerator) "arv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravitygenerator) @@ -910,12 +910,12 @@ "arz" = (/obj/item/storage/box/zipties,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "arA" = (/turf/simulated/floor/plating/airless,/area/space) "arB" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) -"arC" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/structure/disposaloutlet{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/disposal) +"arC" = (/obj/machinery/power/apc{dir = 2; name = "Disposal APC"; pixel_x = 0; pixel_y = -24},/obj/structure/cable/yellow,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/disposal) "arD" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/disposal) "arE" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) "arF" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/recycler,/turf/simulated/floor/plating,/area/maintenance/disposal) "arG" = (/obj/machinery/door/window/eastright{dir = 4; name = "Danger: Conveyor Access"; req_access_txt = "12"},/obj/machinery/conveyor{dir = 10; icon_state = "conveyor0"; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"arH" = (/obj/machinery/power/apc{dir = 2; name = "Disposal APC"; pixel_x = 0; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/disposal) +"arH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/fore) "arI" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arJ" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arK" = (/obj/machinery/space_heater,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -925,7 +925,7 @@ "arO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/pods{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) "arP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/fore) "arQ" = (/obj/structure/table,/obj/item/storage/box/evidence,/obj/item/hand_labeler,/obj/machinery/atmospherics/unary/vent_pump{dir = 7; on = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/security/warden) -"arR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fore) +"arR" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fore) "arS" = (/obj/structure/filingcabinet/security{pixel_x = 4},/turf/simulated/floor/plasteel{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/security/warden) "arT" = (/obj/machinery/power/apc{dir = 8; name = "Fore Starboard Solar APC"; pixel_x = -25; pixel_y = 3},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "arU" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -960,7 +960,7 @@ "asx" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/main) "asy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "asz" = (/obj/structure/table,/obj/item/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"asA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"asA" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/fore) "asB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "asC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "asD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -981,7 +981,7 @@ "asS" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/warden) "asT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 32},/turf/simulated/wall,/area/maintenance/auxsolarstarboard) "asU" = (/obj/machinery/power/solar_control{id = "forestarboard"; name = "Fore Starboard Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) -"asV" = (/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/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarstarboard) +"asV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "asW" = (/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/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "asX" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/sheet/mineral/plasma{amount = 30},/obj/machinery/cell_charger,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "asY" = (/obj/structure/rack,/obj/item/tank/jetpack/oxygen,/obj/item/tank/air,/obj/item/clothing/mask/breath,/obj/item/clothing/shoes/magboots,/obj/machinery/camera{c_tag = "Engineering Secure Storage South"; dir = 4; network = list("SS13")},/obj/item/clothing/suit/space/hardsuit/security,/obj/item/clothing/head/helmet/space/hardsuit/security,/turf/simulated/floor/plasteel,/area/security/podbay) @@ -1023,7 +1023,7 @@ "atI" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/morgue,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitered"; tag = "icon-whitehall (WEST)"},/area/security/brig) "atJ" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/wall,/area/security/brig) "atK" = (/turf/simulated/wall/r_wall,/area/security/main) -"atL" = (/obj/machinery/door/airlock/public/glass{name = "space-bridge access"},/obj/machinery/door_control{id = "supplybridge"; name = "Shuttle Bay Space Bridge Control"; pixel_x = 0; pixel_y = 27; req_access_txt = "0"; req_one_access_txt = "0"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"atL" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) "atM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/brig) "atN" = (/obj/structure/closet/lasertag/red,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "atO" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/ears/earmuffs,/obj/item/clothing/accessory/red,/obj/item/clothing/head/soft/red,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -1042,10 +1042,10 @@ "aub" = (/obj/item/cigbutt,/turf/simulated/floor/plating,/area/maintenance/starboard) "auc" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/flasher{id = "gulagshuttleflasher"; pixel_x = 25},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/siberia) "aud" = (/obj/item/mmi{name = "man-machine interface"},/obj/structure/rack{dir = 8; layer = 2.9},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard) -"aue" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/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},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/engine/gravitygenerator) -"auf" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/gravitygenerator) -"aug" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/gravitygenerator) -"auh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/gravitygenerator) +"aue" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/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/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) +"auf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) +"aug" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) +"auh" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) "aui" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/engine,/area/security/podbay) "auj" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "auk" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) @@ -1056,12 +1056,12 @@ "aup" = (/obj/structure/lattice,/obj/structure/grille/broken,/turf/space,/area/space) "auq" = (/obj/machinery/space_heater,/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/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aur" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/engineering,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/engineering,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) -"aus" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "supplybridge"},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aut" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "supplybridge"},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)"; icon_state = "warnplate"; dir = 9},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"auu" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "supplybridge"},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHEAST)"; icon_state = "warnplate"; dir = 5},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aus" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "supplybridge"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aut" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "supplybridge"},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"auu" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "supplybridge"},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "auv" = (/obj/machinery/camera{c_tag = "Engineering - Storage"; dir = 2; network = list("SS13")},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/engineering,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/engineering,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) -"auw" = (/obj/structure/disposalpipe/segment,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aux" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"auw" = (/obj/structure/disposalpipe/segment,/obj/machinery/light/small{dir = 8},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aux" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "auy" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "auz" = (/obj/structure/rack,/obj/effect/decal/cleanable/cobweb2,/obj/item/storage/toolbox/emergency,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "auA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -1072,7 +1072,7 @@ "auF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security/glass{name = "Labor Camp Shuttle Airlock"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/fore) "auG" = (/obj/structure/closet/crate,/obj/item/clothing/gloves/color/fyellow,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "auH" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) -"auI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/fore) +"auI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "auJ" = (/obj/item/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "auK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "auL" = (/obj/effect/decal/cleanable/blood,/obj/structure/stool/bed/chair,/obj/item/restraints/handcuffs,/obj/effect/decal/remains/human,/obj/item/clothing/under/soviet,/turf/simulated/floor/plating,/area/maintenance/fore) @@ -1104,7 +1104,7 @@ "avl" = (/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/main) "avm" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/main) "avn" = (/obj/item/phone{desc = "Supposedly a direct line to NanoTrasen Central Command. It's not even plugged in."; pixel_x = -3; pixel_y = 3},/obj/item/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/obj/structure/table/wood,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/main) -"avo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"avo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/fore) "avp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock{name = "Unisex Restroom"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) "avq" = (/obj/machinery/cryopod,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "avr" = (/turf/simulated/wall,/area/crew_quarters/mrchangs) @@ -1121,23 +1121,23 @@ "avC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/starboard) "avD" = (/obj/structure/rack,/obj/item/book/manual/engineering_guide{pixel_x = 3; pixel_y = 4},/obj/effect/spawner/lootdrop/maintenance,/obj/item/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/starboard) "avE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/wall/r_wall,/area/engine/gravitygenerator) -"avF" = (/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/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/engine/gravitygenerator) -"avG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/gravitygenerator) -"avH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/engine/gravitygenerator) -"avI" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/power/terminal,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/gravitygenerator) -"avJ" = (/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/engine/gravitygenerator) +"avF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) +"avG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) +"avH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/power/terminal,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) +"avI" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) +"avJ" = (/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/stool/bed/chair/office/light,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) "avK" = (/obj/machinery/conveyor{dir = 8; id = "QMLoad2"; movedir = 8},/obj/machinery/door/poddoor{id_tag = "QMLoaddoor"; name = "supply dock loading door"},/turf/simulated/floor/plating,/area/quartermaster/storage) -"avL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/auxsolarstarboard) +"avL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "avM" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "avN" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/pod_4) "avO" = (/obj/item/radio/intercom/department/security,/turf/simulated/wall/r_wall,/area/security/podbay) "avP" = (/obj/machinery/computer/podtracker,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) -"avQ" = (/obj/machinery/door/airlock/public/glass{name = "space-bridge access"; req_one_access_txt = "48;50"},/obj/machinery/door_control{id = "supplybridge"; name = "Shuttle Bay Space Bridge Control"; pixel_x = 0; pixel_y = 27; req_access_txt = "0"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"avR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"avS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"avT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"avQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"avR" = (/obj/machinery/door/airlock/public/glass{name = "space-bridge access"},/obj/machinery/door_control{id = "supplybridge"; name = "Shuttle Bay Space Bridge Control"; pixel_x = 0; pixel_y = 27; req_access_txt = "0"; req_one_access_txt = "0"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"avS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"avT" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "avU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"avV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"avV" = (/obj/machinery/door/airlock/public/glass{name = "space-bridge access"; req_one_access_txt = "48;50"},/obj/machinery/door_control{id = "supplybridge"; name = "Shuttle Bay Space Bridge Control"; pixel_x = 0; pixel_y = 27; req_access_txt = "0"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "avW" = (/obj/machinery/door/airlock/maintenance_hatch{name = "Supply Bay Bridge Access"; req_access_txt = "0"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "avX" = (/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "avY" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -1146,8 +1146,8 @@ "awb" = (/obj/machinery/conveyor{dir = 8; id = "QMLoad2"; movedir = 8},/obj/structure/plasticflaps,/turf/simulated/floor/plating,/area/quartermaster/storage) "awc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/maintenance_hatch{name = "Supply Bay Bridge Access"; req_access_txt = "0"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "awd" = (/turf/simulated/wall/r_wall,/area/security/processing) -"awe" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/gravitygenerator) -"awf" = (/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j2s"; sortType = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/fore) +"awe" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"awf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "awg" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/fore) "awh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/maintenance{name = "Brig Maintenance"; req_access_txt = "0"; req_one_access_txt = "63;12"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fore) "awi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/camera{c_tag = "Labor Shuttle Control Desk"; dir = 4},/obj/machinery/computer/shuttle/labor,/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) @@ -1178,8 +1178,8 @@ "awH" = (/obj/structure/stool/bed/chair,/obj/machinery/computer/security/telescreen{desc = "Used for watching proceedings in the interrogation room."; dir = 1; layer = 4; name = "interrogation monitor"; network = list("interrogation"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/main) "awI" = (/obj/structure/toilet{dir = 8},/obj/machinery/newscaster/security_unit{pixel_x = -32; pixel_y = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) "awJ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/highsecurity{name = "Gravity Generator Foyer"; req_access_txt = "10"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/gravitygenerator) -"awK" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fore) -"awL" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) +"awK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"awL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/starboard) "awM" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/starboard) "awN" = (/obj/machinery/light/small{dir = 8},/obj/structure/chickenstatue,/turf/simulated/floor/wood,/area/crew_quarters/mrchangs) "awO" = (/obj/machinery/vending/chinese,/turf/simulated/floor/wood,/area/crew_quarters/mrchangs) @@ -1191,9 +1191,9 @@ "awU" = (/obj/machinery/light/small{dir = 1},/obj/effect/decal/cleanable/cobweb,/obj/machinery/door_control{id = "Cabin4"; name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/stool/bed,/obj/item/bedsheet,/turf/simulated/floor/carpet,/area/crew_quarters/sleep) "awV" = (/obj/structure/closet/secure_closet/personal/cabinet,/obj/machinery/alarm{pixel_y = 23},/obj/item/clothing/under/suit_jacket/burgundy,/turf/simulated/floor/carpet,/area/crew_quarters/sleep) "awW" = (/obj/structure/dresser,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/carpet,/area/crew_quarters/sleep) -"awX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboard) +"awX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/fore) "awY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/engine/gravitygenerator) -"awZ" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/gravitygenerator) +"awZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/fore) "axa" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/gravitygenerator) "axb" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/table,/obj/item/paper/gravity_gen{layer = 3},/obj/item/pen/blue,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/gravitygenerator) "axc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/wood,/obj/machinery/photocopier/faxmachine/longrange,/turf/simulated/floor/wood,/area/lawoffice) @@ -1204,8 +1204,8 @@ "axh" = (/turf/simulated/wall/r_wall,/area/maintenance/starboard) "axi" = (/obj/structure/grille,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/maintenance/starboard) "axj" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/processing) -"axk" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "supplybridge"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"axl" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "supplybridge"},/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHWEST)"; icon_state = "warnplate"; dir = 10},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"axk" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "supplybridge"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"axl" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "supplybridge"},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "axm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "axn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "axo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -1214,15 +1214,15 @@ "axr" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fore) "axs" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j1s"; sortType = 2},/turf/simulated/floor/plating,/area/maintenance/fore) "axt" = (/obj/structure/disposalpipe/segment{dir = 4},/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/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fore) -"axu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fore) +"axu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/fore) "axv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;63"},/turf/simulated/floor/plating,/area/maintenance/fore) -"axw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fore) +"axw" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "supplybridge"},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "axx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) "axy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) "axz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/fore) -"axA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fore) +"axA" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) "axB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) -"axC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fore) +"axC" = (/obj/machinery/camera{c_tag = "Gravity Generator Foyer"},/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) "axD" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/siberia) "axE" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/shuttle/siberia) "axF" = (/turf/space,/turf/simulated/shuttle/wall{dir = 2; icon_state = "swall_f10"; layer = 2},/area/shuttle/siberia) @@ -1234,18 +1234,18 @@ "axL" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/main) "axM" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Security Delivery"; req_access_txt = "1"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/security/processing) "axN" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/processing) -"axO" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/fore) +"axO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) "axP" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 8; location = "Security"},/obj/structure/plasticflaps{opacity = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/processing) "axQ" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/fore) -"axR" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fore) +"axR" = (/obj/item/cigbutt,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/starboard) "axS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/light{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "axT" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/fore) "axU" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/fore) "axV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"axW" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/security/main) +"axW" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; max_integrity = 120; reinf = 0},/turf/simulated/floor/plating,/area/security/main) "axX" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/poddoor{id_tag = "QMLoaddoor"; name = "supply dock loading door"},/turf/simulated/floor/plating,/area/quartermaster/storage) "axY" = (/obj/machinery/cryopod/right,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"axZ" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "supplybridge"},/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHEAST)"; icon_state = "warnplate"; dir = 6},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"axZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fore) "aya" = (/obj/structure/stool/bed/chair/wood/normal,/turf/simulated/floor/wood,/area/crew_quarters/mrchangs) "ayb" = (/turf/simulated/floor/wood,/area/crew_quarters/mrchangs) "ayc" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep) @@ -1261,9 +1261,9 @@ "aym" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/starboard) "ayn" = (/obj/structure/closet,/obj/item/stock_parts/matter_bin,/turf/simulated/floor/plating,/area/maintenance/starboard) "ayo" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/starboard) -"ayp" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/engine/gravitygenerator) +"ayp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/starboard) "ayq" = (/obj/machinery/door/airlock/highsecurity{name = "Gravity Generator Room"; req_access_txt = "19;23"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/gravitygenerator) -"ayr" = (/obj/machinery/camera{c_tag = "Gravity Generator Foyer"},/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/engine/gravitygenerator) +"ayr" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) "ays" = (/obj/structure/closet/secure_closet/security,/obj/item/spacepod_equipment/weaponry/laser,/obj/machinery/power/apc{dir = 4; name = "Security Podbay APC"; pixel_x = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "ayt" = (/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/computer/prisoner,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) "ayu" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/locker) @@ -1277,10 +1277,10 @@ "ayC" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "ayD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "ayE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"ayF" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) +"ayF" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; max_integrity = 120; reinf = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) "ayG" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fore) "ayH" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2 (NORTH)"; icon_state = "pipe-j2"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fore) -"ayI" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/engineering,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/engineering,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) +"ayI" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) "ayJ" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/mrchangs) "ayK" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "ayL" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/security/brig) @@ -1311,10 +1311,10 @@ "azk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "azl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/crew_quarters/sleep) "azm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/wall,/area/crew_quarters/sleep) -"azn" = (/obj/item/cigbutt,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboard) +"azn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) "azo" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "ceprivacy"; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/engine/chiefs_office) "azp" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/starboard) -"azq" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) +"azq" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/gravitygenerator) "azr" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/maintenance/starboard) "azs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/starboard) "azt" = (/turf/simulated/floor/plasteel{tag = "icon-stage_stairs"; icon_state = "stage_stairs"},/area/security/podbay) @@ -1324,21 +1324,21 @@ "azx" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/processing) "azy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "azz" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/security/brig) -"azA" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/engineering,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/engineering,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/engine/engineering) +"azA" = (/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/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/starboard) "azB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "azC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/public/glass{name = "Cryodorms"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "azD" = (/obj/structure/spacepoddoor,/obj/machinery/door/poddoor/multi_tile/three_tile_ver{id_tag = "mechpodbay"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "azE" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "azF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/maintenance/starboard) "azG" = (/obj/structure/closet/crate/medical,/obj/item/stack/cable_coil,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/maintenance/starboard) -"azH" = (/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/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) +"azH" = (/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/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "azI" = (/obj/structure/closet/crate,/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/turf/simulated/floor/plating/airless,/area/space) "azJ" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"azK" = (/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/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"azL" = (/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"azK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"azL" = (/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j2s"; sortType = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fore) "azM" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/engine/engineering) "azN" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"azO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"azO" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "azP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;50"},/turf/simulated/floor/plating,/area/maintenance/fore) "azQ" = (/obj/item/stack/sheet/cardboard,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "azR" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Warehouse Maintenance"; req_access_txt = "0"; req_one_access_txt = "48;50"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/quartermaster/sorting{name = "\improper Warehouse"}) @@ -1397,7 +1397,7 @@ "aAS" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/shuttle/mining) "aAT" = (/turf/space,/turf/simulated/shuttle/wall{dir = 2; icon_state = "swall_f10"; layer = 2},/area/shuttle/mining) "aAU" = (/obj/item/clothing/gloves/color/rainbow,/obj/item/clothing/shoes/rainbow,/obj/item/clothing/under/rainbow,/obj/item/clothing/head/soft/rainbow,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aAV" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aAV" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/fore) "aAW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aAX" = (/obj/structure/closet/crate,/obj/item/coin/silver,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aAY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fore) @@ -1447,19 +1447,19 @@ "aBQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/crew_quarters/sleep) "aBR" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light/small,/turf/simulated/floor/wood,/area/crew_quarters/sleep) "aBS" = (/obj/structure/stool/bed/chair/wood/normal{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep) -"aBT" = (/obj/item/caution,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) +"aBT" = (/obj/item/caution,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) "aBU" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/starboard) "aBV" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge) "aBW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) -"aBX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) +"aBX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) "aBY" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge) "aBZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) "aCa" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating,/area/maintenance/starboard) "aCb" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 4; location = "Engineering"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/maintenance/starboard) "aCc" = (/obj/machinery/door/window/southright{dir = 4; name = "Engineering Deliveries"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"aCd" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/engine/engineering) +"aCd" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/engine/engineering) "aCe" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/public/glass{name = "Recreation Area"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/sleep) -"aCf" = (/obj/machinery/light_switch{pixel_x = 23},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/engine/engineering) +"aCf" = (/obj/machinery/light_switch{pixel_x = 23},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/obj/structure/sign/securearea{pixel_y = 32},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/engine/engineering) "aCg" = (/turf/simulated/wall/r_wall,/area/engine/engineering) "aCh" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/engine/engineering) "aCi" = (/obj/structure/grille,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) @@ -1495,9 +1495,9 @@ "aCM" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/engine/engineering) "aCN" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "aCO" = (/turf/simulated/wall/r_wall,/area/security/detectives_office) -"aCP" = (/obj/structure/grille,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/security/detectives_office) +"aCP" = (/obj/structure/grille,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/window/reinforced/tinted{dir = 5; max_integrity = 120; reinf = 0},/turf/simulated/floor/plating,/area/security/detectives_office) "aCQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Detective's Office"; req_access = null; req_access_txt = "4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel,/area/security/detectives_office) -"aCR" = (/obj/structure/grille,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/security/detectives_office) +"aCR" = (/obj/structure/grille,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/window/reinforced/tinted{dir = 5; max_integrity = 120; reinf = 0},/turf/simulated/floor/plating,/area/security/detectives_office) "aCS" = (/turf/simulated/wall,/area/security/detectives_office) "aCT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "whitered"},/area/security/brig) "aCU" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/alarm{pixel_y = 26},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) @@ -1508,7 +1508,7 @@ "aCZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/starboard) "aDa" = (/obj/item/wrench,/turf/simulated/floor/plating,/area/maintenance/starboard) "aDb" = (/obj/structure/table,/obj/item/stack/packageWrap,/obj/item/wrench,/obj/machinery/light{dir = 8},/obj/item/hand_labeler,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"aDc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) +"aDc" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) "aDd" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fore) "aDe" = (/obj/structure/closet,/obj/item/poster/random_contraband,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) "aDf" = (/obj/machinery/door/airlock/external{name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/engine/engineering) @@ -1524,8 +1524,8 @@ "aDp" = (/obj/item/stack/cable_coil,/turf/simulated/floor/plating/airless,/area/space) "aDq" = (/turf/simulated/shuttle/floor,/area/shuttle/mining) "aDr" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/mining) -"aDs" = (/obj/item/ore/iron,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) -"aDt" = (/obj/structure/closet/crate,/obj/machinery/light/small{dir = 4},/obj/item/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) +"aDs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aDt" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) "aDu" = (/obj/structure/closet/emcloset,/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 9; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aDv" = (/obj/structure/closet/crate,/obj/item/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aDw" = (/obj/machinery/power/apc{dir = 1; name = "Mining APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 38},/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) @@ -1576,7 +1576,7 @@ "aEp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "aEq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "aEr" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) -"aEs" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) +"aEs" = (/obj/item/ore/iron,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aEt" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge) "aEu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "aEv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -1585,10 +1585,10 @@ "aEy" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/gloves/color/yellow,/obj/item/clothing/gloves/color/yellow,/obj/item/clothing/gloves/color/yellow,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/tank/emergency_oxygen/engi,/obj/item/tank/emergency_oxygen/engi,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aEz" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera{c_tag = "Engineering - Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aEA" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"aEB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) +"aEB" = (/obj/structure/closet/crate,/obj/machinery/light/small{dir = 4},/obj/item/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aEC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aED" = (/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/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) -"aEE" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/engine/engineering) +"aED" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/starboard) +"aEE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering) "aEF" = (/obj/item/multitool,/turf/simulated/floor/plating/airless,/area/engine/engineering) "aEG" = (/obj/item/radio/off,/turf/simulated/floor/plating/airless,/area/engine/engineering) "aEH" = (/obj/structure/closet/crate,/obj/item/ore/glass,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) @@ -1640,7 +1640,7 @@ "aFB" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/brig) "aFC" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id_tag = "briglockdown"; name = "brig shutters"},/turf/simulated/floor/plating,/area/security/brig) "aFD" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) -"aFE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aFE" = (/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/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) "aFF" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "aFG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "aFH" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light/small{dir = 1},/obj/machinery/power/apc{dir = 1; name = "Dormitories APC"; pixel_x = 0; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep) @@ -1654,18 +1654,18 @@ "aFP" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "ceprivacy"; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/engine/chiefs_office) "aFQ" = (/obj/item/stack/sheet/plasteel{amount = 10; pixel_x = -2; pixel_y = 2},/obj/structure/table,/obj/item/stack/sheet/rglass{amount = 30; pixel_x = 2; pixel_y = -2},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) "aFR" = (/turf/simulated/wall,/area/engine/engineering) -"aFS" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/engine/engineering) -"aFT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) -"aFU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/engine/engineering) +"aFS" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating/airless,/area/engine/engineering) +"aFT" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/fore) +"aFU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/engine/engineering) "aFV" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/flasher{id = "Cell 4"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/brig) -"aFW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) +"aFW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) "aFX" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/brig) -"aFY" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) +"aFY" = (/obj/structure/reagent_dispensers/watertank,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/engine/engineering) "aFZ" = (/obj/machinery/camera/emp_proof{c_tag = "Fore Arm - Near"; dir = 4; network = list("Singulo")},/turf/space,/area/space) "aGa" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"}) "aGb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"aGc" = (/obj/item/ore/silver,/obj/item/ore/silver,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) -"aGd" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/camera{c_tag = "Mining Dock"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) +"aGc" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aGd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) "aGe" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/wall,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aGf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aGg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/quartermaster/miningdock{name = "\improper Mining Office"}) @@ -1712,17 +1712,17 @@ "aGV" = (/obj/item/clothing/glasses/meson,/obj/structure/closet/crate,/obj/item/poster/random_contraband,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) "aGW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/starboard) "aGX" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/radio/intercom{name = "Station Intercom (General)"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) -"aGY" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/engine/engineering) -"aGZ" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) -"aHa" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/engine/engineering) +"aGY" = (/obj/item/ore/silver,/obj/item/ore/silver,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock{name = "\improper Mining Office"}) +"aGZ" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/camera{c_tag = "Mining Dock"; dir = 8; network = list("SS13")},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock{name = "\improper Mining Office"}) +"aHa" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/engine/engineering) "aHb" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"}) "aHc" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/engine/engineering) "aHd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aHe" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/structure/urinal{pixel_y = 29},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aHf" = (/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/processing) -"aHg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) +"aHg" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) "aHh" = (/obj/item/radio/intercom{dir = 8; name = "Station Intercom (Captain)"; pixel_x = 28},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/processing) -"aHi" = (/obj/machinery/power/rad_collector{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) +"aHi" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Containment Blast Doors"; opacity = 0},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/engine/engineering) "aHj" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"}) "aHk" = (/turf/simulated/wall,/area/construction) "aHl" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/construction) @@ -1787,18 +1787,18 @@ "aIs" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters/sleep) "aIt" = (/obj/machinery/light/small,/turf/simulated/floor/carpet,/area/crew_quarters/sleep) "aIu" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) -"aIv" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) +"aIv" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/engine/engineering) "aIw" = (/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/engine/engineering) "aIx" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/engine/engineering) -"aIy" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) +"aIy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) "aIz" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering/glass{name = "Engineering Storage"; req_access_txt = "32"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) -"aIA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) +"aIA" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering) "aIB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) "aIC" = (/obj/structure/table,/obj/item/paper_bin{pixel_x = -4; pixel_y = 10},/obj/item/pen{pixel_x = -3; pixel_y = 5},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) -"aID" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) -"aIE" = (/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 = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) -"aIF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/engine/engineering) -"aIG" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/construction) +"aID" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aIE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aIF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aIG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/engine/engineering) "aIH" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge) "aII" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/brig) "aIJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -1853,14 +1853,14 @@ "aJG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "aJH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "aJI" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -38},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) -"aJJ" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/engine/engineering) -"aJK" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) -"aJL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) -"aJM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/engine/engineering) +"aJJ" = (/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 = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aJK" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/construction) +"aJL" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aJM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) "aJN" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/machinery/door/poddoor/preopen{id_tag = "briglockdown"; name = "brig shutters"},/turf/simulated/floor/plating,/area/security/brig) -"aJO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) +"aJO" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) "aJP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/engine/engineering) -"aJQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) +"aJQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/engine/engineering) "aJR" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aJS" = (/obj/structure/closet/radiation,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aJT" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/storage/belt/utility,/obj/item/wrench,/obj/item/weldingtool,/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) @@ -1915,7 +1915,7 @@ "aKQ" = (/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/detectives_office) "aKR" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/detectives_office) "aKS" = (/obj/effect/spawner/lootdrop/maintenance,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"aKT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aKT" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering) "aKU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "aKV" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/lawoffice) "aKW" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/effect/landmark{name = "blobstart"},/obj/machinery/door_control{id = "Toilet2"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) @@ -1940,7 +1940,7 @@ "aLp" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/stack/cable_coil,/obj/item/airlock_electronics,/obj/item/airlock_electronics,/obj/item/clothing/ears/earmuffs{pixel_x = -3; pixel_y = -2},/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) "aLq" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/circuitboard/solar_control,/obj/item/tracker_electronics,/obj/item/paper/solar,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) "aLr" = (/obj/machinery/power/port_gen/pacman,/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) -"aLs" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) +"aLs" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) "aLt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor/plasteel,/area/engine/engineering) "aLu" = (/obj/structure/table,/obj/machinery/light_switch{pixel_x = 23},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/storage/toolbox/mechanical{pixel_y = 5},/obj/item/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/flashlight{pixel_x = 1; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aLv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security/glass{id_tag = "Brig"; name = "Prisoner Processing"; req_access_txt = "63"},/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/processing) @@ -1960,14 +1960,14 @@ "aLJ" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/shuttle/supply) "aLK" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/qm) "aLL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Courtroom"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) -"aLM" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/quartermaster/storage) -"aLN" = (/obj/machinery/door_control{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = 0; pixel_y = 24; req_access_txt = "50"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/quartermaster/storage) -"aLO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/quartermaster/storage) -"aLP" = (/obj/machinery/firealarm{pixel_y = 27},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/quartermaster/storage) -"aLQ" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/quartermaster/storage) +"aLM" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/fore) +"aLN" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aLO" = (/obj/machinery/door_control{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = 0; pixel_y = 24; req_access_txt = "50"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"aLP" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"aLQ" = (/obj/machinery/firealarm{pixel_y = 27},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aLR" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/mining{name = "Cargo Bay"; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/construction/Storage{name = "Storage Wing"}) -"aLS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/construction/Storage{name = "Storage Wing"}) -"aLT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light/small{dir = 1},/obj/structure/sign/securearea{pixel_y = 30},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/construction/Storage{name = "Storage Wing"}) +"aLS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"aLT" = (/obj/machinery/light_switch{pixel_y = 28},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aLU" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/mining{name = "Cargo Bay"; req_access_txt = "0"; req_one_access_txt = "48;50"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/construction/Storage{name = "Storage Wing"}) "aLV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/construction/Storage{name = "Storage Wing"}) "aLW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) @@ -2004,10 +2004,10 @@ "aMB" = (/obj/structure/table/wood,/obj/machinery/newscaster{pixel_x = 29; pixel_y = 1},/obj/item/paper,/turf/simulated/floor/wood,/area/crew_quarters/sleep) "aMC" = (/obj/structure/closet,/obj/item/storage/box/donkpockets,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) "aMD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) -"aME" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) +"aME" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light/small{dir = 1},/obj/structure/sign/securearea{pixel_y = 30},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/construction/Storage{name = "Storage Wing"}) "aMF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/engine/engineering) "aMG" = (/obj/structure/table,/obj/machinery/door_control{id = "Singularity"; name = "Shutters Control"; pixel_x = 25; pixel_y = 0; req_access_txt = "11"},/obj/item/storage/toolbox/electrical{pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"aMH" = (/obj/machinery/door_control{id = "Singularity"; name = "Shutters Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "11"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/engine/engineering) +"aMH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/construction/Storage{name = "Storage Wing"}) "aMI" = (/obj/machinery/power/grounding_rod{anchored = 1},/turf/simulated/floor/plating/airless,/area/space) "aMJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/space) "aMK" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/space) @@ -2017,18 +2017,18 @@ "aMO" = (/turf/simulated/shuttle/floor,/area/shuttle/supply) "aMP" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/turret_protected/ai_upload) "aMQ" = (/obj/item/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = -28; pixel_y = 23},/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32},/obj/machinery/conveyor{dir = 2; id = "QMLoad2"; movedir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) -"aMR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/quartermaster/storage) +"aMR" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering) "aMS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aMT" = (/obj/structure/sign/double/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},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"aMU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/camera{c_tag = "Cargo Bay - Fore"; dir = 2; network = list("SS13")},/obj/structure/sign/double/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/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 8},/area/quartermaster/storage) -"aMV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/quartermaster/storage) +"aMU" = (/obj/machinery/door_control{id = "Singularity"; name = "Shutters Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "11"},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating,/area/engine/engineering) +"aMV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aMW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"aMX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/quartermaster/storage) -"aMY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/quartermaster/storage) -"aMZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/quartermaster/storage) +"aMX" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aMY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/camera{c_tag = "Cargo Bay - Fore"; dir = 2; network = list("SS13")},/obj/structure/sign/double/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},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"aMZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aNa" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/mining{name = "Cargo Bay"; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/construction/Storage{name = "Storage Wing"}) -"aNb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/construction/Storage{name = "Storage Wing"}) -"aNc" = (/obj/machinery/camera{c_tag = "Cargo Bay - Storage Wing Entrance"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/construction/Storage{name = "Storage Wing"}) +"aNb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"aNc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aNd" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/power/apc{dir = 2; name = "Storage Wing APC"; pixel_x = 0; pixel_y = -27},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "aNe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "aNf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) @@ -2075,31 +2075,31 @@ "aNU" = (/obj/machinery/shieldgen,/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Engineering - Secure Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor/plating,/area/engine/engineering) "aNV" = (/obj/machinery/shieldgen,/turf/simulated/floor/plating,/area/engine/engineering) "aNW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating,/area/maintenance/starboard) -"aNX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/engine/engineering) -"aNY" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/engine/engineering) +"aNX" = (/obj/machinery/camera{c_tag = "Cargo Bay - Storage Wing Entrance"; dir = 1; network = list("SS13")},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/construction/Storage{name = "Storage Wing"}) +"aNY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aNZ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig) -"aOa" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) +"aOa" = (/obj/machinery/power/rad_collector{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/engine/engineering) "aOb" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/engine/engineering) "aOc" = (/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor/plating,/area/engine/engineering) "aOd" = (/turf/simulated/floor/plating,/area/engine/engineering) "aOe" = (/obj/structure/particle_accelerator/particle_emitter/right{dir = 4},/turf/simulated/floor/plating,/area/engine/engineering) -"aOf" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) -"aOg" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/space) +"aOf" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/construction/Storage{name = "Storage Wing"}) +"aOg" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/engine/engineering) "aOh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/space) -"aOi" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHEAST)"; icon_state = "warnplate"; dir = 5},/area/space) +"aOi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/engine/engineering) "aOj" = (/obj/item/crowbar,/turf/space,/area/space) "aOk" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel,/area/construction) "aOl" = (/obj/machinery/door/airlock/engineering{name = "Arrivals Expansion Area"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/construction) -"aOm" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/engine/engineering) +"aOm" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating/airless,/area/space) "aOn" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/supply) "aOo" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/crew_quarters/courtroom) "aOp" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/conveyor{dir = 2; id = "QMLoad2"; movedir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) -"aOq" = (/obj/machinery/conveyor_switch/oneway{convdir = 1; id = "QMLoad2"; pixel_x = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/quartermaster/storage) +"aOq" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating/airless,/area/space) "aOr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aOs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aOt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aOu" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"aOv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/quartermaster/storage) +"aOv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/engine/engineering) "aOw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/storage) "aOx" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 8; location = "QM #1"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window/northleft,/obj/machinery/light{dir = 4},/mob/living/simple_animal/bot/mulebot{home_destination = "QM #1"; suffix = "#1"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/quartermaster/storage) "aOy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;63;48;50"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -2126,28 +2126,28 @@ "aOT" = (/obj/effect/landmark/start{name = "Internal Affairs Agent"},/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/item/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/wood,/area/lawoffice) "aOU" = (/obj/structure/table/wood,/obj/item/folder/blue,/obj/item/folder/blue,/obj/item/folder/blue,/obj/item/folder/blue,/obj/item/stamp/law,/turf/simulated/floor/wood,/area/lawoffice) "aOV" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/wood,/area/lawoffice) -"aOW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/engine/engineering) -"aOX" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) +"aOW" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"aOX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/item/clothing/glasses/meson,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Containment Blast Doors"; opacity = 0},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/engine/engineering) "aOY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/security/brig) "aOZ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aPa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/brig) "aPb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/security/brig) "aPc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig) -"aPd" = (/obj/item/reagent_containers/spray/plantbgone,/obj/item/reagent_containers/glass/bottle/nutrient/ez,/obj/item/reagent_containers/glass/bottle/nutrient/rh{pixel_x = 2; pixel_y = 1},/obj/structure/table,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aPe" = (/obj/machinery/biogenerator,/obj/machinery/firealarm{pixel_y = 27},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aPf" = (/obj/structure/table,/obj/item/hatchet,/obj/item/crowbar,/obj/machinery/light{dir = 1},/obj/item/plant_analyzer,/obj/item/reagent_containers/glass/bucket,/obj/item/cultivator,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aPg" = (/obj/machinery/seed_extractor,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aPh" = (/obj/item/seeds/apple,/obj/item/seeds/banana,/obj/item/seeds/cocoapod,/obj/item/seeds/grape,/obj/item/seeds/orange,/obj/item/seeds/sugarcane,/obj/item/seeds/wheat,/obj/item/seeds/watermelon,/obj/structure/table,/obj/item/seeds/tower,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) +"aPd" = (/obj/machinery/the_singularitygen{anchored = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating/airless,/area/space) +"aPe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aPf" = (/obj/machinery/conveyor_switch/oneway{convdir = 1; id = "QMLoad2"; pixel_x = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"aPg" = (/obj/item/reagent_containers/spray/plantbgone,/obj/item/reagent_containers/glass/bottle/nutrient/ez,/obj/item/reagent_containers/glass/bottle/nutrient/rh{pixel_x = 2; pixel_y = 1},/obj/structure/table,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) +"aPh" = (/obj/structure/table,/obj/item/hatchet,/obj/item/crowbar,/obj/machinery/light{dir = 1},/obj/item/plant_analyzer,/obj/item/reagent_containers/glass/bucket,/obj/item/cultivator,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) "aPi" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/grass,/area/hallway/secondary/construction{name = "\improper Garden"}) "aPj" = (/mob/living/simple_animal/chicken{name = "Featherbottom"; real_name = "Featherbottom"},/turf/simulated/floor/grass,/area/hallway/secondary/construction{name = "\improper Garden"}) "aPk" = (/obj/effect/decal/cleanable/cobweb,/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/wirecutters,/obj/item/weldingtool,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard) "aPl" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/plating,/area/engine/engineering) "aPm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door_timer{dir = 1; id = "Cell 4"; name = "Cell 4"; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Brig - Hallway - Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/brig) -"aPn" = (/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/engine/engineering) +"aPn" = (/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/engine/engineering) "aPo" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/engine/engineering) "aPp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/engine/engineering) -"aPq" = (/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the singularity engine safely."; dir = 8; name = "Singularity Monitor"; network = list("Singulo"); pixel_x = 32; pixel_y = 0},/obj/machinery/camera{c_tag = "Engineering - Central"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) -"aPr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/light{dir = 8},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) +"aPq" = (/obj/machinery/biogenerator,/obj/machinery/firealarm{pixel_y = 27},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) +"aPr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Containment Blast Doors"; opacity = 0},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/engine/engineering) "aPs" = (/obj/structure/particle_accelerator/end_cap{dir = 4},/turf/simulated/floor/plating,/area/engine/engineering) "aPt" = (/obj/structure/particle_accelerator/fuel_chamber{dir = 4},/turf/simulated/floor/plating,/area/engine/engineering) "aPu" = (/obj/structure/particle_accelerator/power_box{dir = 4},/turf/simulated/floor/plating,/area/engine/engineering) @@ -2155,7 +2155,7 @@ "aPw" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/space) "aPx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating/airless,/area/space) "aPy" = (/obj/machinery/power/tesla_coil{anchored = 1},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/space) -"aPz" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/space) +"aPz" = (/obj/item/seeds/apple,/obj/item/seeds/banana,/obj/item/seeds/cocoapod,/obj/item/seeds/grape,/obj/item/seeds/orange,/obj/item/seeds/sugarcane,/obj/item/seeds/wheat,/obj/item/seeds/watermelon,/obj/structure/table,/obj/item/seeds/tower,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) "aPA" = (/obj/machinery/light_construct{dir = 8},/turf/simulated/floor/plating,/area/construction) "aPB" = (/obj/item/crowbar/red,/turf/simulated/floor/plating,/area/construction) "aPC" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "hop"; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/heads) @@ -2164,7 +2164,7 @@ "aPF" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "hop"; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/heads) "aPG" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "hop"; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/heads) "aPH" = (/obj/machinery/conveyor{dir = 10; id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage) -"aPI" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/quartermaster/storage) +"aPI" = (/obj/machinery/seed_extractor,/obj/machinery/alarm{pixel_y = 23},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) "aPJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aPK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/quartermaster/storage) "aPL" = (/obj/structure/closet/crate,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/item/ore/glass,/obj/item/ore/iron,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) @@ -2174,7 +2174,7 @@ "aPP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/storage) "aPQ" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 8; location = "QM #2"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/quartermaster/storage) "aPR" = (/obj/machinery/door/window/northleft{dir = 8; name = "MuleBot Supply Access"; req_access_txt = "50"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aPS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)"; icon_state = "warnplate"; dir = 9},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aPS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/engine/engineering) "aPT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aPU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/command/glass{name = "Bridge Access"; req_access_txt = "19"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "aPV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -2225,10 +2225,10 @@ "aQO" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 5},/area/hallway/secondary/construction{name = "\improper Garden"}) "aQP" = (/obj/machinery/door/firedoor/border_only{density = 1; dir = 8; icon_state = "door_closed"; name = "Animal Pen A"; opacity = 1},/turf/simulated/floor/grass,/area/hallway/secondary/construction{name = "\improper Garden"}) "aQQ" = (/turf/simulated/floor/grass,/area/hallway/secondary/construction{name = "\improper Garden"}) -"aQR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/command/glass{name = "Bridge Access"; req_access_txt = "19"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) +"aQR" = (/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the singularity engine safely."; dir = 8; name = "Singularity Monitor"; network = list("Singulo"); pixel_x = 32; pixel_y = 0},/obj/machinery/camera{c_tag = "Engineering - Central"; dir = 8; network = list("SS13")},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) "aQS" = (/obj/machinery/power/emitter,/turf/simulated/floor/plating,/area/engine/engineering) "aQT" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/engine/engineering) -"aQU" = (/turf/simulated/floor/plasteel{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/engine/engineering) +"aQU" = (/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/engine/engineering) "aQV" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "aQW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/locker) "aQX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) @@ -2239,9 +2239,9 @@ "aRc" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/plating,/area/engine/engineering) "aRd" = (/obj/structure/particle_accelerator/particle_emitter/left{dir = 4},/turf/simulated/floor/plating,/area/engine/engineering) "aRe" = (/obj/item/weldingtool,/turf/space,/area/space) -"aRf" = (/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHWEST)"; icon_state = "warnplate"; dir = 10},/area/space) +"aRf" = (/obj/item/wirecutters,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/engine/engineering) "aRg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/space) -"aRh" = (/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHEAST)"; icon_state = "warnplate"; dir = 6},/area/space) +"aRh" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating/airless,/area/space) "aRi" = (/obj/machinery/pipedispenser,/turf/simulated/floor/plating,/area/construction) "aRj" = (/obj/machinery/door/airlock/command/glass{name = "Bridge Access"; req_access_txt = "19"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "aRk" = (/obj/machinery/door/airlock/shuttle{name = "Supply Shuttle Airlock"; req_access_txt = "31"},/turf/simulated/shuttle/plating,/area/shuttle/supply) @@ -2285,7 +2285,7 @@ "aRW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "aRX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "aRY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=14.5-Recreation"; location = "14.3-Lockers-Dorms"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/locker) -"aRZ" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/hallway/secondary/construction{name = "\improper Garden"}) +"aRZ" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; max_integrity = 120; reinf = 0},/turf/simulated/floor/plating,/area/hallway/secondary/construction{name = "\improper Garden"}) "aSa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 8},/area/hallway/secondary/construction{name = "\improper Garden"}) "aSb" = (/obj/machinery/hydroponics/soil,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aSc" = (/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/hallway/secondary/construction{name = "\improper Garden"}) @@ -2296,12 +2296,12 @@ "aSh" = (/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/airlock_electronics,/obj/item/airlock_electronics,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/stack/sheet/mineral/plasma{amount = 30},/obj/item/gps,/turf/simulated/floor/plating,/area/engine/engineering) "aSi" = (/obj/machinery/the_singularitygen{anchored = 0},/turf/simulated/floor/plating,/area/engine/engineering) "aSj" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"aSk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) +"aSk" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating/airless,/area/space) "aSl" = (/obj/structure/table,/obj/item/book/manual/engineering_guide{pixel_x = 3; pixel_y = 4},/obj/item/book/manual/engineering_particle_accelerator{pixel_x = -2; pixel_y = 3},/obj/machinery/door_control{id = "Singularity"; name = "Shutters Control"; pixel_x = 25; pixel_y = 0; req_access_txt = "11"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"aSm" = (/obj/machinery/door_control{id = "Singularity"; name = "Shutters Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "11"},/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHWEST)"; icon_state = "warnplate"; dir = 10},/area/engine/engineering) -"aSn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/engine/engineering) -"aSo" = (/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/engine/engineering) -"aSp" = (/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHEAST)"; icon_state = "warnplate"; dir = 6},/area/engine/engineering) +"aSm" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"aSn" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aSo" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/engine/engineering) +"aSp" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating/airless,/area/space) "aSq" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/pod_1) "aSr" = (/obj/structure/window/full/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/pod_1) "aSs" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/shuttle/pod_1) @@ -2316,7 +2316,7 @@ "aSB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) "aSC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) "aSD" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) -"aSE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/quartermaster/storage) +"aSE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/engine/engineering) "aSF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/storage) "aSG" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 8; location = "QM #4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window/southleft,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/quartermaster/storage) "aSH" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/preopen{id_tag = "lawyer_blast"; name = "privacy shutters"},/turf/simulated/floor/plating,/area/lawoffice) @@ -2368,30 +2368,30 @@ "aTB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 8},/area/hallway/secondary/construction{name = "\improper Garden"}) "aTC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aTD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) -"aTE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/disposalpipe/sortjunction{sortType = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/engine/engineering) +"aTE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aTF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aTG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) +"aTG" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating/airless,/area/space) "aTH" = (/obj/machinery/power/apc{dir = 4; name = "Garden APC"; pixel_x = 27; pixel_y = 2},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/disposal,/obj/machinery/camera{c_tag = "Garden"; dir = 8; network = list("SS13")},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aTI" = (/obj/machinery/power/apc{cell_type = 25000; dir = 8; name = "Engine Room APC"; pixel_x = -26; pixel_y = 0; shock_proof = 1},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) +"aTI" = (/obj/machinery/the_singularitygen/tesla{anchored = 1},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating/airless,/area/space) "aTJ" = (/obj/item/storage/toolbox/emergency,/obj/item/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/extinguisher_cabinet{pixel_x = -31; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/incinerator) -"aTK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) +"aTK" = (/obj/machinery/door_control{id = "Singularity"; name = "Shutters Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "11"},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating,/area/engine/engineering) "aTL" = (/obj/structure/table,/obj/item/book/manual/engineering_hacking{pixel_x = 4; pixel_y = 5},/obj/item/book/manual/engineering_construction{pixel_x = 0; pixel_y = 3},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/book/manual/engineering_singularity_safety{pixel_x = -4},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aTM" = (/obj/machinery/power/tesla_coil{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area/space) "aTN" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/pod_1) "aTO" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/engine/engineering) "aTP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/construction) "aTQ" = (/obj/machinery/light_construct{dir = 4},/turf/simulated/floor/plasteel,/area/construction) -"aTR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) +"aTR" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/engine/engineering) "aTS" = (/obj/machinery/door/airlock/shuttle{name = "Supply Shuttle Airlock"; req_access_txt = "31"},/obj/docking_port/mobile/supply,/obj/docking_port/stationary{dir = 8; dwidth = 5; height = 7; id = "supply_home"; name = "supply bay"; width = 12},/turf/simulated/shuttle/plating,/area/shuttle/supply) "aTT" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/storage) -"aTU" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/quartermaster/storage) -"aTV" = (/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/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/quartermaster/storage) +"aTU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/engine/engineering) +"aTV" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating,/area/engine/engineering) "aTW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/mining/glass{name = "Quartermaster"; req_access_txt = "41"},/turf/simulated/floor/plasteel,/area/quartermaster/qm) "aTX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/quartermaster/qm) "aTY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/quartermaster/qm) "aTZ" = (/obj/effect/landmark/start{name = "Quartermaster"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/qm) "aUa" = (/obj/structure/table,/obj/item/folder/yellow,/obj/item/pen{pixel_x = 4; pixel_y = 4},/obj/item/pen/red,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel,/area/quartermaster/qm) -"aUb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aUb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) "aUc" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 4; location = "Tool Storage"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/storage/primary) "aUd" = (/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/storage/primary) "aUe" = (/obj/structure/table,/obj/item/weldingtool,/obj/item/crowbar,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "browncorner"},/area/storage/primary) @@ -2419,9 +2419,9 @@ "aUA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/locker) "aUB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "aUC" = (/obj/structure/rack,/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/storage/toolbox/mechanical{pixel_x = 4; pixel_y = -4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) -"aUD" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/construction{name = "\improper Garden"}) +"aUD" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; max_integrity = 120; reinf = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/construction{name = "\improper Garden"}) "aUE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 8},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aUF" = (/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/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) +"aUF" = (/obj/machinery/power/apc{cell_type = 25000; dir = 8; name = "Engine Room APC"; pixel_x = -26; pixel_y = 0; shock_proof = 1},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering) "aUG" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/grass,/area/hallway/secondary/construction{name = "\improper Garden"}) "aUH" = (/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/grass,/area/hallway/secondary/construction{name = "\improper Garden"}) "aUI" = (/obj/structure/rack,/obj/item/clothing/gloves/color/fyellow,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -2433,7 +2433,7 @@ "aUO" = (/obj/machinery/vending/engivend,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aUP" = (/obj/machinery/vending/tool,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aUQ" = (/obj/structure/closet/secure_closet/engineering_welding,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"aUR" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) +"aUR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) "aUS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/brig) "aUT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/crowbar,/obj/item/stack/cable_coil,/obj/item/screwdriver,/obj/item/weldingtool,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aUU" = (/obj/structure/window/reinforced,/turf/space,/area/space) @@ -2442,17 +2442,17 @@ "aUX" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "kitchenwindow"; name = "kitchen shutters"; opacity = 0},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/kitchen) "aUY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/construction) "aUZ" = (/obj/structure/table,/obj/item/stack/cable_coil{amount = 5},/obj/item/flashlight,/turf/simulated/floor/plasteel,/area/construction) -"aVa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aVa" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aVb" = (/obj/machinery/door/poddoor{id_tag = "QMLoaddoor"; name = "supply dock loading door"},/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/shuttle/plating,/area/shuttle/supply) "aVc" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/hallway/secondary/construction{name = "\improper Garden"}) -"aVd" = (/obj/structure/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/hardsuit/atmos,/obj/item/clothing/head/helmet/space/hardsuit/atmos,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/atmos) +"aVd" = (/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/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aVe" = (/obj/machinery/conveyor{dir = 9; id = "QMLoad"; movedir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "aVf" = (/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/quartermaster/storage) "aVg" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) "aVh" = (/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) "aVi" = (/obj/structure/disposalpipe/segment,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) "aVj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"aVk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Cargo Bay - Starboard"; dir = 8; network = list("SS13")},/obj/item/paper_bin{pixel_x = -1; pixel_y = 6},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/quartermaster/storage) +"aVk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aVl" = (/turf/simulated/wall,/area/quartermaster/qm) "aVm" = (/obj/machinery/computer/security/mining,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/quartermaster/qm) "aVn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/quartermaster/qm) @@ -2463,14 +2463,14 @@ "aVs" = (/obj/machinery/camera{c_tag = "NT Representative's Office"; dir = 1; network = list("SS13")},/obj/structure/table/wood,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/newscaster/security_unit{pixel_y = -32},/obj/machinery/photocopier/faxmachine/longrange,/turf/simulated/floor/wood,/area/ntrep) "aVt" = (/obj/structure/table,/obj/item/folder/yellow,/obj/item/folder/yellow,/obj/item/storage/firstaid/regular,/turf/simulated/floor/plasteel{dir = 1; icon_state = "browncorner"},/area/storage/primary) "aVu" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/storage/primary) -"aVv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) +"aVv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Cargo Bay - Starboard"; dir = 8; network = list("SS13")},/obj/item/paper_bin{pixel_x = -1; pixel_y = 6},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aVw" = (/obj/structure/table,/obj/item/aiModule/reset,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aVx" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Upload APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/camera/motion{c_tag = "AI Upload Chamber - Port"; dir = 1; network = list("SS13","RD","AIUpload")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "aVy" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aVz" = (/obj/item/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_y = -25},/obj/machinery/camera/motion{c_tag = "AI Upload Chamber - Starboard"; dir = 1; network = list("SS13","RD","AIUpload")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "aVA" = (/obj/structure/table,/obj/machinery/light{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/obj/item/aiModule/protectStation,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aVB" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) -"aVC" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/crew_quarters/courtroom) +"aVC" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/window/reinforced/tinted{dir = 5; max_integrity = 120; reinf = 0},/turf/simulated/floor/plating,/area/crew_quarters/courtroom) "aVD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) "aVE" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) "aVF" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) @@ -2495,26 +2495,26 @@ "aVY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 10; icon_state = "neutral"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aVZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "neutral"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aWa" = (/turf/simulated/floor/plasteel{icon_state = "neutral"},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aWb" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) +"aWb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) "aWc" = (/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 6},/area/hallway/secondary/construction{name = "\improper Garden"}) "aWd" = (/obj/machinery/door/firedoor/border_only{density = 1; dir = 8; icon_state = "door_closed"; name = "Animal Pen B"; opacity = 1},/turf/simulated/floor/grass,/area/hallway/secondary/construction{name = "\improper Garden"}) "aWe" = (/mob/living/simple_animal/cow{name = "Betsy"; real_name = "Betsy"},/turf/simulated/floor/grass,/area/hallway/secondary/construction{name = "\improper Garden"}) "aWf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/cigbutt,/turf/simulated/floor/plating,/area/maintenance/starboard) -"aWg" = (/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/light{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = -31},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/engine/engineering) -"aWh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) -"aWi" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/engine/engineering) +"aWg" = (/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/light{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = -31},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aWh" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aWi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) "aWj" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/checkpoint/supply{name = "Security Post - Cargo"}) -"aWk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/engine/engineering) -"aWl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) -"aWm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/engine/engineering) -"aWn" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Engineering - Aft"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) +"aWk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aWl" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aWm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aWn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) "aWo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/security/brig) "aWp" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aWq" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aWr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) -"aWs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/engine/engineering) -"aWt" = (/obj/machinery/power/rad_collector{anchored = 1},/obj/item/tank/plasma,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) -"aWu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/engine/engineering) +"aWr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aWs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aWt" = (/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"; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/engine/engineering) +"aWu" = (/obj/machinery/camera/emp_proof{c_tag = "Engineering - Particle Accelerator"; dir = 2; network = list("Singulo","SS13")},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/engine/engineering) "aWv" = (/obj/effect/landmark{name = "JoinLateCryo"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aWw" = (/turf/space,/turf/simulated/floor/plating/airless/catwalk,/area/space) "aWx" = (/obj/machinery/computer/cryopod{pixel_y = -25},/obj/effect/landmark{name = "JoinLateCryo"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -2533,7 +2533,7 @@ "aWK" = (/obj/structure/rack{dir = 1},/obj/item/clothing/suit/storage/hazardvest,/turf/simulated/floor/plasteel,/area/construction) "aWL" = (/obj/machinery/conveyor{dir = 2; id = "QMLoad"; movedir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "aWM" = (/obj/structure/disposalpipe/segment,/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"aWN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/structure/table,/obj/item/folder/yellow,/obj/item/folder/yellow,/obj/item/paper,/obj/item/paper,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/quartermaster/storage) +"aWN" = (/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/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) "aWO" = (/obj/machinery/computer/supplycomp,/turf/simulated/floor/plasteel{dir = 10; icon_state = "brown"},/area/quartermaster/qm) "aWP" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/item/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/quartermaster/qm) "aWQ" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/quartermaster/qm) @@ -2559,17 +2559,17 @@ "aXk" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "aXl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/locker) "aXm" = (/obj/structure/rack,/obj/item/storage/briefcase,/obj/item/storage/briefcase{pixel_x = 4; pixel_y = -2},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) -"aXn" = (/obj/structure/table,/obj/item/hatchet,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/item/paper/hydroponics,/obj/item/coin/silver,/obj/item/cultivator,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aXo" = (/obj/machinery/vending/crittercare,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) -"aXp" = (/obj/structure/table,/obj/item/hatchet,/obj/item/crowbar,/obj/item/reagent_containers/glass/bucket,/obj/item/plant_analyzer,/obj/item/cultivator,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) +"aXn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/structure/table,/obj/item/folder/yellow,/obj/item/folder/yellow,/obj/item/paper,/obj/item/paper,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"aXo" = (/obj/structure/table,/obj/item/hatchet,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/item/paper/hydroponics,/obj/item/coin/silver,/obj/item/cultivator,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) +"aXp" = (/obj/machinery/vending/crittercare,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) "aXq" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/security/brig) -"aXr" = (/obj/structure/table,/obj/machinery/light,/obj/item/plant_analyzer,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) +"aXr" = (/obj/structure/table,/obj/item/hatchet,/obj/item/crowbar,/obj/item/reagent_containers/glass/bucket,/obj/item/plant_analyzer,/obj/item/cultivator,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) "aXs" = (/obj/item/book/manual/engineering_hacking{pixel_x = 4; pixel_y = 5},/obj/item/book/manual/engineering_construction{pixel_x = 0; pixel_y = 3},/obj/structure/closet/crate,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard) -"aXt" = (/obj/machinery/power/terminal,/obj/structure/cable,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/engine/engineering) -"aXu" = (/obj/machinery/power/terminal,/obj/structure/cable,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) -"aXv" = (/obj/machinery/power/terminal,/obj/structure/cable,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/engine/engineering) +"aXt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/disposalpipe/sortjunction{sortType = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aXu" = (/obj/structure/table,/obj/machinery/light,/obj/item/plant_analyzer,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) +"aXv" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) "aXw" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/engineering/glass{name = "Power Monitoring"; req_access_txt = "32"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) -"aXx" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) +"aXx" = (/obj/machinery/power/terminal,/obj/structure/cable,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) "aXy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) "aXz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/engine/engineering) "aXA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/engine/engineering) @@ -2577,8 +2577,8 @@ "aXC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "aXD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/security/brig) "aXE" = (/obj/machinery/camera/emp_proof{c_tag = "Aft Arm - Far"; dir = 8; network = list("Singulo")},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"aXF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) -"aXG" = (/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"; tag = ""},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/engine/engineering) +"aXF" = (/obj/machinery/power/terminal,/obj/structure/cable,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aXG" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating,/area/engine/engineering) "aXH" = (/obj/structure/window/reinforced{dir = 4},/turf/space,/area/space) "aXI" = (/obj/structure/window/reinforced{dir = 1; layer = 2.9},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "aXJ" = (/obj/structure/window/reinforced{dir = 1; layer = 2.9},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) @@ -2588,8 +2588,8 @@ "aXN" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/space) "aXO" = (/obj/structure/window/reinforced{dir = 8},/turf/space,/area/space) "aXP" = (/obj/item/crowbar,/turf/simulated/floor/plating,/area/maintenance/starboard) -"aXQ" = (/obj/machinery/light/small,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) -"aXR" = (/turf/simulated/floor/plating{icon_state = "warnplate"},/area/hallway/secondary/entry{name = "Arrivals"}) +"aXQ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aXR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) "aXS" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aXT" = (/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plasteel,/area/construction) "aXU" = (/obj/machinery/light_construct,/turf/simulated/floor/plasteel,/area/construction) @@ -2598,21 +2598,21 @@ "aXX" = (/obj/machinery/power/apc{dir = 2; name = "Construction Area APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light_construct,/turf/simulated/floor/plating,/area/construction) "aXY" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/construction) "aXZ" = (/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/turf/simulated/floor/plasteel,/area/construction) -"aYa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aYa" = (/obj/machinery/light/small,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aYb" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aYc" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area/shuttle/supply) "aYd" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall/interior{tag = "icon-swall_f10"; icon_state = "swall_f10"},/area/shuttle/supply) "aYe" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall/interior{tag = "icon-swall_f6"; icon_state = "swall_f6"},/area/shuttle/supply) "aYf" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/supply) -"aYg" = (/obj/machinery/conveyor_switch/oneway{convdir = 1; id = "QMLoad"; pixel_x = 6},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/quartermaster/storage) +"aYg" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aYh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) "aYi" = (/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) "aYj" = (/obj/structure/closet/crate,/obj/structure/disposalpipe/segment,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) "aYk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aYl" = (/obj/structure/disposalpipe/segment,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"aYm" = (/obj/machinery/light{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/status_display{density = 0; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/quartermaster/storage) +"aYm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aYn" = (/turf/simulated/wall,/area/security/checkpoint/supply{name = "Security Post - Cargo"}) -"aYo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aYo" = (/obj/machinery/conveyor_switch/oneway{convdir = 1; id = "QMLoad"; pixel_x = 6},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aYp" = (/obj/machinery/door/airlock/maintenance{name = "Tool Storage Maintenance"; req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aYq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/storage/primary) "aYr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/storage/primary) @@ -2624,7 +2624,7 @@ "aYx" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central) "aYy" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload"; req_access_txt = "16"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aYz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/hallway/primary/fore) -"aYA" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/crew_quarters/courtroom) +"aYA" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; max_integrity = 120; reinf = 0},/turf/simulated/floor/plating,/area/crew_quarters/courtroom) "aYB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) "aYC" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) "aYD" = (/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) @@ -2646,23 +2646,23 @@ "aYT" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "aYU" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes/engineering,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/engine/chiefs_office) "aYV" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = -24},/obj/machinery/power/smes/engineering,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/engine/chiefs_office) -"aYW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/engine/engineering) -"aYX" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) -"aYY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) -"aYZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) +"aYW" = (/obj/machinery/light{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/status_display{density = 0; pixel_x = 32; pixel_y = 0},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"aYX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aYY" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aYZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/engine/engineering) "aZa" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig) "aZb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/security/brig) "aZc" = (/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aZd" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aZe" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -29},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots/advance,/obj/item/clothing/suit/space/hardsuit/elite,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/elite,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) -"aZf" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) -"aZg" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) +"aZf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) +"aZg" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/engine/engineering) "aZh" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/space,/area/space) "aZi" = (/obj/structure/sign/pods,/turf/simulated/wall,/area/hallway/secondary/entry{name = "Arrivals"}) "aZj" = (/obj/machinery/door/airlock/external{name = "Escape Pod One"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aZk" = (/obj/machinery/door/airlock/engineering{name = "Arrivals Expansion Area"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) -"aZl" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) -"aZm" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) +"aZl" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; max_integrity = 120; reinf = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) +"aZm" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; max_integrity = 120; reinf = 0},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aZn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Arrivals Expansion Area"; req_access_txt = "32"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "aZo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/engine/break_room) "aZp" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/supply) @@ -2672,7 +2672,7 @@ "aZt" = (/turf/simulated/wall,/area/quartermaster/storage) "aZu" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera{c_tag = "Cargo Bay - Port"; dir = 4; network = list("SS13")},/obj/machinery/conveyor{dir = 2; id = "QMLoad"; movedir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "aZv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"aZw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/quartermaster/storage) +"aZw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) "aZx" = (/obj/structure/closet/secure_closet/security/cargo,/obj/machinery/light_switch{pixel_x = -25; pixel_y = 0},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "aZy" = (/obj/machinery/power/apc{dir = 1; name = "Security Post - Cargo APC"; pixel_x = 1; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "aZz" = (/obj/item/screwdriver{pixel_y = 10},/obj/item/radio/off,/obj/machinery/light{dir = 1},/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) @@ -2723,23 +2723,23 @@ "bas" = (/obj/structure/table,/obj/item/folder/yellow,/obj/item/folder/yellow,/obj/item/storage/firstaid/fire,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bat" = (/obj/machinery/light_switch,/turf/simulated/wall,/area/engine/engineering) "bau" = (/obj/item/clothing/head/fedora,/obj/structure/table/wood/poker,/turf/simulated/floor/wood,/area/crew_quarters/bar) -"bav" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) -"baw" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/engine/engineering) +"bav" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) +"baw" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) "bax" = (/obj/item/wrench,/turf/simulated/floor/plating/airless,/area/engine/engineering) "bay" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/bridge/meeting_room{name = "\improper Command Hallway"}) "baz" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) -"baA" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-13"; layer = 4.1; tag = "icon-plant-13"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"baB" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"baC" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"baD" = (/obj/structure/stool/bed/chair,/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"baE" = (/obj/structure/stool/bed/chair,/obj/machinery/camera{c_tag = "Arrivals - Fore Arm - Far"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"baF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"baG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"baH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"baI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"baJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"baK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"baL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/double/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/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) +"baA" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Engineering - Aft"; dir = 1; network = list("SS13")},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) +"baB" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) +"baC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"baD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) +"baE" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/engineering,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/engineering,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering) +"baF" = (/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/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) +"baG" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating/airless,/area/engine/engineering) +"baH" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-13"; layer = 4.1; tag = "icon-plant-13"},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"baI" = (/obj/structure/stool/bed/chair,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"baJ" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"baK" = (/obj/structure/stool/bed/chair,/obj/machinery/camera{c_tag = "Arrivals - Fore Arm - Far"; dir = 2; network = list("SS13")},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"baL" = (/obj/structure/stool/bed/chair,/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "baM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/double/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/simulated/floor/plasteel{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) "baN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "baO" = (/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/plasteel{icon_state = "arrival"; dir = 5},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -2751,13 +2751,13 @@ "baU" = (/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) "baV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "baW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"baX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/quartermaster/storage) +"baX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "baY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security/glass{name = "Security Post - Cargo"; req_access_txt = "63"},/turf/simulated/floor/plasteel,/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "baZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bba" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bbb" = (/obj/structure/stool/bed/chair/office/dark,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel,/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bbc" = (/obj/item/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/computer/security/mining,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) -"bbd" = (/obj/machinery/light{dir = 1},/obj/machinery/light_switch{pixel_y = 28},/obj/structure/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/hardsuit/atmos,/obj/item/clothing/head/helmet/space/hardsuit/atmos,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/atmos) +"bbd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bbe" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/storage/primary) "bbf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering/glass{name = "Engineering Foyer"; req_access_txt = "0"; req_one_access_txt = "32;19;70"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/engine/break_room) "bbg" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) @@ -2785,7 +2785,7 @@ "bbC" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bbD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bbE" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bbF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) +"bbF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bbG" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bbH" = (/turf/simulated/wall,/area/storage/tech) "bbI" = (/obj/structure/bookcase/manuals/engineering,/obj/machinery/keycard_auth{pixel_x = -25; pixel_y = 25},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/engine/chiefs_office) @@ -2795,10 +2795,10 @@ "bbM" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/command{name = "Chief Engineer's Office"; req_access_txt = "56"; req_one_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/chiefs_office) "bbN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/engine/engineering) "bbO" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Engine Room"; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) -"bbP" = (/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/obj/machinery/pipedispenser/disposal,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/atmos) +"bbP" = (/obj/machinery/power/terminal,/obj/structure/cable,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/engine/engineering) "bbQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/item/storage/pill_bottle/dice,/obj/structure/table/wood/poker,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bbR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"bbS" = (/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/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) +"bbS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light{dir = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bbT" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "bbU" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/emitter{anchored = 1; dir = 1; state = 2},/turf/simulated/floor/plating/airless,/area/engine/engineering) "bbV" = (/obj/machinery/light,/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) @@ -2809,28 +2809,28 @@ "bca" = (/obj/structure/window/reinforced{dir = 1; layer = 2.9},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bcb" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bcc" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) -"bcd" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bce" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bcf" = (/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/machinery/light,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bcg" = (/turf/simulated/floor/plasteel{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) +"bcd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bce" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/double/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},/obj/effect/decal/warning_stripes/northwestcorner,/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bcf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bcg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bch" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bci" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) -"bcj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/hallway/secondary/entry{name = "Arrivals"}) -"bck" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bcl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) +"bcj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/starboard) +"bck" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/engineering,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/engineering,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/engine/engineering) +"bcl" = (/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/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/engine/engineering) "bcm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bcn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bco" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Arrivals - Fore Arm"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bcp" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/quartermaster/storage) +"bcp" = (/obj/machinery/light/small,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) "bcq" = (/turf/simulated/floor/plasteel{icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/storage) -"bcr" = (/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/quartermaster/storage) +"bcr" = (/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/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/engine/engineering) "bcs" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bct" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) "bcu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/quartermaster/storage) "bcv" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bcw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bcx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"bcy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/quartermaster/storage) +"bcy" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bcz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bcA" = (/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bcB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/security/brig) @@ -2838,7 +2838,7 @@ "bcD" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bcE" = (/obj/machinery/power/apc{dir = 8; name = "Aft Port Solar APC"; pixel_x = -26; pixel_y = 3},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "bcF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/trash/popcorn,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bcG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bcG" = (/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/machinery/light,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bcH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;63;48;50"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bcI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bcJ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -2849,11 +2849,11 @@ "bcO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bcP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bcQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) -"bcR" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - AI Upload"; dir = 2; network = list("SS13")},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH-POWER TURRETS AHEAD'."; name = "\improper HIGH-POWER TURRETS AHEAD"; pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) -"bcS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/primary/central) -"bcT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/primary/central) -"bcU" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/primary/central) -"bcV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light/small{dir = 1},/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/primary/central) +"bcR" = (/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bcS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bcT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bcU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bcV" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bcW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "bcX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "bcY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/hallway/primary/central) @@ -2870,11 +2870,11 @@ "bdj" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bdk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bdl" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard) -"bdm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/starboard) +"bdm" = (/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bdn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bdo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bdp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) -"bdq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/starboard) +"bdp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bdq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bdr" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bds" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/clothing/gloves/color/yellow,/obj/item/t_scanner,/obj/item/multitool,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/tech) "bdt" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/circuitboard/powermonitor{pixel_x = -2; pixel_y = 2},/obj/item/circuitboard/stationalert_all{pixel_x = 1; pixel_y = -1},/obj/item/circuitboard/atmos_alert{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/tech) @@ -2889,7 +2889,7 @@ "bdC" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/structure/closet/radiation,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bdD" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bdE" = (/turf/simulated/wall,/area/security/checkpoint/engineering) -"bdF" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engine/engineering) +"bdF" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - AI Upload"; dir = 2; network = list("SS13")},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH-POWER TURRETS AHEAD'."; name = "\improper HIGH-POWER TURRETS AHEAD"; pixel_y = 32},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/hallway/primary/central) "bdG" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plating/airless,/area/engine/engineering) "bdH" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "bdI" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai) @@ -2902,19 +2902,19 @@ "bdP" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/space,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bdQ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall,/area/hallway/secondary/entry{name = "Arrivals"}) "bdR" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) -"bdS" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bdT" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bdU" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-05"; layer = 4.1; tag = "icon-plant-05"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bdV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/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/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bdW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) +"bdS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/primary/central) +"bdT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/primary/central) +"bdU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light/small{dir = 1},/obj/structure/sign/securearea{pixel_y = 32},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/hallway/primary/central) +"bdV" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/primary/central) +"bdW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/starboard) "bdX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bdY" = (/obj/machinery/light_switch{pixel_x = -38},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/quartermaster/storage) +"bdY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) "bdZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bea" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"beb" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/quartermaster/storage) -"bec" = (/obj/machinery/camera{c_tag = "Cargo Bay - Aft"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/quartermaster/storage) -"bed" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/quartermaster/storage) -"bee" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/quartermaster/storage) +"beb" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bec" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/starboard) +"bed" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bee" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light_switch{pixel_x = 27},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bef" = (/obj/structure/closet/crate,/obj/item/stack/cable_coil/random,/turf/simulated/floor/plating,/area/maintenance/starboard) "beg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;63;48;50"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "beh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -2950,9 +2950,9 @@ "beL" = (/obj/structure/table/wood,/obj/item/folder/red,/obj/item/folder/red,/obj/item/folder/red,/obj/item/taperecorder{pixel_y = 0},/obj/item/clothing/glasses/sunglasses/big,/turf/simulated/floor/wood,/area/lawoffice) "beM" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/engine/chiefs_office) "beN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) -"beO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/engine/engineering) -"beP" = (/obj/effect/landmark{name = "lightsout"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) -"beQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/engine/engineering) +"beO" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"beP" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-05"; layer = 4.1; tag = "icon-plant-05"},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"beQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "beR" = (/obj/structure/filingcabinet,/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = 30},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/checkpoint/engineering) "beS" = (/obj/structure/table,/obj/item/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 29},/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/checkpoint/engineering) "beT" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig) @@ -2965,11 +2965,11 @@ "bfa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bfb" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bfc" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/light/small{dir = 4; pixel_y = 8},/obj/machinery/camera/motion{c_tag = "Mini Satellite Exterior North-West"; dir = 8; network = list("SS13","MiniSat")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bfd" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bfd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/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/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bfe" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) "bff" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) "bfg" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bfh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bfh" = (/obj/machinery/light_switch{pixel_x = -38},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bfi" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bfj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;48;50;1"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bfk" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/security/brig) @@ -2977,13 +2977,13 @@ "bfm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/security/brig) "bfn" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bfo" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Maintenance"; req_access_txt = "0"; req_one_access_txt = "48;50"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bfp" = (/obj/item/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/quartermaster/storage) -"bfq" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/quartermaster/storage) -"bfr" = (/obj/machinery/conveyor_switch/oneway{id = "packageSort2"; pixel_x = -8; pixel_y = -2},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/quartermaster/storage) -"bfs" = (/obj/structure/rack,/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/wrapping_paper,/obj/item/stack/wrapping_paper,/obj/item/destTagger{pixel_x = 4; pixel_y = 3},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/quartermaster/storage) -"bft" = (/obj/structure/rack,/obj/machinery/power/apc{dir = 2; name = "Cargo Bay APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/obj/machinery/light,/obj/item/hand_labeler,/obj/item/hand_labeler,/obj/item/screwdriver{pixel_y = 10},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/quartermaster/storage) -"bfu" = (/obj/structure/closet/secure_closet/cargotech,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/quartermaster/storage) -"bfv" = (/obj/structure/closet/secure_closet/cargotech,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/quartermaster/storage) +"bfp" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bfq" = (/obj/machinery/camera{c_tag = "Cargo Bay - Aft"; dir = 1; network = list("SS13")},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bfr" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/engine/engineering) +"bfs" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/engine/engineering) +"bft" = (/obj/effect/landmark{name = "lightsout"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) +"bfu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bfv" = (/obj/structure/closet/secure_closet/cargotech,/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bfw" = (/turf/simulated/wall,/area/quartermaster/office{name = "\improper Cargo Office"}) "bfx" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/mining{name = "Cargo Bay"; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Cargo Office"}) "bfy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/mining{name = "Cargo Bay"; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Cargo Office"}) @@ -3040,9 +3040,9 @@ "bgx" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "bgy" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 4; icon_state = "brown"},/area/storage/primary) "bgz" = (/obj/machinery/computer/security/telescreen{desc = "Used for monitoring the singularity engine safely."; dir = 8; name = "Singularity Monitor"; network = list("Singulo"); pixel_x = 29; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) -"bgA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/engine/engineering) -"bgB" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/engine/engineering) -"bgC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Engineering - Entrance"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/engine/engineering) +"bgA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bgB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bgC" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bgD" = (/obj/item/screwdriver{pixel_y = 10},/obj/item/radio/off,/obj/machinery/computer/security/telescreen{dir = 4; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = -29; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/checkpoint/engineering) "bgE" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor/plasteel,/area/security/checkpoint/engineering) "bgF" = (/obj/structure/table,/obj/item/book/manual/security_space_law,/obj/machinery/light{dir = 4},/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/checkpoint/engineering) @@ -3050,7 +3050,7 @@ "bgH" = (/obj/structure/closet/secure_closet/medical3,/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "bgI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/security/brig) "bgJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bgK" = (/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/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) +"bgK" = (/obj/item/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bgL" = (/obj/machinery/door/airlock/external{req_access_txt = "13"},/turf/simulated/floor/plating,/area/engine/engineering) "bgM" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/space,/area/space) "bgN" = (/obj/structure/lattice,/turf/space,/area/construction/hallway{name = "\improper MiniSat Exterior"}) @@ -3061,7 +3061,7 @@ "bgS" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/light/small{dir = 8},/obj/machinery/camera/motion{c_tag = "Mini Satellite Exterior North-East"; dir = 4; network = list("SS13","MiniSat")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bgT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/eastright{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "13;75"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bgU" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/space) -"bgV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bgV" = (/obj/machinery/conveyor_switch/oneway{id = "packageSort2"; pixel_x = -8; pixel_y = -2},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bgW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bgX" = (/turf/simulated/wall,/area/security/checkpoint2{name = "Customs"}) "bgY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -3152,7 +3152,7 @@ "biF" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) "biG" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) "biH" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/structure/plasticflaps{opacity = 0},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) -"biI" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/quartermaster/office{name = "\improper Cargo Office"}) +"biI" = (/obj/structure/rack,/obj/machinery/power/apc{dir = 2; name = "Cargo Bay APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow,/obj/machinery/light,/obj/item/hand_labeler,/obj/item/hand_labeler,/obj/item/screwdriver{pixel_y = 10},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "biJ" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "biK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/quartermaster/office{name = "\improper Cargo Office"}) "biL" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/quartermaster/office{name = "\improper Cargo Office"}) @@ -3173,7 +3173,7 @@ "bja" = (/obj/structure/closet/l3closet/janitor,/obj/machinery/alarm{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/janitor) "bjb" = (/obj/structure/table/wood,/obj/item/book/manual/security_space_law,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 6},/area/crew_quarters/courtroom) "bjc" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) -"bjd" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/maintcentral{name = "Central Maintenance"}) +"bjd" = (/obj/structure/rack,/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/packageWrap{pixel_x = 2; pixel_y = -3},/obj/item/stack/wrapping_paper,/obj/item/stack/wrapping_paper,/obj/item/destTagger{pixel_x = 4; pixel_y = 3},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bje" = (/turf/simulated/wall/r_wall,/area/maintenance/maintcentral{name = "Central Maintenance"}) "bjf" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/item/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27; pixel_y = 0},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bjg" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/wood,/obj/item/pinpointer,/obj/item/disk/nuclear,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3190,7 +3190,7 @@ "bjr" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellow"},/area/storage/tools) "bjs" = (/obj/structure/rack,/obj/item/apc_electronics,/obj/item/airlock_electronics,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellow"},/area/storage/tools) "bjt" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/rods{amount = 50},/turf/simulated/floor/plasteel{dir = 6; icon_state = "yellow"},/area/storage/tools) -"bju" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/starboard) +"bju" = (/obj/structure/closet/secure_closet/cargotech,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bjv" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/circuitboard/robotics{pixel_x = -2; pixel_y = 2},/obj/item/circuitboard/mecha_control{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/storage/tech) "bjw" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/tech) "bjx" = (/obj/machinery/vending/assist,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/tech) @@ -3240,13 +3240,13 @@ "bkp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/security/checkpoint2{name = "Customs"}) "bkq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/checkpoint2{name = "Customs"}) "bkr" = (/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/security/checkpoint2{name = "Customs"}) -"bks" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bkt" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bks" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/item/cigbutt,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) +"bkt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/light/small{dir = 8},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/engine/engineering) "bku" = (/obj/machinery/door/airlock/maintenance{name = "Mailroom Maintenance"; req_access_txt = "50"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) -"bkv" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/quartermaster/office{name = "\improper Cargo Office"}) -"bkw" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/quartermaster/office{name = "\improper Cargo Office"}) -"bkx" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/quartermaster/office{name = "\improper Cargo Office"}) -"bky" = (/obj/machinery/conveyor_switch/oneway{id = "packageSort2"; pixel_x = -2; pixel_y = 12},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"bkv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Engineering - Entrance"; dir = 8; network = list("SS13")},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/engine/engineering) +"bkw" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) +"bkx" = (/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/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/engine/engineering) +"bky" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bkz" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Cargo - Office"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "bkA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel,/area/quartermaster/office{name = "\improper Cargo Office"}) "bkB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/mob/living/simple_animal/pet/sloth/paperwork,/turf/simulated/floor/plasteel,/area/quartermaster/office{name = "\improper Cargo Office"}) @@ -3329,7 +3329,7 @@ "bma" = (/obj/item/paper,/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{dir = 2; name = "Arrivals Security Checkpoint"; pixel_y = -8; req_access_txt = "1"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) "bmb" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint2{name = "Customs"}) "bmc" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/checkpoint2{name = "Customs"}) -"bmd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bmd" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/deliveryChute{dir = 8},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) "bme" = (/obj/machinery/space_heater,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bmf" = (/obj/structure/disposalpipe/wrapsortjunction{dir = 1},/turf/simulated/wall,/area/quartermaster/office{name = "\improper Cargo Office"}) "bmg" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"}) @@ -3366,10 +3366,10 @@ "bmL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light,/obj/machinery/atm{pixel_y = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bmM" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/starboard) "bmN" = (/obj/structure/table/reinforced,/obj/machinery/photocopier/faxmachine{department = "Chief Engineer's Office"},/turf/simulated/floor/plasteel{icon_state = "neutral"},/area/engine/chiefs_office) -"bmO" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/item/cigbutt,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) +"bmO" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) "bmP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/flasher_button{id = "secentranceflasher"; name = "Brig Entrance Flasher"; pixel_x = -3; pixel_y = -38; req_access_txt = "1"},/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/brig) "bmQ" = (/obj/machinery/power/apc{dir = 8; name = "Custodial Closet APC"; pixel_x = -24},/obj/structure/table,/obj/item/clothing/gloves/color/orange,/obj/item/storage/box/mousetraps,/obj/item/storage/box/mousetraps,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/item/key/janitor,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/janitor) -"bmR" = (/obj/structure/table,/obj/item/crowbar,/obj/item/wrench,/obj/item/clothing/mask/gas,/obj/item/multitool{pixel_x = 3},/obj/machinery/computer/guestpass{pixel_y = 30},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/lab) +"bmR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/starboard) "bmS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atm{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "bmT" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/camera{c_tag = "Mini Satellite AI Chamber South"; dir = 2; network = list("SS13","MiniSat")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bmU" = (/obj/structure/table/wood,/obj/item/storage/photo_album{pixel_y = -4},/obj/item/camera{pixel_y = 4},/obj/item/radio/intercom{dir = 8; name = "Station Intercom (Captain)"; pixel_x = -28},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3426,13 +3426,13 @@ "bnT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bnU" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bnV" = (/obj/effect/landmark{name = "Observer-Start"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) -"bnW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bnW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bnX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bnY" = (/obj/structure/sign/pods,/turf/simulated/wall,/area/security/checkpoint2{name = "Customs"}) "bnZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/wall,/area/security/checkpoint2{name = "Customs"}) "boa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/security{name = "Customs Desk"; req_access = null; req_access_txt = "1"},/turf/simulated/floor/plasteel,/area/security/checkpoint2{name = "Customs"}) "bob" = (/obj/machinery/ignition_switch{id = "Turbine_igniter"; pixel_x = -6; pixel_y = -24},/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1449; id_tag = "turbine_control"; name = "Turbine Access Console"; pixel_x = 6; pixel_y = -26; req_access_txt = "0"; tag_exterior_door = "gas_turbine_exterior"; tag_interior_door = "gas_turbine_interior"},/obj/structure/sign/fire{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"boc" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) +"boc" = (/obj/effect/landmark{name = "blobstart"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bod" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;48;50;1"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "boe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bof" = (/obj/machinery/door/window/eastleft{base_state = "right"; icon_state = "right"; name = "Deliveries"; req_access_txt = "50"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/quartermaster/office{name = "\improper Cargo Office"}) @@ -3494,10 +3494,10 @@ "bpj" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/engine/break_room) "bpk" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/engine/break_room) "bpl" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/maintenance/starboard) -"bpm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/engine/gravitygenerator) +"bpm" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/quartermaster/office{name = "\improper Cargo Office"}) "bpn" = (/turf/simulated/floor/plasteel,/area/engine/break_room) -"bpo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/engine/gravitygenerator) -"bpp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/gravitygenerator) +"bpo" = (/obj/structure/stool,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/quartermaster/office{name = "\improper Cargo Office"}) +"bpp" = (/obj/effect/landmark{name = "blobstart"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/quartermaster/office{name = "\improper Cargo Office"}) "bpq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/maintenance/starboard) "bpr" = (/obj/structure/lattice,/obj/structure/lattice,/turf/space,/area/space) "bps" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/table/reinforced{tag = "icon-table"; icon_state = "table"},/obj/item/paper_bin{pixel_x = -3; pixel_y = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) @@ -3506,7 +3506,7 @@ "bpv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bpw" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "bpx" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) -"bpy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bpy" = (/obj/machinery/conveyor_switch/oneway{id = "packageSort2"; pixel_x = -2; pixel_y = 12},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/quartermaster/office{name = "\improper Cargo Office"}) "bpz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) "bpA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "arrival"; dir = 5},/area/hallway/secondary/entry{name = "Arrivals"}) "bpB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/hallway/primary/port) @@ -3544,7 +3544,7 @@ "bqh" = (/obj/machinery/computer/atmos_alert,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bqi" = (/obj/item/radio/beacon,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bqj" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) -"bqk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) +"bqk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bql" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/computer/prisoner,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bqm" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/door/window/westright{dir = 4},/obj/item/soap/deluxe,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bqn" = (/obj/structure/mirror{pixel_y = 28},/obj/structure/sink{pixel_y = 17},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3632,7 +3632,7 @@ "brR" = (/obj/machinery/recharger,/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = 24},/obj/item/storage/secure/safe{pixel_x = 34; pixel_y = 0},/obj/item/flash,/obj/structure/table/wood,/turf/simulated/floor/wood,/area/crew_quarters/heads) "brS" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) "brT" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) -"brU" = (/obj/item/radio/off,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/maintcentral{name = "Central Maintenance"}) +"brU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "brV" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 4; location = "Bridge"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/maintenance/maintcentral{name = "Central Maintenance"}) "brW" = (/obj/structure/disposalpipe/segment,/obj/machinery/computer/turbine_computer{id = "incineratorturbine"},/obj/machinery/atmospherics/pipe/simple/insulated,/turf/simulated/floor/plating,/area/maintenance/incinerator) "brX" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/hallway/primary/port) @@ -3656,7 +3656,7 @@ "bsp" = (/turf/simulated/wall,/area/crew_quarters/bar) "bsq" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/starboard) "bsr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/maintenance/starboard) -"bss" = (/obj/machinery/camera/emp_proof{c_tag = "Engineering - Particle Accelerator"; dir = 2; network = list("Singulo","SS13")},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/engine/engineering) +"bss" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/light{dir = 8},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/engine/engineering) "bst" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bsu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "bsv" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/starboard) @@ -3765,19 +3765,19 @@ "buu" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 1; location = "Bar"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/crew_quarters/bar) "buv" = (/obj/item/storage/box/lights/mixed,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard) "buw" = (/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/starboard) -"bux" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) +"bux" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "buy" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/starboard) "buz" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/starboard) "buA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/starboard) -"buB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) +"buB" = (/obj/item/radio/off,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) "buC" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/starboard) -"buD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) +"buD" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/camera{c_tag = "Arrivals - Station Entrance"; dir = 4; network = list("SS13")},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "buE" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "buF" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/starboard) "buG" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) -"buH" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/engine/break_room) -"buI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/engine/break_room) -"buJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/engine/break_room) +"buH" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) +"buI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) +"buJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/engine/break_room) "buK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/engine/break_room) "buL" = (/obj/structure/transit_tube{icon_state = "D-SE"; tag = "icon-D-SW"},/turf/space,/area/space) "buM" = (/obj/structure/transit_tube{icon_state = "D-NW"; tag = "icon-D-NE"},/turf/space,/area/space) @@ -3803,7 +3803,7 @@ "bvg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "bvh" = (/obj/structure/window/reinforced,/turf/space,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bvi" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/space,/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bvj" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/camera{c_tag = "Arrivals - Station Entrance"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bvj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) "bvk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel,/area/engine/break_room) "bvl" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "open"; id_tag = "blueshield"; name = "Privacy Shutters"; opacity = 0},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/blueshield) "bvm" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Transit Tube"; req_one_access_txt = "32;19"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/break_room) @@ -3862,7 +3862,7 @@ "bwn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bwo" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/displaycase/captains_laser,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bwp" = (/obj/structure/table/wood,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/gun/projectile/revolver/doublebarrel,/obj/machinery/camera{c_tag = "Maltese Falcon - Backroom"; dir = 2; network = list("SS13")},/obj/item/eftpos,/turf/simulated/floor/wood,/area/crew_quarters/bar) -"bwq" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) +"bwq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bwr" = (/obj/structure/table/wood,/obj/item/book/manual/security_space_law,/obj/machinery/power/apc{dir = 8; name = "Captain's Quarters APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light/small{dir = 8},/obj/item/paper{info = "Congratulations,

Your station has been selected to carry out the Gateway Project.

The equipment will be shipped to you at the start of the next quarter.
You are to prepare a secure location to house the equipment as outlined in the attached documents.

--Nanotrasen Blue Space Research"; name = "Confidential Correspondence, Pg 1"; pixel_x = 0; pixel_y = 0},/obj/item/coin/plasma,/obj/item/melee/chainofcommand,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bws" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bwt" = (/obj/structure/table/wood,/obj/item/stamp/captain,/obj/machinery/computer/security/wooden_tv,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3879,17 +3879,17 @@ "bwE" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bwF" = (/obj/machinery/light/small,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bwG" = (/obj/machinery/door/airlock/maintenance{name = "Bar Maintenance"; req_access_txt = "25"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/bar) -"bwH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) +"bwH" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/break_room) "bwI" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bwJ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j1s"; sortType = 19},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) +"bwJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/break_room) "bwK" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bwL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) +"bwL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bwM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/public/glass{autoclose = 0; frequency = 1449; heat_proof = 1; icon_state = "door_locked"; id_tag = "gas_turbine_interior"; locked = 1; name = "Incinerator Interior Airlock"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/insulated{dir = 5},/turf/simulated/floor/engine/insulated,/area/maintenance/incinerator) "bwN" = (/obj/item/assembly/prox_sensor,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plating,/area/maintenance/starboard) "bwO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/storage/box/lights/mixed,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/starboard) -"bwP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) +"bwP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/starboard) "bwQ" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bwR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) +"bwR" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j1s"; sortType = 19},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/starboard) "bwS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bwT" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/starboard) "bwU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "blackcorner"},/area/hallway/primary/starboard) @@ -3897,7 +3897,7 @@ "bwW" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -30},/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) "bwX" = (/obj/machinery/microwave{pixel_x = 0; pixel_y = 4},/obj/machinery/camera{c_tag = "Engineering - Foyer - Port"; dir = 1; network = list("SS13")},/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) "bwY" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/item/storage/box/donkpockets,/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) -"bwZ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/break_room) +"bwZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/starboard) "bxa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/power/apc{dir = 2; name = "Engineering Foyer APC"; pixel_x = -1; pixel_y = -26},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light,/turf/simulated/floor/plasteel,/area/engine/break_room) "bxb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/computer/drone_control,/turf/simulated/floor/plasteel,/area/engine/break_room) "bxc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/engine/break_room) @@ -3930,7 +3930,7 @@ "bxD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "bxE" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "bxF" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/mining) -"bxG" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) +"bxG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/starboard) "bxH" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) "bxI" = (/obj/item/radio/beacon,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) "bxJ" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -4018,17 +4018,17 @@ "bzn" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Maintenance"; req_access_txt = "75"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) "bzo" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bzp" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; layer = 2.9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bzq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bzq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/starboard) "bzr" = (/obj/machinery/power/apc{dir = 4; name = "Arrivals APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bzs" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bzt" = (/obj/structure/transit_tube{icon_state = "NW-SE"},/turf/space,/area/space) "bzu" = (/obj/structure/transit_tube{icon_state = "N-SW"},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkbluecorners"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bzv" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bzw" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bzx" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bzy" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-18"; layer = 4.1; tag = "icon-plant-18"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bzz" = (/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/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bzA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) +"bzv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/break_room) +"bzw" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) +"bzx" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bzy" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bzz" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bzA" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-18"; layer = 4.1; tag = "icon-plant-18"},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bzB" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-10"; layer = 4.1; tag = "icon-plant-10"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/hallway/primary/port) "bzC" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/hallway/primary/port) "bzD" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/camera{c_tag = "Port Primary Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/port) @@ -4084,7 +4084,7 @@ "bAB" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/starboard) "bAC" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/starboard) "bAD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bAE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) +"bAE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bAF" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bAG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/hallway/primary/starboard) "bAH" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/starboard) @@ -4121,14 +4121,14 @@ "bBm" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/light{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/pod_1) "bBn" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/light_switch{pixel_x = -23},/obj/machinery/computer/cryopod/robot{pixel_y = -28},/obj/machinery/cryopod/robot,/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkbluecorners"},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Teleporter Foyer"}) "bBo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) -"bBp" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-20"; layer = 4.1; tag = "icon-plant-20"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bBq" = (/obj/structure/stool/bed/chair,/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/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bBr" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bBs" = (/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) +"bBp" = (/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/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bBq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/starboard) +"bBr" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-20"; layer = 4.1; tag = "icon-plant-20"},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bBs" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Civilian"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bBt" = (/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) -"bBu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/secondary/entry{name = "Arrivals"}) -"bBv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bBw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) +"bBu" = (/obj/structure/stool/bed/chair,/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/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bBv" = (/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bBw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bBx" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bBy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bBz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) @@ -4144,7 +4144,7 @@ "bBJ" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/hallway/primary/port) "bBK" = (/turf/simulated/wall,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "bBL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) -"bBM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bBM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bBN" = (/obj/structure/closet,/obj/effect/decal/cleanable/cobweb2,/obj/item/poster/random_contraband,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bBO" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/wood,/area/library) "bBP" = (/obj/structure/table/wood,/obj/machinery/computer/library/public,/turf/simulated/floor/wood,/area/library) @@ -4176,8 +4176,8 @@ "bCp" = (/obj/structure/table/wood,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/storage/fancy/donut_box,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bCq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair (WEST)"; icon_state = "comfychair"; dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bCr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet{tag = "icon-carpet11-12"; icon_state = "carpet11-12"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bCs" = (/obj/machinery/door/airlock/command{name = "Emergency Escape"; req_access = null; req_access_txt = "20"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bCt" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/maintcentral{name = "Central Maintenance"}) +"bCs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bCt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bCu" = (/obj/structure/table,/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/machinery/chem_dispenser/soda,/obj/structure/sign/barsign{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bCv" = (/obj/structure/table,/obj/machinery/chem_dispenser/beer,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bCw" = (/obj/machinery/camera{c_tag = "Bar"; dir = 2; network = list("SS13")},/obj/machinery/requests_console{department = "Bar"; departmentType = 2; pixel_x = 0; pixel_y = 30},/obj/structure/table,/obj/item/book/manual/barman_recipes{pixel_y = 5},/obj/item/reagent_containers/food/drinks/shaker,/obj/item/reagent_containers/glass/rag{pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) @@ -4220,15 +4220,15 @@ "bDh" = (/obj/machinery/light/small{dir = 4},/obj/item/radio/intercom{dir = 8; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 30},/obj/structure/table/wood,/obj/item/phone{pixel_x = -3; pixel_y = 3},/obj/item/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "bDi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/mob/living/simple_animal/bot/floorbot{on = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkbluecorners"},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"}) "bDj" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/light,/obj/machinery/computer/station_alert,/obj/machinery/computer/security/telescreen{dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/tcomeast{name = "\improper MiniSat East Wing"}) -"bDk" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bDl" = (/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/camera{c_tag = "Arrivals - Middle Arm - Far"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bDm" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bDn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bDo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/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/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bDp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bDq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bDk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) +"bDl" = (/obj/machinery/door/airlock/command{name = "Emergency Escape"; req_access = null; req_access_txt = "20"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"bDm" = (/obj/machinery/light,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bDn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bDo" = (/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/camera{c_tag = "Arrivals - Middle Arm - Far"; dir = 1; network = list("SS13")},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bDp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bDq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/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/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bDr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Bridge - Port Access"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) -"bDs" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) +"bDs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bDt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bluecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) "bDu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bDv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -4246,7 +4246,7 @@ "bDH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "bDI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "bDJ" = (/obj/machinery/vending/cigarette,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) -"bDK" = (/obj/item/cigbutt,/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Port Maintenance APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bDK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bDL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bDM" = (/obj/structure/table/wood,/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/wood,/area/library) "bDN" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Librarian"},/turf/simulated/floor/wood,/area/library) @@ -4257,7 +4257,7 @@ "bDS" = (/obj/effect/spawner/lootdrop{loot = list(/obj/item/gun/projectile/revolver/russian,/obj/item/clothing/mask/cigarette/cigar/cohiba,/obj/item/toy/cards/deck/syndicate); name = "gambling valuables spawner"},/obj/structure/table/wood/poker,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bDT" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/atmos) "bDU" = (/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "hopqueue"; name = "HoP Queue Shutters"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "loadingarea"; tag = "loading"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) -"bDV" = (/obj/structure/table/wood,/obj/item/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/obj/item/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) +"bDV" = (/obj/structure/table/wood,/obj/item/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/obj/item/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/structure/window/reinforced/tinted{dir = 8; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bDW" = (/obj/structure/table/wood,/obj/item/folder/yellow,/obj/machinery/firealarm{pixel_y = 28},/obj/item/book/manual/security_space_law{pixel_y = 3},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bDX" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Council Chamber"; req_access = null; req_access_txt = "19"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bDY" = (/obj/structure/stool/bed/chair/comfy/beige,/turf/simulated/floor/carpet,/area/bridge) @@ -4297,16 +4297,16 @@ "bEG" = (/turf/simulated/wall,/area/crew_quarters/theatre) "bEH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bEI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/radio/beacon,/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/hallway/primary/starboard) -"bEJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera{c_tag = "Arrivals - Middle Arm"; dir = 1; network = list("SS13")},/obj/machinery/atm{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bEJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bEK" = (/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/item/crowbar/red,/obj/item/wrench,/obj/item/clothing/mask/gas,/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/obj/item/storage/box,/obj/item/storage/box,/turf/simulated/floor/plasteel{dir = 9; icon_state = "caution"},/area/atmos) -"bEL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/item/clothing/glasses/meson,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) +"bEL" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/engine/engineering) "bEM" = (/obj/machinery/computer/atmos_alert,/obj/structure/sign/double/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},/obj/machinery/camera{c_tag = "Atmospherics - Control Room"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/atmos) "bEN" = (/obj/structure/sign/double/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},/obj/machinery/computer/atmoscontrol,/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/atmos) "bEO" = (/obj/structure/sign/atmosplaque{pixel_x = 0; pixel_y = 32},/obj/item/phone{pixel_x = -3; pixel_y = 3},/obj/item/cigbutt/cigarbutt{pixel_x = 5; pixel_y = -1},/obj/structure/table,/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "caution"; dir = 5},/area/atmos) "bEP" = (/obj/structure/table,/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 7},/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/obj/machinery/alarm{pixel_y = 23},/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/atmos) "bEQ" = (/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Atmospherics APC"; pixel_x = 0; pixel_y = 28},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/camera{c_tag = "Atmospherics - Entrance"; network = list("SS13")},/turf/simulated/floor/plasteel,/area/atmos) "bER" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/atmos) -"bES" = (/obj/machinery/space_heater,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/atmos) +"bES" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera{c_tag = "Arrivals - Middle Arm"; dir = 1; network = list("SS13")},/obj/machinery/atm{pixel_y = -32},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bET" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "council blast"; name = "Council Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/bridge) "bEU" = (/obj/machinery/meter{frequency = 1443; id = "wloop_atm_meter"; name = "Waste Loop"},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 8},/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/atmos) "bEV" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/binary/volume_pump/on{dir = 8; name = "Distro to Waste"; on = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/atmos) @@ -4367,7 +4367,7 @@ "bFY" = (/obj/machinery/light,/obj/machinery/computer/security/telescreen{dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = -29},/mob/living/simple_animal/pet/fox/Renault,/turf/simulated/floor/carpet{tag = "icon-carpetside"; icon_state = "carpetside"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bFZ" = (/obj/item/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/carpet{tag = "icon-carpetside"; icon_state = "carpetside"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bGa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/carpet{tag = "icon-carpet9-4"; icon_state = "carpet9-4"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bGb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/maintcentral{name = "Central Maintenance"}) +"bGb" = (/obj/item/cigbutt,/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Port Maintenance APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bGc" = (/obj/structure/table/reinforced,/obj/item/lighter/zippo,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = -31; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bGd" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bGe" = (/obj/structure/table/reinforced,/obj/item/clothing/head/that,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) @@ -4395,7 +4395,7 @@ "bGA" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/grenade/chem_grenade/metalfoam,/obj/item/grenade/chem_grenade/metalfoam,/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/atmos) "bGB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/atmos) "bGC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/atmos) -"bGD" = (/obj/machinery/space_heater,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/atmos) +"bGD" = (/obj/machinery/space_heater,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/atmos) "bGE" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plasteel,/area/atmos) "bGF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/atmos) "bGG" = (/turf/simulated/floor/plasteel,/area/atmos) @@ -4461,7 +4461,7 @@ "bHO" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bHP" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bHQ" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) -"bHR" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/crew_quarters/bar) +"bHR" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; max_integrity = 120; reinf = 0},/turf/simulated/floor/plating,/area/crew_quarters/bar) "bHS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bHT" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bHU" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) @@ -4481,7 +4481,7 @@ "bIi" = (/obj/structure/table,/obj/item/storage/belt/utility,/obj/item/t_scanner,/obj/item/t_scanner,/obj/item/t_scanner,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/atmos) "bIj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/atmos) "bIk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/atmos) -"bIl" = (/obj/machinery/space_heater,/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/atmos) +"bIl" = (/obj/machinery/space_heater,/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/atmos) "bIm" = (/obj/machinery/atmospherics/binary/volume_pump/on{name = "Waste In"},/turf/simulated/floor/plasteel,/area/atmos) "bIn" = (/obj/effect/landmark/start{name = "Life Support Specialist"},/turf/simulated/floor/plasteel,/area/atmos) "bIo" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/turf/simulated/floor/plasteel,/area/atmos) @@ -4595,7 +4595,7 @@ "bKs" = (/turf/simulated/shuttle/floor,/area/shuttle/transport) "bKt" = (/obj/machinery/door/airlock/shuttle,/obj/docking_port/mobile{dir = 8; dwidth = 2; height = 12; id = "ferry"; name = "ferry shuttle"; roundstart_move = "ferry_away"; width = 5},/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 12; id = "ferry_home"; name = "port bay 3"; width = 5},/turf/simulated/shuttle/floor,/area/shuttle/transport) "bKu" = (/obj/machinery/door/airlock/external{name = "Transport Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) -"bKv" = (/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/hallway/secondary/entry{name = "Arrivals"}) +"bKv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) "bKw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bKx" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/insulated,/turf/space,/area/space) "bKy" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -4628,7 +4628,7 @@ "bKZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bLa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bLb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/bridge/meeting_room{name = "\improper Command Hallway"}) -"bLc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bLc" = (/obj/machinery/space_heater,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/atmos) "bLd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bLe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "bLf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) @@ -4656,7 +4656,7 @@ "bLB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Club"; opacity = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bLC" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bLD" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;27"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bLE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bLE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bLF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bLG" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/bar) "bLH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) @@ -4665,7 +4665,7 @@ "bLK" = (/obj/structure/closet/crate,/obj/item/poster/random_official,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bLL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bLM" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/airlocks/station/maintenance.dmi'; name = "Theatre Stage"; req_access_txt = "0"; req_one_access_txt = "12;46"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/theatre) -"bLN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) +"bLN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bLO" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 8; icon_state = "escape"},/area/hallway/primary/starboard) "bLP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/starboard) "bLQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "caution"; dir = 4},/area/hallway/primary/starboard) @@ -4712,13 +4712,13 @@ "bMF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/wood,/area/security/vacantoffice) "bMG" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/door_control{id = "AuxShower"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/obj/item/soap/nanotrasen,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "bMH" = (/obj/machinery/shower{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) -"bMI" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/engine/engineering) +"bMI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/gateway) "bMJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bMK" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bMK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bML" = (/obj/machinery/door/airlock/maintenance{name = "Library Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;37"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bMM" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/carpet,/area/library) "bMN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/wood,/area/library) -"bMO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/engine/engineering) +"bMO" = (/obj/machinery/power/rad_collector{anchored = 1},/obj/item/tank/plasma,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/engine/engineering) "bMP" = (/obj/machinery/bookbinder,/turf/simulated/floor/wood,/area/library) "bMQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "bMR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -4805,9 +4805,9 @@ "bOu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "bOv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bOw" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bOx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bOy" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bOz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"bOx" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) +"bOy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/starboard) +"bOz" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bOA" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/machinery/light_switch{pixel_x = -8; pixel_y = 30},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bOB" = (/turf/simulated/wall,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bOC" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"}) @@ -4825,10 +4825,10 @@ "bOO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/wood,/area/ntrep) "bOP" = (/obj/machinery/power/apc{dir = 4; name = "Centcomm Rep APC"; pixel_x = 24; pixel_y = -3},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/ntrep) "bOQ" = (/obj/structure/closet/secure_closet/exile,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/gateway) -"bOR" = (/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/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/gateway) -"bOS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/gateway) +"bOR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"bOS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bOT" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/storage/toolbox/emergency,/obj/item/flashlight,/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Gateway APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/gateway) -"bOU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/maintcentral{name = "Central Maintenance"}) +"bOU" = (/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/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/gateway) "bOV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "bOW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "bOX" = (/obj/structure/table,/obj/item/clothing/head/cakehat,/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) @@ -4890,9 +4890,9 @@ "bQb" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/library) "bQc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bQd" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bQe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"bQe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/gateway) "bQf" = (/obj/structure/table,/obj/item/storage/belt/utility,/obj/item/storage/belt/utility,/obj/item/radio/off,/obj/item/radio/off,/obj/item/radio/off,/obj/item/radio/off,/obj/item/multitool,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bQg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"bQg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) "bQh" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bQi" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/crowbar,/obj/item/storage/toolbox/emergency,/obj/item/radio/off,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"}) "bQj" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/multitool,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"}) @@ -4909,8 +4909,8 @@ "bQu" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/wood,/area/ntrep) "bQv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) "bQw" = (/obj/structure/closet/l3closet/scientist,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/gateway) -"bQx" = (/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/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/gateway) -"bQy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/gateway) +"bQx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bQy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bQz" = (/obj/structure/table,/obj/item/folder/yellow,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/storage/firstaid/regular{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/gateway) "bQA" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 1; frequency = 1443; id = "air_in"},/turf/simulated/floor/engine/insulated/vacuum,/area/maintenance/incinerator) "bQB" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/gateway) @@ -4958,12 +4958,12 @@ "bRr" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Telecoms - Server Room - Fore-Port"; dir = 2; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bRs" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/tcommsat/server) "bRt" = (/obj/machinery/blackbox_recorder,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"bRu" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-06"; level = 4.1; tag = "icon-plant-06"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bRv" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Civilian"},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bRw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bRx" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bRu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"bRv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"bRw" = (/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/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/gateway) +"bRx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/gateway) "bRy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Arrivals - Aft Arm"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bRz" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1449; id_tag = "tox_airlock_control"; name = "Toxin Mixing Console"; pixel_x = -24; pixel_y = 0; req_access_txt = "0"; tag_airpump = "tox_airlock_apump"; tag_chamber_sensor = "tox_airlock_sensor"; tag_exterior_door = "tox_airlock_exterior"; tag_exterior_sensor = null; tag_interior_door = "tox_airlock_interior"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhitecorner"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"bRz" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-06"; level = 4.1; tag = "icon-plant-06"},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bRA" = (/obj/machinery/power/apc{dir = 8; name = "Vacant Office APC"; pixel_x = -25},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/wood,/area/security/vacantoffice) "bRB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/wood,/area/security/vacantoffice) "bRC" = (/obj/machinery/light_construct{dir = 4},/turf/simulated/floor/wood,/area/security/vacantoffice) @@ -4981,13 +4981,13 @@ "bRO" = (/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/obj/machinery/libraryscanner,/turf/simulated/floor/wood,/area/library) "bRP" = (/obj/structure/closet/emcloset,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/library) "bRQ" = (/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/table,/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/power/apc{dir = 8; name = "E.V.A. Storage APC"; pixel_x = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bRR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"bRR" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Civilian"},/obj/machinery/light{dir = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bRS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bRT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"bRT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bRU" = (/obj/machinery/door/window/northleft{dir = 8; name = "Magboot Storage"; pixel_x = -1; pixel_y = 0; req_access_txt = "19"},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots{pixel_x = -4; pixel_y = 3},/obj/item/clothing/shoes/magboots{pixel_x = 0; pixel_y = 0},/obj/item/clothing/shoes/magboots{pixel_x = 4; pixel_y = -3},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bRV" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) -"bRW" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) -"bRX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) +"bRV" = (/obj/machinery/light{dir = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bRW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bRX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bRY" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/window/northleft{dir = 8; name = "Disposals Chute"; pixel_x = -1; pixel_y = 0; req_access_txt = "0"},/obj/machinery/disposal/deliveryChute{dir = 8; name = "disposals chute"; pixel_x = 5},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"}) "bRZ" = (/turf/simulated/floor/wood,/area/blueshield) "bSa" = (/turf/simulated/floor/plasteel{icon_state = "bcarpet05"},/area/blueshield) @@ -4998,8 +4998,8 @@ "bSf" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/ntrep) "bSg" = (/obj/item/radio/intercom{pixel_x = 29; pixel_y = -1},/turf/simulated/floor/wood,/area/ntrep) "bSh" = (/obj/structure/closet/secure_closet/medical1{pixel_x = 0},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/gateway) -"bSi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/gateway) -"bSj" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/gateway) +"bSi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"bSj" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/teleporter{name = "\improper Teleporter Room"}) "bSk" = (/obj/structure/table,/obj/item/paper/pamphlet,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/gateway) "bSl" = (/obj/machinery/door/poddoor{id_tag = "auxincineratorvent"; name = "Auxiliary Incinerator Vent"},/turf/simulated/floor/engine/insulated/vacuum,/area/maintenance/incinerator) "bSm" = (/obj/machinery/gateway{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/gateway) @@ -5051,8 +5051,8 @@ "bTg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "bTh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/computer/account_database,/turf/simulated/floor/bluegrid,/area/bridge) "bTi" = (/obj/item/stack/sheet/cardboard,/obj/item/flashlight,/obj/effect/decal/cleanable/cobweb2,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/maintenance/starboard) -"bTj" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fore) -"bTk" = (/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/fore) +"bTj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/teleporter{name = "\improper Teleporter Room"}) +"bTk" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/teleporter{name = "\improper Teleporter Room"}) "bTl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) "bTm" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/sign/double/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},/obj/item/twohanded/required/kirbyplants{icon_state = "plant-03"; layer = 4.1; tag = "icon-plant-03"},/turf/simulated/floor/plasteel{icon_state = "arrival"; dir = 6},/area/hallway/secondary/entry{name = "Arrivals"}) "bTn" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/wood,/area/security/vacantoffice) @@ -5072,19 +5072,19 @@ "bTB" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/library) "bTC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bTD" = (/obj/structure/closet/crate/rcd{pixel_y = 4},/obj/machinery/door/window/northleft{dir = 4; name = "RCD Storage"; pixel_x = 1; pixel_y = 0; req_access_txt = "19"},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bTE" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"bTE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/gateway) "bTF" = (/obj/structure/dispenser/oxygen{layer = 2.9; pixel_x = -1; pixel_y = 2},/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bTG" = (/obj/machinery/camera/motion{c_tag = "E.V.A. Storage"; dir = 8},/obj/machinery/requests_console{department = "EVA"; pixel_x = 32; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bTH" = (/obj/machinery/power/apc{dir = 8; name = "Teleporter APC"; pixel_x = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) +"bTG" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/gateway) +"bTH" = (/obj/machinery/camera{c_tag = "Arrivals - Aft Arm - Far"; dir = 1; network = list("SS13")},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bTI" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/teleporter{name = "\improper Teleporter Room"}) -"bTJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) +"bTJ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bTK" = (/obj/structure/table,/obj/item/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 27; pixel_y = 0},/obj/item/hand_labeler,/obj/item/stack/packageWrap,/obj/item/hand_tele,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera{c_tag = "Teleporter Room"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"}) "bTL" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/wood,/area/blueshield) "bTM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/ntrep) "bTN" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/carpet,/area/ntrep) "bTO" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/wood,/area/ntrep) "bTP" = (/obj/structure/stool/bed/roller,/obj/machinery/vending/wallmed1{pixel_x = -28; pixel_y = 0},/obj/machinery/camera{c_tag = "Gateway - Atrium"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/gateway) -"bTQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/gateway) +"bTQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bTR" = (/obj/structure/dispenser/oxygen{pixel_x = -1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/item/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/gateway) "bTS" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/gateway) "bTT" = (/obj/machinery/gateway,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/gateway) @@ -5134,13 +5134,13 @@ "bUL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bUM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bUN" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/crowbar,/obj/item/wrench,/obj/item/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bUO" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"bUO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bUP" = (/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bUQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"bUQ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) "bUR" = (/obj/machinery/door/window/northleft{dir = 8; name = "Jetpack Storage"; pixel_x = -1; pixel_y = 0; req_access_txt = "19"},/obj/structure/window/reinforced,/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/tank/jetpack/carbondioxide{pixel_x = 4; pixel_y = -1},/obj/item/tank/jetpack/carbondioxide{pixel_x = 0; pixel_y = 0},/obj/item/tank/jetpack/carbondioxide{pixel_x = -4; pixel_y = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bUS" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) -"bUT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) -"bUU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/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/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) +"bUS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bUT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) +"bUU" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bUV" = (/obj/item/tank/oxygen,/obj/item/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/structure/table,/obj/item/radio/off,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"}) "bUW" = (/obj/machinery/keycard_auth{pixel_x = -24; pixel_y = 0},/obj/machinery/door/window{dir = 1; name = "Desk Door"; req_access_txt = "67"},/turf/simulated/floor/wood,/area/blueshield) "bUX" = (/obj/structure/table/wood,/obj/item/ashtray/glass{pixel_x = -4; pixel_y = -4},/obj/item/lighter/zippo/blue{pixel_x = 7; pixel_y = 4},/turf/simulated/floor/plasteel{icon_state = "bcarpet05"},/area/blueshield) @@ -5152,8 +5152,8 @@ "bVd" = (/obj/structure/table/wood,/obj/item/folder,/obj/item/stamp/centcom,/obj/item/pen/multi/fountain,/turf/simulated/floor/carpet,/area/ntrep) "bVe" = (/obj/machinery/door/window{dir = 1; name = "Desk Door"; req_access_txt = "73"},/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 0},/turf/simulated/floor/wood,/area/ntrep) "bVf" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/obj/item/reagent_containers/syringe/charcoal,/obj/item/reagent_containers/syringe/epinephrine{pixel_x = -1; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/gateway) -"bVg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/gateway) -"bVh" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/gateway) +"bVg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door_control{id = "gateshutter"; name = "Gateway Shutter Control"; pixel_x = 0; pixel_y = 26; req_access_txt = "19"},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/hallway/primary/central) +"bVh" = (/obj/machinery/camera/motion{c_tag = "E.V.A. Storage"; dir = 8},/obj/machinery/requests_console{department = "EVA"; pixel_x = 32; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bVi" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "1;4;38;12"},/turf/simulated/floor/plating,/area/maintenance/fore) "bVj" = (/obj/machinery/telecomms/server/presets/common,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bVk" = (/obj/machinery/telecomms/server/presets/engineering,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) @@ -5177,7 +5177,7 @@ "bVC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark/start{name = "Clown"},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bVD" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bVE" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/airlocks/station/maintenance.dmi'; name = "Theatre Backstage"; req_access_txt = "46"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/theatre) -"bVF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j1s"; sortType = 18},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) +"bVF" = (/obj/machinery/power/apc{dir = 8; name = "Teleporter APC"; pixel_x = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/teleporter{name = "\improper Teleporter Room"}) "bVG" = (/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/simulated/floor/plasteel{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecoms Storage"}) "bVH" = (/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/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecoms Storage"}) "bVI" = (/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,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecoms Storage"}) @@ -5187,7 +5187,7 @@ "bVM" = (/obj/machinery/atmospherics/trinary/filter{req_access = "0"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bVN" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/atmos) "bVO" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "escape"},/area/atmos) -"bVP" = (/obj/structure/closet/secure_closet/atmos_personal,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/atmos) +"bVP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/teleporter{name = "\improper Teleporter Room"}) "bVQ" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/atmos) "bVR" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/atmos) "bVS" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8},/turf/simulated/floor/plasteel,/area/atmos) @@ -5200,16 +5200,16 @@ "bVZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bWa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bWb" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Telecoms Server Room APC"; pixel_x = 25; pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Telecoms - Server Room - Aft-Starboard"; dir = 8; network = list("SS13","tcomm")},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"bWc" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bWd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bWc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/gateway) +"bWd" = (/obj/machinery/hologram/holopad,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bWe" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/toxins/lab) -"bWf" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/crew_quarters/kitchen) +"bWf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bWg" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bWh" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) +"bWh" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/teleporter{name = "\improper Teleporter Room"}) "bWi" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/item/trash/candy,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bWj" = (/obj/machinery/door/airlock/maintenance{name = "Vacant Office Maintenance"; req_access_txt = "32"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/security/vacantoffice) "bWk" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/mask/horsehead,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bWl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bWl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/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/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/teleporter{name = "\improper Teleporter Room"}) "bWm" = (/obj/structure/rack,/obj/item/storage/box,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bWn" = (/obj/machinery/door/airlock/maintenance{name = "Kitchen Maintenance"; req_access_txt = "28"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/kitchen) "bWo" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -5225,7 +5225,7 @@ "bWy" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/light/small{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "bWz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bWA" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bWB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"bWB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/teleporter{name = "\improper Teleporter Room"}) "bWC" = (/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/teleporter{name = "\improper Teleporter Room"}) "bWD" = (/obj/item/radio/beacon,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/teleporter{name = "\improper Teleporter Room"}) "bWE" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/door_control{id = "teleshutter"; name = "Teleporter Shutter Control"; pixel_x = 26; pixel_y = -26; req_access_txt = "19"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/teleporter{name = "\improper Teleporter Room"}) @@ -5242,15 +5242,15 @@ "bWP" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Nanotrasen Representative"},/turf/simulated/floor/carpet,/area/ntrep) "bWQ" = (/obj/machinery/requests_console{announcementConsole = 1; department = "NT Representative"; departmentType = 5; dir = 2; name = "NT Rep Requests Console"; pixel_x = 30},/turf/simulated/floor/wood,/area/ntrep) "bWR" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/head/hardhat/orange{name = "protective hat"},/obj/item/clothing/head/hardhat/orange{name = "protective hat"},/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/gateway) -"bWS" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/gateway) -"bWT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/gateway) -"bWU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/gateway) +"bWS" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/gateway) +"bWT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j1s"; sortType = 18},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/starboard) +"bWU" = (/obj/structure/closet/secure_closet/atmos_personal,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/atmos) "bWV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/door/airlock/public/glass{name = "Gateway Chamber"},/turf/simulated/floor/plasteel,/area/gateway) "bWW" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/gateway) "bWX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/gateway) "bWY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/gateway) "bWZ" = (/obj/machinery/door/airlock/maintenance{name = "Gateway Maintenance"; req_access_txt = "62"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/gateway) -"bXa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/maintcentral{name = "Central Maintenance"}) +"bXa" = (/obj/machinery/light/small{dir = 8},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"}) "bXb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bXc" = (/obj/structure/table,/obj/item/reagent_containers/food/snacks/mint,/obj/item/reagent_containers/food/condiment/enzyme{layer = 5},/obj/item/reagent_containers/glass/beaker{pixel_x = 5},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bXd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) @@ -5284,7 +5284,7 @@ "bXF" = (/obj/machinery/telecomms/server/presets/command,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bXG" = (/obj/machinery/telecomms/server/presets/service,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bXH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bXI" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bXI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bXJ" = (/obj/machinery/vending/suitdispenser,/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bXK" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bXL" = (/obj/machinery/hologram/holopad,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/wood,/area/library) @@ -5296,13 +5296,13 @@ "bXR" = (/obj/item/taperecorder{pixel_y = 0},/obj/item/camera,/obj/item/radio/intercom{pixel_y = -25},/obj/structure/table/wood,/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "bXS" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "bXT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) -"bXU" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bXV" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"bXW" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"bXU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bXV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) +"bXW" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/gateway) "bXX" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/machinery/door_control{id = "evashutter"; name = "E.V.A. Storage Shutter Control"; pixel_x = 0; pixel_y = -26; req_access_txt = "19"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bXY" = (/obj/machinery/computer/teleporter,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"}) "bXZ" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"}) -"bYa" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/teleporter{name = "\improper Teleporter Room"}) +"bYa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/gateway) "bYb" = (/obj/structure/closet/secure_closet/blueshield,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/wood,/area/blueshield) "bYc" = (/obj/machinery/door_control{id = "blueshield"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "67"},/obj/machinery/computer/crew,/turf/simulated/floor/wood,/area/blueshield) "bYd" = (/obj/structure/table/wood,/obj/item/flashlight/lamp,/obj/machinery/camera{c_tag = "Blueshield's Office"; dir = 1; network = list("SS13")},/obj/machinery/newscaster/security_unit{pixel_y = -32},/turf/simulated/floor/wood,/area/blueshield) @@ -5316,16 +5316,16 @@ "bYl" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/gateway) "bYm" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/gateway) "bYn" = (/obj/item/storage/belt/utility,/obj/item/radio/off,/obj/item/radio/off,/obj/item/radio/off,/obj/structure/rack{dir = 8; layer = 2.9},/obj/machinery/door_control{id = "gateshutter"; name = "Gateway Shutter Control"; pixel_x = 0; pixel_y = -26; req_access_txt = "19"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/gateway) -"bYo" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/gateway) -"bYp" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Gateway - Access"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/gateway) -"bYq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/maintcentral{name = "Central Maintenance"}) +"bYo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/gateway) +"bYp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) +"bYq" = (/obj/structure/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/hardsuit/atmos,/obj/item/clothing/head/helmet/space/hardsuit/atmos,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/atmos) "bYr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bYs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table,/obj/item/book/manual/chef_recipes{pixel_x = 2; pixel_y = 6},/obj/item/stack/packageWrap,/obj/item/hand_labeler,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bYt" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/storage/box/donkpockets,/obj/item/eftpos,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bYu" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bYv" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/power/apc{dir = 2; name = "Kitchen APC"; pixel_y = -24},/obj/structure/cable/yellow,/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "bYw" = (/obj/structure/table,/obj/item/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/reagent_containers/food/condiment/peppermill{pixel_x = 3},/obj/item/kitchen/rollingpin,/obj/machinery/camera{c_tag = "Kitchen"; dir = 1; network = list("SS13")},/obj/machinery/door_control{id = "kitchenhydro"; name = "Service Shutter Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "28"},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) -"bYx" = (/obj/structure/disposalpipe/sortjunction{dir = 2; sortType = 20},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) +"bYx" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bYy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bYz" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 6},/area/hydroponics) "bYA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "green"},/area/hydroponics) @@ -5345,15 +5345,15 @@ "bYO" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 8; frequency = 1441; id = "tox_in"; pixel_y = 1},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos) "bYP" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - Toxins"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos) "bYQ" = (/obj/machinery/light/small,/obj/machinery/camera{c_tag = "Telecoms - Server Room - Aft"; dir = 1; network = list("SS13","tcomm")},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/ntnet_relay,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"bYR" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bYR" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bYS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bYT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bYU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bYU" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bYV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bYW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bYX" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "rdprivacy"; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/hor) "bYY" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "rdprivacy"; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/hor) -"bYZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bYZ" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bZa" = (/obj/structure/table,/obj/item/paper_bin{pixel_x = -4; pixel_y = 10},/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/qm) "bZb" = (/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/wood,/area/library) "bZc" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/library) @@ -5376,15 +5376,15 @@ "bZt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "greencorner"},/area/hallway/primary/central) "bZu" = (/turf/simulated/wall,/area/hallway/primary/central) "bZv" = (/turf/simulated/wall,/area/hydroponics) -"bZw" = (/obj/structure/table/glass,/obj/item/book/manual/sop_service{pixel_x = 2; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) +"bZw" = (/obj/machinery/teleport/hub,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"}) "bZx" = (/obj/structure/table/reinforced,/obj/machinery/door/window/eastleft{dir = 1; name = "Kitchen Window"; req_access_txt = "28"; req_one_access_txt = "0"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/paper,/obj/machinery/door/window/eastleft{dir = 2; name = "Hydroponics Window"; req_access_txt = "0"; req_one_access_txt = "30;35"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/hydroponics) "bZy" = (/obj/machinery/smartfridge,/turf/simulated/wall,/area/hydroponics) -"bZz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/crew_quarters/kitchen) +"bZz" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/gateway) "bZA" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/hydroponics) "bZB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) "bZC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) -"bZD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{sortType = 21},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) -"bZE" = (/obj/machinery/power/apc{cell_type = 2500; dir = 1; name = "Starboard Maintenance APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) +"bZD" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Gateway - Access"; dir = 8; network = list("SS13")},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/gateway) +"bZE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) "bZF" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bZG" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/starboard) "bZH" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 2},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5410,18 +5410,18 @@ "cab" = (/obj/structure/table/wood,/obj/item/paper,/obj/machinery/light,/turf/simulated/floor/wood,/area/library) "cac" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/library) "cad" = (/obj/machinery/door/airlock/maintenance{name = "Library Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;37"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"cae" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cae" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "caf" = (/obj/machinery/vending/snack,/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/central) "cag" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=11-Command-Port"; location = "10.1-Aft-Port-Corner"},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "cah" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "cai" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) -"caj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) -"cak" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/primary/central) -"cal" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door_control{id = "evashutter"; name = "E.V.A. Storage Shutter Control"; pixel_x = 0; pixel_y = 26; req_access_txt = "19"},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/primary/central) +"caj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cak" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cal" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/crew_quarters/kitchen) "cam" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "can" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/firealarm{pixel_y = 28},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) -"cao" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door_control{id = "teleshutter"; name = "Teleporter Shutter Control"; pixel_x = 0; pixel_y = 26; req_access_txt = "19"},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) -"cap" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/primary/central) +"cao" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/crew_quarters/kitchen) +"cap" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/effect/landmark{name = "blobstart"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/starboard) "caq" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "car" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "cas" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) @@ -5433,23 +5433,23 @@ "cay" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/structure/sign/double/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/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "caz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/sign/double/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/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "caA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) -"caB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door_control{id = "gateshutter"; name = "Gateway Shutter Control"; pixel_x = 0; pixel_y = 26; req_access_txt = "19"},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) -"caC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/primary/central) -"caD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) +"caB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/hallway/primary/central) +"caC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/hallway/primary/central) +"caD" = (/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/obj/machinery/pipedispenser/disposal,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/atmos) "caE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "caF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/sign/botany{pixel_x = 32; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/hallway/primary/central) "caG" = (/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"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) "caH" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/public/glass{name = "Locker Room"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/locker) -"caI" = (/obj/machinery/vending/hydroseeds{slogan_delay = 700},/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) -"caJ" = (/obj/machinery/vending/hydronutrients,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) -"caK" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) -"caL" = (/obj/item/storage/box/syringes,/obj/item/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) -"caM" = (/obj/machinery/reagentgrinder,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) -"caN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) -"caO" = (/obj/machinery/chem_master/condimaster{name = "BrewMaster 4000"; pixel_x = -4},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) -"caP" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/reagent_dispensers/watertank/high,/obj/item/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) -"caQ" = (/obj/structure/window/reinforced{dir = 8},/obj/item/radio/intercom{name = "Station Intercom (General)"; pixel_y = 29},/obj/structure/reagent_dispensers/watertank/high,/obj/item/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) -"caR" = (/obj/structure/closet/crate/hydroponics,/obj/item/shovel/spade,/obj/item/wrench,/obj/item/screwdriver,/obj/item/reagent_containers/glass/bucket,/obj/item/cultivator,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) +"caI" = (/obj/machinery/power/apc{cell_type = 2500; dir = 1; name = "Starboard Maintenance APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) +"caJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"caK" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"caL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/hallway/primary/central) +"caM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/primary/central) +"caN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door_control{id = "evashutter"; name = "E.V.A. Storage Shutter Control"; pixel_x = 0; pixel_y = 26; req_access_txt = "19"},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/hallway/primary/central) +"caO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door_control{id = "teleshutter"; name = "Teleporter Shutter Control"; pixel_x = 0; pixel_y = 26; req_access_txt = "19"},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/hallway/primary/central) +"caP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/hallway/primary/central) +"caQ" = (/obj/machinery/vending/hydronutrients,/obj/machinery/light{dir = 1},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hydroponics) +"caR" = (/obj/machinery/vending/hydroseeds{slogan_delay = 700},/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 0; pixel_y = 32},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hydroponics) "caS" = (/obj/structure/closet{name = "spare parts locker"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/item/rack_parts,/obj/item/rack_parts,/obj/item/wrench,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/crew_quarters/kitchen) "caT" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/window/eastright{dir = 1; name = "Kitchen Delivery"; req_access_txt = "28"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/crew_quarters/kitchen) "caU" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 8; location = "Kitchen"},/obj/structure/plasticflaps{opacity = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/crew_quarters/kitchen) @@ -5461,7 +5461,7 @@ "cba" = (/obj/item/radio/intercom{pixel_y = -25},/obj/machinery/camera{c_tag = "Kitchen"; dir = 1; network = list("SS13")},/obj/machinery/kitchen_machine/grill,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "cbb" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/kitchen_machine/oven,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "cbc" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/atmos) -"cbd" = (/obj/machinery/pipedispenser,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/atmos) +"cbd" = (/obj/item/storage/box/syringes,/obj/item/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/structure/table/glass,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hydroponics) "cbe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "cbf" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "rdprivacy"; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/hor) "cbg" = (/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Port to Filter"; on = 0},/turf/simulated/floor/plasteel,/area/atmos) @@ -5471,15 +5471,15 @@ "cbk" = (/obj/machinery/atmospherics/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/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) "cbl" = (/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) "cbm" = (/obj/structure/closet/crate,/obj/item/clothing/gloves/color/fyellow,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cbn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/portsolar) +"cbn" = (/obj/structure/table/glass,/obj/item/book/manual/sop_service{pixel_x = 2; pixel_y = 5},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hydroponics) "cbo" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes,/turf/simulated/floor/plating,/area/maintenance/portsolar) -"cbp" = (/obj/item/cigbutt,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"cbp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hydroponics) "cbq" = (/obj/structure/closet,/obj/item/storage/box/donkpockets,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cbr" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;25;28"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cbs" = (/obj/structure/rack,/obj/item/weldingtool,/obj/item/screwdriver{pixel_y = 16},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cbt" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cbt" = (/obj/machinery/reagentgrinder,/obj/structure/table/glass,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hydroponics) "cbu" = (/obj/machinery/recharge_station,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cbv" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"cbv" = (/obj/machinery/chem_master/condimaster{name = "BrewMaster 4000"; pixel_x = -4},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hydroponics) "cbw" = (/obj/structure/rack,/obj/item/stack/cable_coil{pixel_x = -1; pixel_y = -3},/obj/item/stack/cable_coil,/obj/item/wirecutters,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cbx" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/central) "cby" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/hallway/primary/central) @@ -5506,7 +5506,7 @@ "cbT" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/hydroponics) "cbU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/starboard) "cbV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/starboard) -"cbW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) +"cbW" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hydroponics) "cbX" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/starboard) "cbY" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/genetics) "cbZ" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "toxins_blastdoor"; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -5527,12 +5527,12 @@ "cco" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plating,/area/maintenance/portsolar) "ccp" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 4},/obj/item/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/plating,/area/maintenance/portsolar) "ccq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"ccr" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"ccs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"ccr" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/reagent_dispensers/watertank/high,/obj/item/reagent_containers/glass/bucket,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hydroponics) +"ccs" = (/obj/structure/window/reinforced{dir = 8},/obj/item/radio/intercom{name = "Station Intercom (General)"; pixel_y = 29},/obj/structure/reagent_dispensers/watertank/high,/obj/item/reagent_containers/glass/bucket,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hydroponics) "cct" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"ccu" = (/turf/simulated/floor/plating{tag = "icon-warnplatecorner (WEST)"; icon_state = "warnplatecorner"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) -"ccv" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"ccw" = (/turf/simulated/floor/plating{tag = "icon-warnplatecorner (EAST)"; icon_state = "warnplatecorner"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"ccu" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/engine/engineering) +"ccv" = (/obj/structure/closet/crate/hydroponics,/obj/item/shovel/spade,/obj/item/wrench,/obj/item/screwdriver,/obj/item/reagent_containers/glass/bucket,/obj/item/cultivator,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hydroponics) +"ccw" = (/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ccx" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ccy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/engine/engineering) "ccz" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) @@ -5570,16 +5570,16 @@ "cdf" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/hydroponics) "cdg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel,/area/hydroponics) "cdh" = (/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel,/area/hydroponics) -"cdi" = (/obj/machinery/seed_extractor,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hydroponics) +"cdi" = (/obj/structure/disposalpipe/sortjunction{dir = 2; sortType = 20},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/starboard) "cdj" = (/obj/structure/closet/secure_closet/hydroponics,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/item/storage/backpack/satchel_hyd,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) "cdk" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/firealarm{pixel_y = 29},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) "cdl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/poddoor/shutters/preopen{dir = 8; id_tag = "toxins_blastdoor"; name = "biohazard containment shutters"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "toxins_blastdoor"; name = "privacy shutters"; opacity = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Toxins Lab"; req_access_txt = "8"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cdm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"cdn" = (/obj/structure/window/reinforced,/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cdn" = (/obj/machinery/light{dir = 1},/obj/machinery/light_switch{pixel_y = 28},/obj/structure/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/hardsuit/atmos,/obj/item/clothing/head/helmet/space/hardsuit/atmos,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/atmos) "cdo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "cdp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"cdq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) -"cdr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) +"cdq" = (/obj/machinery/pipedispenser,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/atmos) +"cdr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/portsolar) "cds" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance"; req_access_txt = "24"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/atmos) "cdt" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/atmos) "cdu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/atmos) @@ -5591,7 +5591,7 @@ "cdA" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - CO2"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) "cdB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark{name = "JoinLateGateway"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/gateway) "cdC" = (/obj/machinery/power/solar_control{id = "aftport"; name = "Aft Port Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/portsolar) -"cdD" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/portsolar) +"cdD" = (/obj/item/cigbutt,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cdE" = (/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/simulated/floor/plating,/area/maintenance/portsolar) "cdF" = (/obj/structure/rack,/obj/item/poster/random_contraband,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cdG" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -5626,7 +5626,7 @@ "cej" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/obj/machinery/newscaster{pixel_y = -29},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "cek" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;7;35;8;47"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cel" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/security/checkpoint/science{name = "Security Post - Research Division"}) -"cem" = (/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/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/engine/engineering) +"cem" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cen" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/item/book/manual/hydroponics_pod_people,/obj/item/paper/hydroponics,/obj/machinery/requests_console{department = "Hydroponics"; departmentType = 2; pixel_x = -31; pixel_y = -2},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "greenfull"},/area/hydroponics) "ceo" = (/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/hand_labeler,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "greenfull"},/area/hydroponics) "cep" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/tcommsat/server) @@ -5634,7 +5634,7 @@ "cer" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "ces" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/hydroponics) "cet" = (/obj/effect/landmark/start{name = "Botanist"},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/hydroponics) -"ceu" = (/obj/item/seeds/wheat,/obj/item/seeds/sugarcane,/obj/item/seeds/potato,/obj/item/seeds/apple,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hydroponics) +"ceu" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cev" = (/obj/structure/closet/secure_closet/hydroponics,/obj/item/storage/backpack/satchel_hyd,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) "cew" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/effect/landmark/start{name = "Botanist"},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) "cex" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5643,8 +5643,8 @@ "ceA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/starboard) "ceB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/maintenance/starboard) "ceC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) -"ceD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/cigbutt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/starboard) -"ceE" = (/obj/structure/table/reinforced,/obj/item/wrench,/obj/item/screwdriver{pixel_y = 10},/obj/item/storage/firstaid/toxin,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"ceD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"ceE" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ceF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/atmos) "ceG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel,/area/atmos) "ceH" = (/obj/machinery/atmospherics/unary/portables_connector,/turf/simulated/floor/plasteel,/area/atmos) @@ -5655,9 +5655,9 @@ "ceM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "ceN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ceO" = (/obj/structure/table,/obj/item/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/poster/random_contraband,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"ceP" = (/obj/machinery/light/small,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) +"ceP" = (/obj/machinery/seed_extractor,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/hydroponics) "ceQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "toxins_blastdoor"; name = "privacy shutters"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Launch Room Access"; req_access_txt = "8"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"ceR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"ceR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/starboard) "ceS" = (/obj/item/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/pen{pixel_x = -3; pixel_y = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table/reinforced,/obj/machinery/camera{c_tag = "Security Post - Cargo"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "ceT" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ceU" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5690,13 +5690,13 @@ "cfv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/research{name = "Research Division"}) "cfw" = (/turf/simulated/wall,/area/medical/research{name = "Research Division"}) "cfx" = (/turf/simulated/wall,/area/security/checkpoint/science{name = "Security Post - Research Division"}) -"cfy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"cfy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) "cfz" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hallway/primary/central) "cfA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hallway/primary/central) "cfB" = (/obj/item/cultivator,/obj/item/crowbar,/obj/item/plant_analyzer,/obj/item/reagent_containers/glass/bucket,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hallway/primary/central) "cfC" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 9; icon_state = "green"},/area/hydroponics) "cfD" = (/obj/effect/landmark/start{name = "Botanist"},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/hydroponics) -"cfE" = (/obj/machinery/biogenerator,/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/hydroponics) +"cfE" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/portsolar) "cfF" = (/obj/structure/closet/secure_closet/hydroponics,/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/obj/item/storage/backpack/satchel_hyd,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) "cfG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) "cfH" = (/obj/machinery/door/poddoor{id_tag = "mixvent"; name = "Mixer Room Vent"},/turf/simulated/floor/engine/insulated/vacuum,/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -5715,12 +5715,12 @@ "cfU" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid,/area/maintenance/aft{name = "Aft Maintenance"}) "cfW" = (/turf/simulated/floor/bluegrid,/area/maintenance/aft{name = "Aft Maintenance"}) -"cfX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"cfX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfY" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfZ" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cga" = (/obj/machinery/light/small{dir = 1},/obj/structure/mopbucket,/obj/item/mop,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cgb" = (/obj/item/storage/toolbox/emergency,/obj/item/hand_labeler,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cgc" = (/obj/item/cigbutt,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cgc" = (/obj/item/seeds/wheat,/obj/item/seeds/sugarcane,/obj/item/seeds/potato,/obj/item/seeds/apple,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/structure/table/glass,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hydroponics) "cgd" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 4; location = "Medbay"},/obj/structure/plasticflaps{opacity = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/window/northleft{dir = 8; name = "MuleBot Access"; req_access_txt = "50"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/medbay2{name = "Medbay Storage"}) "cge" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "cgf" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) @@ -5771,9 +5771,9 @@ "cgY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) "cgZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) "cha" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) -"chb" = (/obj/structure/rack,/obj/item/extinguisher,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) -"chc" = (/obj/structure/closet,/obj/item/stack/cable_coil/random,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) -"chd" = (/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/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/incinerator) +"chb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/cigbutt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/starboard) +"chc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"chd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "che" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = 32},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating,/area/maintenance/incinerator) "chf" = (/obj/machinery/power/smes{capacity = 9e+006; charge = 10000},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/incinerator) "chg" = (/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/atmos) @@ -5787,19 +5787,19 @@ "cho" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "chp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "chq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"chr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"chr" = (/obj/machinery/biogenerator,/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/hydroponics) "chs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central) "cht" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light,/obj/machinery/door_control{id = "paramedic"; name = "Garage Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "66"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "chu" = (/turf/simulated/floor/engine/insulated/vacuum,/area/toxins/mixing{name = "\improper Toxins Lab"}) "chv" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"chw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"chw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "chx" = (/obj/structure/closet,/obj/item/clothing/accessory/stethoscope,/obj/item/hemostat,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "chy" = (/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "chz" = (/obj/structure/closet/crate,/obj/item/coin/silver,/obj/item/flashlight,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "chA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j1s"; sortType = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"chB" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"chB" = (/obj/item/cigbutt,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "chC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"chD" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"chD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{sortType = 21},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/starboard) "chE" = (/obj/machinery/door/airlock/research/glass{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "tox_airlock_exterior"; locked = 1; name = "Mixing Room Exterior Airlock"; req_access_txt = "8"},/turf/simulated/floor/engine/insulated/vacuum,/area/toxins/mixing{name = "\improper Toxins Lab"}) "chF" = (/obj/item/cigbutt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/starboard) "chG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5839,18 +5839,18 @@ "cio" = (/obj/machinery/vending/hydroseeds{slogan_delay = 700},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "cip" = (/obj/structure/table,/obj/item/book/manual/hydroponics_pod_people,/obj/machinery/light,/obj/item/paper/hydroponics,/obj/machinery/camera{c_tag = "Hydroponics - Foyer"; dir = 1; network = list("SS13")},/obj/item/radio/intercom{pixel_y = -25},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "ciq" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) -"cir" = (/obj/machinery/disposal{pixel_x = -2; pixel_y = -2},/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/hydroponics) -"cis" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/hydroponics) +"cir" = (/obj/structure/closet,/obj/item/stack/cable_coil/random,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) +"cis" = (/obj/structure/rack,/obj/item/extinguisher,/obj/item/clothing/mask/gas,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) "cit" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel,/area/hydroponics) -"ciu" = (/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hydroponics) -"civ" = (/obj/machinery/light,/obj/machinery/power/apc{dir = 2; name = "Hydroponics APC"; pixel_x = 0; pixel_y = -28},/obj/structure/cable/yellow,/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hydroponics) -"ciw" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hydroponics) +"ciu" = (/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/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"civ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"ciw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cix" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel,/area/hydroponics) -"ciy" = (/obj/item/wrench,/obj/item/clothing/suit/apron,/obj/item/clothing/accessory/armband/hydro,/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hydroponics) -"ciz" = (/obj/item/reagent_containers/spray/plantbgone{pixel_x = 0; pixel_y = 3},/obj/item/reagent_containers/spray/plantbgone{pixel_x = 8; pixel_y = 8},/obj/item/reagent_containers/spray/plantbgone{pixel_x = 13; pixel_y = 5},/obj/item/watertank,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/item/grenade/chem_grenade/antiweed,/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hydroponics) +"ciy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"ciz" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ciA" = (/obj/machinery/door/window/eastright{dir = 1; name = "Hydroponics Delivery"; req_access_txt = "35"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hydroponics) "ciB" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 8; location = "Hydroponics"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/hydroponics) -"ciC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) +"ciC" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/hydroponics) "ciD" = (/obj/effect/decal/cleanable/cobweb,/obj/machinery/atmospherics/unary/tank/toxins{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "ciE" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "plasma tank pump"},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "ciF" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) @@ -5873,13 +5873,13 @@ "ciW" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Air to Pure"},/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/atmos) "ciX" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 9},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/atmos) "ciY" = (/obj/machinery/door/airlock/external{req_access_txt = "24"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/atmos) -"ciZ" = (/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/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/atmos) +"ciZ" = (/obj/machinery/disposal{pixel_x = -2; pixel_y = -2},/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light_switch{pixel_y = -28},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/hydroponics) "cja" = (/turf/simulated/floor/plating,/area/atmos) "cjb" = (/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "glass door"; req_access_txt = "24"},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "glass door"; req_access_txt = "24"},/turf/simulated/floor/plating,/area/atmos) "cjc" = (/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cjd" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/reception) "cje" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cjf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cjf" = (/obj/machinery/hydroponics/constructable,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hydroponics) "cjg" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cjh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/reception) "cji" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5924,8 +5924,8 @@ "cjV" = (/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access_txt = "35"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/hydroponics) "cjW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/virology) "cjX" = (/obj/item/flashlight,/turf/simulated/floor/plating,/area/maintenance/starboard) -"cjY" = (/obj/structure/closet/crate,/obj/item/coin/silver,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/starboard) -"cjZ" = (/obj/structure/reagent_dispensers/watertank,/obj/item/storage/box/lights/mixed,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/starboard) +"cjY" = (/obj/machinery/light,/obj/machinery/power/apc{dir = 2; name = "Hydroponics APC"; pixel_x = 0; pixel_y = -28},/obj/structure/cable/yellow,/obj/machinery/hydroponics/constructable,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hydroponics) +"cjZ" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/hydroponics/constructable,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hydroponics) "cka" = (/obj/structure/sign/nosmoking_2{pixel_x = -28},/obj/machinery/atmospherics/unary/portables_connector{dir = 4; name = "input gas connector port"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "ckb" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "input port pump"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "ckc" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/insulated{dir = 6},/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) @@ -5946,7 +5946,7 @@ "ckr" = (/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cks" = (/turf/simulated/floor/plating/airless/catwalk,/area/space) "ckt" = (/obj/machinery/door/airlock/external{req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cku" = (/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/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"cku" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/plantgenes,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hydroponics) "ckv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ckw" = (/obj/structure/girder,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ckx" = (/obj/structure/table,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) @@ -5970,7 +5970,7 @@ "ckP" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/checkpoint/medical) "ckQ" = (/obj/item/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27; pixel_y = -10},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/checkpoint/medical) "ckR" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) -"ckS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/explab) +"ckS" = (/obj/machinery/light,/obj/machinery/hydroponics/constructable,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hydroponics) "ckT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "ckU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "ckV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/aft) @@ -5989,18 +5989,18 @@ "cli" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "clj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "clk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/virology) -"cll" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"clm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"cll" = (/obj/item/wrench,/obj/item/clothing/suit/apron,/obj/item/clothing/accessory/armband/hydro,/obj/structure/table/glass,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/hydroponics) +"clm" = (/obj/item/reagent_containers/spray/plantbgone{pixel_x = 0; pixel_y = 3},/obj/item/reagent_containers/spray/plantbgone{pixel_x = 8; pixel_y = 8},/obj/item/reagent_containers/spray/plantbgone{pixel_x = 13; pixel_y = 5},/obj/item/watertank,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/item/grenade/chem_grenade/antiweed,/obj/structure/table/glass,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hydroponics) "cln" = (/obj/structure/closet,/obj/item/flashlight,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "clo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "clp" = (/obj/structure/cable/yellow,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/virology) -"clq" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"clq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/starboard) "clr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"cls" = (/obj/machinery/space_heater,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) +"cls" = (/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/machinery/light/small{dir = 1},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/atmos) "clt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plating,/area/maintenance/starboard) -"clu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) +"clu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "clv" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) -"clw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) +"clw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "clx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "cly" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "clz" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/insulated,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) @@ -6021,7 +6021,7 @@ "clO" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "clP" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "clQ" = (/obj/structure/girder,/obj/structure/grille,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"clR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"clR" = (/obj/structure/reagent_dispensers/watertank,/obj/item/storage/box/lights/mixed,/obj/effect/spawner/lootdrop/maintenance,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/starboard) "clS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) "clT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "clU" = (/obj/structure/table,/obj/item/folder/white,/obj/item/folder/white,/obj/item/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6053,7 +6053,7 @@ "cmu" = (/obj/machinery/power/apc{dir = 8; name = "Security Post - Research Division APC"; pixel_x = -24},/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "cmv" = (/obj/structure/closet/secure_closet/security/science,/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "cmw" = (/obj/structure/filingcabinet,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/checkpoint/science{name = "Security Post - Research Division"}) -"cmx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cmx" = (/obj/structure/closet/crate,/obj/item/coin/silver,/obj/effect/spawner/lootdrop/maintenance,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/starboard) "cmy" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cmz" = (/turf/simulated/wall/r_wall,/area/medical/research{name = "Research Division"}) "cmA" = (/obj/machinery/door/airlock/maintenance{name = "Research Maintenance"; req_access_txt = "7"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) @@ -6063,7 +6063,7 @@ "cmE" = (/obj/machinery/power/apc{dir = 8; name = "Incinerator APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cmF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cmG" = (/obj/machinery/chem_master{pixel_x = -2; pixel_y = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cmH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/starboard) +"cmH" = (/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/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cmI" = (/obj/structure/table/glass,/obj/machinery/power/apc{dir = 1; name = "Xenobiology APC"; pixel_x = 0; pixel_y = 27},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/item/stack/sheet/mineral/plasma{layer = 2.9; pixel_y = 4},/obj/item/stack/sheet/mineral/plasma{layer = 2.9; pixel_y = 4},/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,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cmJ" = (/obj/item/storage/box/lights/mixed,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cmK" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/space,/area/space) @@ -6074,14 +6074,14 @@ "cmP" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/atmos) "cmQ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/atmos) "cmR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) -"cmS" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"cmS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cmT" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "cmU" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cmV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cmW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cmX" = (/turf/simulated/wall,/area/medical/exam_room) "cmY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cmZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cmZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cna" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "cnb" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Paramedic"; req_access_txt = "66"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/paramedic) "cnc" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/machinery/door_control{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/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/checkpoint/medical) @@ -6122,11 +6122,11 @@ "cnL" = (/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/camera{c_tag = "Telescience - Test Chamber"; dir = 2; network = list("SS13","RD")},/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/toxins/explab) "cnM" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/engine,/area/toxins/explab) "cnN" = (/obj/item/radio/intercom{pixel_y = 25},/turf/simulated/floor/engine,/area/toxins/explab) -"cnO" = (/obj/machinery/space_heater,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"cnP" = (/obj/structure/closet/crate,/obj/item/storage/belt/utility,/obj/item/stack/cable_coil/random,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) -"cnQ" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/cane,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) -"cnR" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) -"cnS" = (/obj/structure/closet,/obj/item/flashlight,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) +"cnO" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cnP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/starboard) +"cnQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/starboard) +"cnR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/starboard) +"cnS" = (/obj/structure/closet/emcloset,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cnT" = (/obj/machinery/chem_heater{pixel_x = -4; pixel_y = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitepurple"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cnU" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/obj/structure/table/glass,/obj/item/extinguisher{pixel_x = -5; pixel_y = 8},/obj/item/extinguisher,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cnV" = (/obj/structure/table/glass,/obj/item/storage/box/monkeycubes{pixel_x = -3; pixel_y = 4},/obj/item/storage/box/monkeycubes{pixel_x = 3; pixel_y = 5},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) @@ -6139,7 +6139,7 @@ "coc" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/unary/portables_connector,/turf/simulated/floor/plating,/area/atmos) "cod" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "coe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cof" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"cof" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cog" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "coh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "coi" = (/obj/machinery/bodyscanner,/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/exam_room) @@ -6166,17 +6166,17 @@ "coD" = (/obj/structure/girder,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "coE" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/exam_room) "coF" = (/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters Control"; pixel_x = 23; pixel_y = 23},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/exam_room) -"coG" = (/obj/machinery/r_n_d/destructive_analyzer,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/lab) -"coH" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/lab) -"coI" = (/obj/machinery/r_n_d/protolathe,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/lab) -"coJ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"},/area/toxins/lab) +"coG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"coH" = (/obj/structure/table,/obj/item/crowbar,/obj/item/wrench,/obj/item/clothing/mask/gas,/obj/item/multitool{pixel_x = 3},/obj/machinery/computer/guestpass{pixel_y = 30},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/lab) +"coI" = (/obj/machinery/space_heater,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) +"coJ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "coK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "coL" = (/obj/machinery/disposal{pixel_x = 5},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = 24; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/toxins/lab) -"coM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) -"coN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/research{name = "Research Division"}) -"coO" = (/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Research Division APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/camera{c_tag = "Research Division - Airlock"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor/plasteel{icon_state = "warnwhite"; dir = 5},/area/medical/research{name = "Research Division"}) +"coM" = (/obj/structure/closet/crate,/obj/item/storage/belt/utility,/obj/item/stack/cable_coil/random,/obj/effect/spawner/lootdrop/maintenance,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) +"coN" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/cane,/obj/effect/spawner/lootdrop/maintenance,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) +"coO" = (/obj/structure/closet,/obj/item/flashlight,/obj/effect/spawner/lootdrop/maintenance,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) "coP" = (/turf/simulated/floor/plasteel{icon_state = "bot"},/area/medical/research{name = "Research Division"}) -"coQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"coQ" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboard) "coR" = (/obj/structure/stool,/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "coS" = (/obj/structure/stool,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "coT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) @@ -6189,7 +6189,7 @@ "cpa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/engine,/area/toxins/explab) "cpb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/exam_room) "cpc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/bridge/meeting_room{name = "\improper Command Hallway"}) -"cpd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/glass,/obj/item/slime_scanner,/obj/item/slime_scanner,/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner"; icon_state = "warnwhitecorner"; dir = 2},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cpd" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "cpe" = (/obj/machinery/reagentgrinder,/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cpf" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "xenobio3"; name = "containment blast door"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cpg" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "xenobio8"; name = "containment blast door"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) @@ -6241,16 +6241,16 @@ "cqa" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -25; pixel_y = 0; req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/exam_room) "cqb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/exam_room) "cqc" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #1"; req_access_txt = "55"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "xenobio3"; name = "containment blast door"; opacity = 0},/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cqd" = (/obj/machinery/computer/rdconsole/core,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/toxins/lab) -"cqe" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/toxins/lab) -"cqf" = (/obj/machinery/r_n_d/circuit_imprinter{pixel_y = 4},/obj/item/reagent_containers/glass/beaker/sulphuric,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/toxins/lab) -"cqg" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"},/area/toxins/lab) -"cqh" = (/obj/effect/landmark/start{name = "Scientist"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"},/area/toxins/lab) -"cqi" = (/obj/structure/table,/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/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/clothing/glasses/science,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/lab) +"cqd" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/lab) +"cqe" = (/obj/machinery/r_n_d/destructive_analyzer,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/lab) +"cqf" = (/obj/machinery/r_n_d/protolathe,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/lab) +"cqg" = (/obj/effect/landmark/start{name = "Scientist"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) +"cqh" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) +"cqi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cqj" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #2"; req_access_txt = "55"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "xenobio8"; name = "containment blast door"; opacity = 0},/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cqk" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) +"cqk" = (/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Research Division APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/camera{c_tag = "Research Division - Airlock"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cql" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"cqm" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) +"cqm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cqn" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/closet/firecloset,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "cqo" = (/obj/item/storage/toolbox/emergency,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cqp" = (/obj/machinery/light/small,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6264,8 +6264,8 @@ "cqx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/engine,/area/toxins/explab) "cqy" = (/obj/machinery/door_control{id = "telelab"; name = "Test Chamber Blast Doors"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor/engine,/area/toxins/explab) "cqz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/engine,/area/toxins/explab) -"cqA" = (/obj/structure/closet,/obj/item/storage/box/donkpockets,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cqB" = (/obj/structure/closet/crate,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/item/assembly/infra,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cqA" = (/obj/effect/landmark{name = "blobstart"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/item/cigbutt,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cqB" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/lab) "cqC" = (/obj/structure/table,/obj/effect/decal/cleanable/cobweb,/obj/item/shard,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cqD" = (/obj/structure/table,/obj/structure/sign/greencross{pixel_y = 32},/obj/item/reagent_containers/glass/beaker/large,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cqE" = (/obj/structure/table,/obj/item/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6306,8 +6306,8 @@ "crn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "cro" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/reception) "crp" = (/obj/machinery/power/apc{dir = 1; name = "Medbay Central APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera{c_tag = "Medbay Hallway Fore"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) -"crq" = (/obj/machinery/door_control{id = "telelab"; name = "Test Chamber Blast Doors"; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/table/reinforced,/obj/item/reagent_containers/glass/bottle/epinephrine{pixel_x = 7; pixel_y = 2},/obj/item/reagent_containers/glass/bottle/charcoal{pixel_x = -2; pixel_y = -1},/obj/item/reagent_containers/dropper,/obj/item/stack/medical/bruise_pack/advanced,/obj/item/stack/medical/ointment/advanced,/obj/item/healthanalyzer,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/explab) -"crr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/radio/beacon,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"crq" = (/obj/machinery/computer/rdconsole/core,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/lab) +"crr" = (/obj/machinery/r_n_d/circuit_imprinter{pixel_y = 4},/obj/item/reagent_containers/glass/beaker/sulphuric,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/lab) "crs" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "xenobio2"; name = "containment blast door"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "crt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/reception) "cru" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) @@ -6321,19 +6321,19 @@ "crC" = (/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/reception) "crD" = (/obj/structure/table,/obj/item/radio/intercom/department/medbay{pixel_y = 4},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 4; pixel_y = -4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/reception) "crE" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) -"crF" = (/obj/effect/landmark{name = "blobstart"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/item/cigbutt,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"crF" = (/obj/structure/table,/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/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/clothing/glasses/science,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/lab) "crG" = (/obj/structure/closet/secure_closet/medical3,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "crH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "crI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera{c_tag = "Aft Primary Hallway - Fore"; dir = 8; network = list("SS13")},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"crJ" = (/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/structure/table,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/lab) -"crK" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/lab) +"crJ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"crK" = (/obj/machinery/hologram/holopad,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "crL" = (/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "crM" = (/obj/structure/disposalpipe/segment,/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) -"crN" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"},/area/toxins/lab) +"crN" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "crO" = (/obj/structure/table,/obj/item/stock_parts/matter_bin,/obj/item/stock_parts/matter_bin,/obj/item/stock_parts/scanning_module,/obj/item/stock_parts/scanning_module,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/sign/nosmoking_2{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel,/area/toxins/lab) -"crP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/disposalpipe/segment,/obj/machinery/shower{dir = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) -"crQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/research{name = "Research Division"}) -"crR" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/obj/item/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) +"crP" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"crQ" = (/obj/structure/closet,/obj/item/storage/box/donkpockets,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"crR" = (/obj/structure/closet/crate,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/item/assembly/infra,/obj/effect/spawner/lootdrop/maintenance,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "crS" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "crT" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 2; location = "Research Division"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/maintenance/aft{name = "Aft Maintenance"}) "crU" = (/turf/simulated/wall/r_wall,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6350,7 +6350,7 @@ "csf" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #4"; req_access_txt = "55"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "xenobio7"; name = "containment blast door"; opacity = 0},/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "csg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "csh" = (/obj/machinery/door/airlock/maintenance{icon_state = "door_closed"; locked = 0; name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"csi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"csi" = (/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/structure/table,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/lab) "csj" = (/obj/effect/decal/cleanable/blood,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "csk" = (/obj/structure/rack,/obj/item/clothing/suit/apron,/obj/item/clothing/mask/surgical,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "csl" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6391,7 +6391,7 @@ "csU" = (/obj/item/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/lab) "csV" = (/obj/item/paper_bin{pixel_x = -2; pixel_y = 6},/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "csW" = (/obj/structure/table,/obj/structure/disposalpipe/segment,/obj/item/folder/white,/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,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) -"csX" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"},/area/toxins/lab) +"csX" = (/obj/structure/closet/secure_closet/chemical,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) "csY" = (/obj/machinery/camera{c_tag = "Research and Development"; dir = 8; network = list("SS13","RD")},/obj/machinery/light_switch{pixel_x = 27},/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/stock_parts/scanning_module{pixel_x = 2; pixel_y = 3},/obj/item/stock_parts/scanning_module,/turf/simulated/floor/plasteel,/area/toxins/lab) "csZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{id_tag = ""; name = "Research Division"; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "cta" = (/obj/machinery/door/window/westleft{dir = 2; name = "Research Division Deliveries"; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6399,16 +6399,16 @@ "ctc" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/research{id_tag = ""; name = "Research Break Room"; req_access_txt = "0"; req_one_access_txt = "47"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "ctd" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Xenolab"; name = "test chamber blast door"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cte" = (/turf/simulated/wall,/area/toxins/explab) -"ctf" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/explab) +"ctf" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/disposalpipe/segment,/obj/machinery/shower{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "ctg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) -"cth" = (/obj/structure/table/reinforced,/obj/item/hand_labeler,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/taperecorder{pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/explab) -"cti" = (/obj/machinery/computer/rdconsole/experiment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/explab) -"ctj" = (/obj/structure/table/reinforced,/obj/item/clipboard,/obj/item/book/manual/experimentor,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/explab) +"cth" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/obj/item/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"cti" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"ctj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/item/storage/box/lights/mixed,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ctk" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Xenolab"; name = "test chamber blast door"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"ctl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/explab) +"ctl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ctm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"ctn" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"cto" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"ctn" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/explab) +"cto" = (/obj/structure/table/reinforced,/obj/item/hand_labeler,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/taperecorder{pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/explab) "ctp" = (/obj/structure/rack,/obj/item/clothing/under/color/white,/obj/item/clothing/head/soft/mime,/obj/item/clothing/under/color/white,/obj/item/clothing/head/soft/mime,/obj/item/clothing/mask/surgical,/obj/item/clothing/mask/surgical,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ctq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "ctr" = (/obj/machinery/chem_heater,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6431,14 +6431,14 @@ "ctI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "ctJ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical/glass{id_tag = null; name = "Medical Reception"; req_access_txt = "5"},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/reception) "ctK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/reception) -"ctL" = (/obj/machinery/atmospherics/unary/cryo_cell{layer = 3.3},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/medical/cryo) +"ctL" = (/obj/structure/table/reinforced,/obj/item/paper_bin{pixel_x = -2; pixel_y = 6},/obj/item/pen{pixel_x = -3; pixel_y = 5},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/explab) "ctM" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/reception) "ctN" = (/obj/machinery/door/window/southleft{dir = 2; name = "Maximum Security Test Chamber"; req_access_txt = "55"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Xenolab"; name = "test chamber blast door"; opacity = 0},/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "ctO" = (/obj/structure/table,/obj/machinery/door/window/eastright{name = "Medical Reception"; req_access_txt = "5"},/obj/item/folder/white,/obj/item/pen,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "ctP" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/reception) "ctQ" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "ctR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) -"ctS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/item/storage/box/lights/mixed,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"ctS" = (/obj/structure/table/reinforced,/obj/item/clipboard,/obj/item/book/manual/experimentor,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/explab) "ctT" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/blood/empty,/obj/item/reagent_containers/blood/empty,/obj/item/reagent_containers/blood/empty,/obj/item/reagent_containers/blood/empty,/obj/item/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "ctU" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Xenolab"; name = "test chamber blast door"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "ctV" = (/obj/machinery/optable,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) @@ -6454,8 +6454,8 @@ "cuf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/lab) "cug" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "cuh" = (/obj/structure/disposalpipe/segment,/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) -"cui" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"},/area/toxins/lab) -"cuj" = (/obj/structure/table,/obj/item/stock_parts/console_screen,/obj/item/stock_parts/console_screen,/obj/item/stock_parts/console_screen,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/toxins/lab) +"cui" = (/obj/structure/closet/wardrobe/chemistry_white,/obj/item/storage/backpack/satchel_chem,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) +"cuj" = (/obj/machinery/computer/rdconsole/experiment,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/explab) "cuk" = (/obj/machinery/door_control{id = "acute1"; name = "Acute One Shutters Control"; pixel_x = 23; pixel_y = 4},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/exam_room) "cul" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cum" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) @@ -6475,7 +6475,7 @@ "cuA" = (/obj/effect/landmark/start{name = "Scientist"},/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) "cuB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table/reinforced,/obj/item/wrench,/obj/item/crowbar,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/science,/obj/item/multitool{pixel_x = 3},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) "cuC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) -"cuD" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/explab) +"cuD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/explab) "cuE" = (/obj/structure/girder,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cuF" = (/obj/machinery/vending/medical,/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/reception) "cuG" = (/obj/structure/table,/obj/item/folder/white,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/blood/empty{pixel_x = -3; pixel_y = -3},/obj/item/reagent_containers/blood/empty{pixel_x = -3; pixel_y = -3},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6543,7 +6543,7 @@ "cvQ" = (/turf/space,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "cvR" = (/obj/structure/stool/bed/chair/office/light,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) "cvS" = (/obj/structure/rack,/obj/item/crowbar/red,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/item/wrench,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/item/restraints/handcuffs/cable/zipties,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitegreen"},/area/medical/virology) -"cvT" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cvT" = (/obj/machinery/door_control{id = "telelab"; name = "Test Chamber Blast Doors"; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/table/reinforced,/obj/item/reagent_containers/glass/bottle/epinephrine{pixel_x = 7; pixel_y = 2},/obj/item/reagent_containers/glass/bottle/charcoal{pixel_x = -2; pixel_y = -1},/obj/item/reagent_containers/dropper,/obj/item/stack/medical/bruise_pack/advanced,/obj/item/stack/medical/ointment/advanced,/obj/item/healthanalyzer,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/explab) "cvU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/aft{name = "Aft Maintenance"}) "cvV" = (/obj/structure/barricade/wooden,/obj/structure/girder,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cvW" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6553,7 +6553,7 @@ "cwa" = (/turf/simulated/floor/wood{tag = "icon-wood-broken6"; icon_state = "wood-broken6"},/area/maintenance/aft{name = "Aft Maintenance"}) "cwb" = (/obj/structure/table,/obj/item/flashlight/lamp/green,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/reception) "cwc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) -"cwd" = (/obj/structure/table/reinforced,/obj/item/paper_bin{pixel_x = -2; pixel_y = 6},/obj/item/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/explab) +"cwd" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/effect/spawner/lootdrop/maintenance,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cwe" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "cwf" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "cwg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) @@ -6568,9 +6568,9 @@ "cwp" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/medbay3) "cwq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) "cwr" = (/obj/machinery/chem_master{pixel_x = -2},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"cws" = (/obj/structure/closet/secure_closet/chemical,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/chemistry) +"cws" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "cwt" = (/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cwu" = (/obj/structure/closet/wardrobe/chemistry_white,/obj/item/storage/backpack/satchel_chem,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/chemistry) +"cwu" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) "cwv" = (/obj/structure/sign/chemistry{pixel_x = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/reception) "cww" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/reception) "cwx" = (/obj/structure/table,/obj/item/folder/white,/obj/item/pen,/obj/machinery/door/window/northleft{dir = 2; icon_state = "left"; name = "Medbay Reception"; req_access_txt = "5"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) @@ -6581,11 +6581,11 @@ "cwC" = (/obj/structure/table,/obj/item/reagent_containers/blood/AMinus,/obj/item/reagent_containers/blood/APlus,/obj/item/reagent_containers/blood/BMinus,/obj/item/reagent_containers/blood/BPlus,/obj/item/reagent_containers/blood/OPlus,/obj/item/reagent_containers/blood/OMinus,/obj/machinery/alarm{dir = 1; pixel_y = -24},/obj/machinery/light,/obj/machinery/camera{c_tag = "Locker Room Port"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "cwD" = (/obj/structure/table,/obj/item/storage/box/gloves,/obj/item/storage/box/masks,/obj/item/reagent_containers/spray/cleaner{desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; name = "Surgery Cleaner"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light_switch{pixel_x = 5; pixel_y = -27},/obj/machinery/holosign_switch{id = "surgery2"; pixel_x = -5; pixel_y = -27},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "cwE" = (/obj/structure/table/reinforced,/obj/item/paper_bin{pixel_x = -2; pixel_y = 6},/turf/simulated/floor/plasteel{icon_state = "purplefull"},/area/hallway/primary/aft) -"cwF" = (/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/power/apc{dir = 2; name = "Research Lab APC"; pixel_x = 0; pixel_y = -26},/obj/structure/cable/yellow,/obj/machinery/door_control{dir = 2; id = "rndshutters"; name = "Shutters Control Button"; pixel_x = -24; pixel_y = -25},/obj/structure/table,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/lab) -"cwG" = (/obj/item/storage/toolbox/mechanical{pixel_x = 2; pixel_y = 3},/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/structure/table,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/lab) -"cwH" = (/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/hand_labeler,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = -30},/obj/structure/table,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/lab) +"cwF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cwG" = (/obj/structure/table,/obj/item/stock_parts/console_screen,/obj/item/stock_parts/console_screen,/obj/item/stock_parts/console_screen,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/lab) +"cwH" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/toxins/explab) "cwI" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/door/window/eastleft{dir = 1; name = "Research and Development Deliveries"; req_access_txt = "7"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/toxins/lab) -"cwJ" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/lab) +"cwJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/toxins/explab) "cwK" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "cwL" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cwM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -6606,8 +6606,8 @@ "cxb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) "cxc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) "cxd" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) -"cxe" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/explab) -"cxf" = (/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/structure/stool/bed/roller,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cxe" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cxf" = (/obj/structure/stool/bed/roller,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxh" = (/obj/structure/barricade/wooden,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/girder,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6627,7 +6627,7 @@ "cxw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay3) "cxx" = (/obj/machinery/vending/cola,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/medbay3) "cxy" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) -"cxz" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/light_switch{pixel_x = 0; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/medical/cryo) +"cxz" = (/obj/item/poster/random_contraband,/obj/item/reagent_containers/food/drinks/cans/beer{pixel_x = -3; pixel_y = 2},/obj/structure/table/wood,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxA" = (/obj/machinery/chem_heater,/obj/machinery/camera{c_tag = "Chemistry"; dir = 4; network = list("SS13","Medbay")},/obj/structure/reagent_dispensers/fueltank/chem{pixel_x = -30},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) "cxB" = (/obj/machinery/disposal{pixel_x = 0},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) "cxC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/reception) @@ -6641,7 +6641,7 @@ "cxK" = (/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/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cxL" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Aft Hallway APC"; pixel_x = 24; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "purplecorner"},/area/hallway/primary/aft) "cxM" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 1; location = "Research and Development"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/toxins/lab) -"cxN" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Research Lab Maintenance"; req_access_txt = "7"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/toxins/lab) +"cxN" = (/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/power/apc{dir = 2; name = "Research Lab APC"; pixel_x = 0; pixel_y = -26},/obj/structure/cable/yellow,/obj/machinery/door_control{dir = 2; id = "rndshutters"; name = "Shutters Control Button"; pixel_x = -24; pixel_y = -25},/obj/structure/table,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/lab) "cxO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "cxP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cxQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -6652,19 +6652,19 @@ "cxV" = (/turf/simulated/wall/r_wall,/area/toxins/storage) "cxW" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/toxins/storage) "cxX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "toxins_blastdoor"; name = "biohazard containment shutters"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/toxins/storage) -"cxY" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/explab) -"cxZ" = (/obj/structure/closet/radiation,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/explab) -"cya" = (/obj/structure/closet/l3closet/scientist{pixel_x = -2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/explab) -"cyb" = (/obj/structure/closet/secure_closet/scientist,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/explab) -"cyc" = (/obj/structure/rack,/obj/item/reagent_containers/blood/random,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"cxY" = (/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/hand_labeler,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = -30},/obj/structure/table,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/lab) +"cxZ" = (/obj/item/storage/toolbox/mechanical{pixel_x = 2; pixel_y = 3},/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/structure/table,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/lab) +"cya" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/lab) +"cyb" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/toxins/explab) +"cyc" = (/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/structure/stool/bed/roller,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cyd" = (/obj/structure/table,/obj/structure/bedsheetbin{pixel_x = 2},/obj/item/clothing/mask/muzzle,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cye" = (/obj/structure/table,/obj/item/restraints/handcuffs/cable/white,/obj/item/gun/syringe,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cyf" = (/obj/structure/rack,/obj/item/hatchet,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cyg" = (/obj/machinery/iv_drip,/obj/item/roller,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cyh" = (/obj/structure/rack,/obj/item/tank/anesthetic,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cyi" = (/obj/machinery/light_construct/small,/obj/item/toy/cards/deck,/obj/structure/table/wood,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) -"cyj" = (/obj/item/poster/random_contraband,/obj/item/reagent_containers/food/drinks/cans/beer{pixel_x = -3; pixel_y = 2},/obj/structure/table/wood,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) -"cyk" = (/obj/item/dice/d20,/obj/item/dice,/obj/structure/table/wood,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"cyj" = (/obj/item/dice/d20,/obj/item/dice,/obj/structure/table/wood,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cyk" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Research Lab Maintenance"; req_access_txt = "7"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/toxins/lab) "cyl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/maintenance/aft{name = "Aft Maintenance"}) "cym" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cyn" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 8},/turf/simulated/floor/plating/airless,/area/space) @@ -6694,13 +6694,13 @@ "cyL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cyM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cyN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock{name = "Aft Emergency Storage"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cyO" = (/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 14},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) -"cyP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cyO" = (/obj/structure/closet/radiation,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/explab) +"cyP" = (/obj/structure/closet/emcloset,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/explab) "cyQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "7;47;29;12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cyR" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/aft{name = "Aft Maintenance"}) -"cyS" = (/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j1s"; sortType = 12},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"cyT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cyU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cyR" = (/obj/structure/closet/secure_closet/scientist,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/explab) +"cyS" = (/obj/structure/closet/l3closet/scientist{pixel_x = -2},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/explab) +"cyT" = (/obj/structure/rack,/obj/item/reagent_containers/blood/random,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cyU" = (/obj/machinery/vending/cigarette,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cyV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Research Maintenance"; req_access_txt = "0"; req_one_access_txt = "7;47;29"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) "cyW" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "cyX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 13},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -6709,18 +6709,18 @@ "cza" = (/obj/item/folder/white,/obj/item/stamp/rd{pixel_x = 3; pixel_y = -2},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "czb" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; name = "Research Monitor"; network = list("RD"); pixel_x = 0; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "czc" = (/obj/machinery/computer/aifixer,/obj/machinery/requests_console{announcementConsole = 1; department = "Research Director's Desk"; departmentType = 5; name = "Research Director RC"; pixel_x = -2; pixel_y = 30},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) -"czd" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) +"czd" = (/obj/machinery/vending/assist,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cze" = (/obj/structure/lamarr,/obj/machinery/light/small{dir = 1},/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) -"czf" = (/obj/item/storage/secure/safe{pixel_x = 32; pixel_y = 0},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) +"czf" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czg" = (/obj/machinery/portable_atmospherics/scrubber/huge,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/storage) -"czh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/storage) -"czi" = (/obj/machinery/computer/area_atmos,/obj/machinery/light/small{dir = 1},/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/storage) +"czh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/stool/bed/chair{dir = 1},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) +"czi" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) "czj" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Toxins Storage APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/toxins/storage) "czk" = (/obj/machinery/portable_atmospherics/scrubber/huge,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "czl" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"}) "czm" = (/obj/structure/grille/broken,/turf/space,/area/space) -"czn" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"czo" = (/obj/machinery/vending/assist,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"czn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) +"czo" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/stool/bed/chair{dir = 1},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) "czp" = (/turf/simulated/wall,/area/medical/surgeryobs) "czq" = (/obj/machinery/camera{c_tag = "Medbay Hallway Fore"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) "czr" = (/obj/structure/stool/bed,/obj/item/bedsheet/medical,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) @@ -6752,12 +6752,12 @@ "czR" = (/obj/machinery/door_control{id = "xeno_blastdoor"; name = "Secure Lab Shutter Control"; pixel_x = -5; pixel_y = -5; req_access_txt = "47"},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "rdprivacy"; name = "Privacy Shutters Control"; pixel_x = 5; pixel_y = 5},/obj/machinery/door_control{id = "Biohazard"; name = "Entrance Shutter Control"; pixel_x = -5; pixel_y = 5; req_access_txt = "47"},/obj/machinery/door_control{id = "toxins_blastdoor"; name = "Toxins Shutter Control"; pixel_x = 5; pixel_y = -5; req_access_txt = "47"},/obj/item/radio/off,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "czS" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Research Director"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "czT" = (/obj/machinery/computer/robotics,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) -"czU" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/crew_quarters/hor) -"czV" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) -"czW" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/crew_quarters/hor) +"czU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) +"czV" = (/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 14},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"czW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czX" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/toxins/storage) -"czY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/storage) -"czZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/stool,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/storage) +"czY" = (/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j1s"; sortType = 12},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"czZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cAa" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/toxins/storage) "cAb" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/toxins/storage) "cAc" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6782,47 +6782,47 @@ "cAv" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) "cAw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cAx" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/maintenance{name = "Surgery Maintenance"; req_access_txt = "45"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/medical/surgeryobs) -"cAy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"cAz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/surgeryobs) +"cAy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cAz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cAA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"cAB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner"; icon_state = "warnwhitecorner"; dir = 2},/area/medical/surgeryobs) +"cAB" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "cAC" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/effect/spawner/lootdrop/maintenance,/obj/item/wrench,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cAD" = (/obj/structure/reagent_dispensers/watertank,/obj/item/storage/box/lights/mixed,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cAE" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cAF" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cAF" = (/obj/item/storage/secure/safe{pixel_x = 32; pixel_y = 0},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 30},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "cAG" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) -"cAH" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cAH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/toxins/storage) "cAI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "cAJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cAK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) "cAL" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/toxins/test_area) -"cAM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/surgeryobs) +"cAM" = (/obj/machinery/computer/area_atmos,/obj/machinery/light/small{dir = 1},/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/toxins/storage) "cAN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cAO" = (/obj/machinery/computer/mecha,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cAP" = (/obj/structure/table,/obj/item/aicard,/obj/item/circuitboard/aicore{pixel_x = -2; pixel_y = 4},/obj/item/circuitboard/teleporter,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cAQ" = (/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cAR" = (/obj/structure/table,/obj/item/taperecorder{pixel_x = -3},/obj/item/paicard{pixel_x = 4},/obj/item/storage/secure/briefcase,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cAS" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/toxins/storage) -"cAT" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/storage) -"cAU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/landmark/start{name = "Scientist"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/storage) +"cAT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hologram/holopad,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) +"cAU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) "cAV" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cAW" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Toxins Storage"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cAX" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cAY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cAY" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "cAZ" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cBa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cBb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"cBc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"cBb" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) +"cBc" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "cBd" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cBe" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cBf" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cBg" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cBh" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cBi" = (/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/simulated/floor/plating/airless/catwalk,/area/solar/port) -"cBj" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/surgeryobs) +"cBj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/toxins/storage) "cBk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cBl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/surgeryobs) -"cBm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhitecorner"},/area/medical/surgeryobs) +"cBm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/stool,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/storage) "cBn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay3) "cBo" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical/glass{id_tag = null; name = "Recovery Ward"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) "cBp" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Chief Medical Officer's Office"; req_access_txt = "40"; req_one_access_txt = "0"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) @@ -6859,13 +6859,13 @@ "cBU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cBV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cBW" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/toxins/storage) -"cBX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/storage) +"cBX" = (/obj/effect/landmark{name = "blobstart"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cBY" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cBZ" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cCa" = (/obj/machinery/disposal{pixel_x = 5},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/medbay3) "cCb" = (/obj/structure/rack,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cCc" = (/obj/item/clothing/glasses/science{pixel_x = 2; pixel_y = 4},/obj/item/clothing/glasses/science,/obj/structure/table/glass,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/machinery/power/apc{dir = 8; name = "Chemistry APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteyellow"},/area/medical/chemistry) -"cCd" = (/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cCd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/stool/bed/chair,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) "cCe" = (/obj/structure/closet/crate,/obj/item/coin/silver,/obj/item/flashlight/seclite,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cCf" = (/obj/structure/cable,/obj/machinery/power/solar{id = "aftport"; name = "Aft-Port Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/port) "cCg" = (/obj/item/reagent_containers/glass/beaker/large,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/reagent_containers/glass/beaker/large,/obj/item/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/dropper,/obj/structure/table/glass,/obj/item/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) @@ -6878,12 +6878,12 @@ "cCn" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) "cCo" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/reception) "cCp" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) -"cCq" = (/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/ppflowers,/obj/structure/flora/ausbushes/palebush,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/grass,/area/medical/surgeryobs) -"cCr" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/surgeryobs) -"cCs" = (/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/brflowers,/obj/structure/flora/ausbushes/sunnybush,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/grass,/area/medical/surgeryobs) +"cCq" = (/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/ppflowers,/obj/structure/flora/ausbushes/palebush,/obj/structure/window/reinforced{dir = 5; max_integrity = 1e+007},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/grass,/area/medical/surgeryobs) +"cCr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) +"cCs" = (/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/brflowers,/obj/structure/flora/ausbushes/sunnybush,/obj/structure/window/reinforced{dir = 5; max_integrity = 1e+007},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/grass,/area/medical/surgeryobs) "cCt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/medical/surgeryobs) "cCu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) -"cCv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/surgeryobs) +"cCv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Medical Doctor"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) "cCw" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/genetics_cloning) "cCx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "cCy" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical/glass{id_tag = null; name = "Recovery Ward"; req_access_txt = "0"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) @@ -6899,8 +6899,8 @@ "cCI" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/assembly/chargebay) "cCJ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 31},/turf/simulated/floor/mech_bay_recharge_floor,/area/assembly/chargebay) "cCK" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cCL" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) -"cCM" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cCL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/structure/stool/bed/chair,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) +"cCM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgeryobs) "cCN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Research Division Hallway - Mech Bay"; dir = 4; network = list("SS13","RD")},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "cCO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cCP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) @@ -6911,8 +6911,8 @@ "cCU" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cCV" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/item/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cCW" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/toxins/storage) -"cCX" = (/obj/item/cigbutt,/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/storage) -"cCY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/storage) +"cCX" = (/obj/structure/closet/secure_closet/medical1{pixel_x = -3},/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/medical/cryo) +"cCY" = (/obj/machinery/power/apc{dir = 1; name = "Cryogenics APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/item/reagent_containers/glass/beaker/cryoxadone{pixel_x = 5; pixel_y = 9},/obj/structure/table/glass,/obj/item/reagent_containers/glass/beaker/cryoxadone{pixel_x = 6; pixel_y = 2},/obj/item/reagent_containers/syringe/epinephrine{pixel_x = 3; pixel_y = -2},/obj/item/reagent_containers/dropper,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/cryo) "cCZ" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cDa" = (/obj/machinery/door/airlock/maintenance{name = "airlock access"; req_access_txt = "0"; req_one_access_txt = "8;12"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cDb" = (/obj/item/stack/cable_coil,/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) @@ -6925,14 +6925,14 @@ "cDi" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/genetics) "cDj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cDk" = (/obj/structure/closet/crate,/obj/item/crowbar/red,/obj/item/pen{pixel_x = -3; pixel_y = 5},/obj/item/flashlight/pen{pixel_x = 4; pixel_y = 3},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cDl" = (/obj/effect/landmark{name = "blobstart"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"cDm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/surgeryobs) -"cDn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner (WEST)"; icon_state = "warnwhitecorner"; dir = 8},/area/medical/surgeryobs) -"cDo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/surgeryobs) +"cDl" = (/obj/machinery/atmospherics/unary/cryo_cell,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/medical/cryo) +"cDm" = (/obj/machinery/atmospherics/unary/cryo_cell{layer = 3.3},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/medical/cryo) +"cDn" = (/obj/structure/table/reinforced,/obj/item/wrench,/obj/item/crowbar,/obj/machinery/camera{c_tag = "Medbay Cryo"; dir = 1; network = list("SS13","Medbay")},/obj/item/screwdriver{pixel_y = 6},/obj/item/clothing/accessory/stethoscope,/obj/machinery/firealarm{dir = 4; pixel_x = 28; pixel_y = 5},/obj/machinery/light/small{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/cryo) +"cDo" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cDp" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/preopen{id_tag = "researchrangeshutters"; name = "blast door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) -"cDq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/surgeryobs) -"cDr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 3; icon_state = "whitebluecorner"},/area/medical/surgeryobs) -"cDs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhitecorner"},/area/medical/surgeryobs) +"cDq" = (/obj/machinery/light/small{dir = 1},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cDr" = (/obj/item/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/unary/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/medical/cryo) +"cDs" = (/obj/machinery/light/small{dir = 1},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) "cDt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/genetics) "cDu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/genetics) "cDv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay3) @@ -6953,22 +6953,22 @@ "cDK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cDL" = (/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"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cDM" = (/obj/machinery/door/airlock/external{req_access_txt = "0"; req_one_access_txt = "13,8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cDN" = (/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/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cDN" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/toxins/storage) "cDO" = (/obj/structure/stool/bed/dogbed,/mob/living/simple_animal/pet/cat/Runtime,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "cDP" = (/obj/structure/table/glass,/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},/obj/item/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/pen,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"cDQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"cDQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/landmark/start{name = "Scientist"},/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/storage) "cDR" = (/obj/machinery/door/airlock/external{req_access_txt = "13"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cDS" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/power/apc{dir = 4; name = "CMO's Office APC"; pixel_x = 26; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "cDT" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cDU" = (/turf/simulated/wall,/area/medical/medbay3{name = "Medbay Aft"}) "cDV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Chemistry"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) "cDW" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/medical/cryo) -"cDX" = (/obj/structure/closet/secure_closet/medical1{pixel_x = -3},/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/medical/cryo) +"cDX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/landmark{name = "blobstart"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cDY" = (/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/medical/glass{id_tag = "CloningDoor"; name = "Cloning Lab"; req_access_txt = "0"; req_one_access_txt = "5"},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/genetics_cloning) "cDZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/genetics_cloning) -"cEa" = (/obj/machinery/power/apc{dir = 1; name = "Cryogenics APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/item/reagent_containers/glass/beaker/cryoxadone{pixel_x = 5; pixel_y = 9},/obj/structure/table/glass,/obj/item/reagent_containers/glass/beaker/cryoxadone{pixel_x = 6; pixel_y = 2},/obj/item/reagent_containers/syringe/epinephrine{pixel_x = 3; pixel_y = -2},/obj/item/reagent_containers/dropper,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) -"cEb" = (/obj/machinery/atmospherics/unary/cryo_cell,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/medical/cryo) -"cEc" = (/obj/structure/table/reinforced,/obj/item/wrench,/obj/item/crowbar,/obj/machinery/camera{c_tag = "Medbay Cryo"; dir = 1; network = list("SS13","Medbay")},/obj/item/screwdriver{pixel_y = 6},/obj/item/clothing/accessory/stethoscope,/obj/machinery/firealarm{dir = 4; pixel_x = 28; pixel_y = 5},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) +"cEa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cEb" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cEc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/medical/cryo) "cEd" = (/obj/item/clothing/gloves/color/latex,/obj/item/clothing/gloves/color/latex,/obj/item/storage/box/disks{pixel_x = 2; pixel_y = 2},/obj/structure/table/glass,/obj/structure/noticeboard{desc = "A board for pinning important notices upon."; name = "notice board"; pixel_x = -32; pixel_y = 32},/obj/machinery/requests_console{department = "Genetics"; departmentType = 0; name = "Genetics Requests Console"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) "cEe" = (/obj/item/storage/box/monkeycubes,/obj/structure/table/glass,/obj/item/storage/box/monkeycubes/farwacubes{pixel_y = -2},/obj/item/storage/box/monkeycubes/neaeracubes{pixel_x = 2},/obj/item/storage/box/monkeycubes/stokcubes{pixel_x = -2},/obj/item/storage/box/monkeycubes/wolpincubes{pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/genetics) "cEf" = (/obj/item/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/pen{pixel_x = -3; pixel_y = 5},/obj/structure/table/reinforced,/obj/item/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/item/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/item/paper/monitorkey,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) @@ -6985,34 +6985,34 @@ "cEq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel,/area/assembly/chargebay) "cEr" = (/turf/simulated/floor/bluegrid,/area/assembly/chargebay) "cEs" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/effect/landmark/start{name = "Roboticist"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) -"cEt" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) -"cEu" = (/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cEt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/cryo) +"cEu" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/medical/cryo) "cEv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cEw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cEx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cEy" = (/obj/structure/sign/biohazard,/turf/simulated/wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cEz" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cEA" = (/obj/structure/closet/secure_closet/scientist,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cEB" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/unary/cold_sink/freezer,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cEC" = (/obj/item/radio/intercom{pixel_y = 25},/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cED" = (/obj/machinery/atmospherics/unary/portables_connector,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cEE" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/camera{c_tag = "Toxins - Lab"; dir = 2; network = list("SS13","RD")},/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cEF" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/structure/window/reinforced{dir = 8},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cEG" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cEH" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/structure/window/reinforced{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cEz" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/cryo) +"cEA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/storage) +"cEB" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cEC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible{dir = 6; level = 1},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/medical/cryo) +"cED" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/cryo) +"cEE" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/medical/cryo) +"cEF" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cEG" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cEH" = (/obj/item/cigbutt,/obj/machinery/light_switch{pixel_y = -23},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/toxins/storage) "cEI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cEJ" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cEJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/toxins/storage) "cEK" = (/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cEL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cEL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cEM" = (/obj/machinery/door/airlock/research{name = "Toxins Space Access"; req_access_txt = "8"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "cEN" = (/obj/structure/rack,/obj/item/tank/air,/obj/item/wrench,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/aft{name = "Aft Maintenance"}) "cEO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) -"cEP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/medical/cryo) +"cEP" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/medical/cryo) "cEQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cER" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) -"cES" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/medical/cryo) +"cER" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/cryo) +"cES" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/medical/cryo) "cET" = (/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plasteel,/area/medical/cryo) -"cEU" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) +"cEU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/cryo) "cEV" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/genetics_cloning) "cEW" = (/obj/machinery/computer/cloning,/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/genetics_cloning) "cEX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) @@ -7033,14 +7033,14 @@ "cFm" = (/obj/machinery/door_control{dir = 2; id = "Skynet_launch"; name = "Mech Bay Door Control"; pixel_x = -26; pixel_y = 6},/obj/machinery/light_switch{pixel_x = -23; pixel_y = -2},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/assembly/chargebay) "cFn" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/assembly/chargebay) "cFo" = (/obj/machinery/computer/mech_bay_power_console,/obj/item/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"},/area/assembly/chargebay) -"cFp" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/item/folder/white,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cFp" = (/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/machinery/light/small{dir = 1},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cFq" = (/obj/machinery/door/window/westleft{base_state = "right"; dir = 1; icon_state = "right"; name = "door"; req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) -"cFr" = (/obj/structure/table/reinforced,/obj/machinery/magnetic_controller{autolink = 1; pixel_y = 3},/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/clothing/ears/earmuffs,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cFr" = (/obj/machinery/vending/medical,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/cryo) "cFs" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "cFt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cFu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "cFv" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/virology) -"cFw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cFw" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/light_switch{pixel_x = 0; pixel_y = -24},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/medical/cryo) "cFx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cFy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/visible{dir = 5},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cFz" = (/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -7049,7 +7049,7 @@ "cFC" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 5},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cFD" = (/obj/machinery/atmospherics/trinary/filter{density = 0; dir = 8; req_access = "0"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cFE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cFF" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cFF" = (/obj/machinery/light,/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 1},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/medical/cryo) "cFG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "8;12"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cFH" = (/turf/simulated/wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cFI" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/machinery/camera{c_tag = "Toxins - Launch Area"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -7066,9 +7066,9 @@ "cFT" = (/obj/structure/rack,/obj/item/clothing/glasses/sunglasses,/obj/item/flashlight/pen{pixel_x = 0},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cFU" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/cryo) "cFV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) -"cFW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible{dir = 6; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/medical/cryo) -"cFX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) -"cFY" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/medical/cryo) +"cFW" = (/obj/structure/table,/obj/item/roller,/obj/item/reagent_containers/spray/cleaner,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/cryo) +"cFX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cFY" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) "cFZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/floor/plasteel,/area/medical/cryo) "cGa" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/genetics_cloning) "cGb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics_cloning) @@ -7093,15 +7093,15 @@ "cGu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/assembly/chargebay) "cGv" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/assembly/chargebay) "cGw" = (/obj/machinery/power/apc{dir = 4; name = "Mech Bay APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/assembly/chargebay) -"cGx" = (/obj/structure/rack,/obj/item/target,/obj/item/target,/obj/item/target/alien,/obj/item/target/alien,/obj/item/target/alien,/obj/item/target/syndicate,/obj/item/target/syndicate,/obj/item/target/syndicate,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light_switch{pixel_x = -25},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) -"cGy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) -"cGz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cGx" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/light_switch{pixel_y = 28},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cGy" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/unary/cold_sink/freezer,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cGz" = (/obj/structure/closet/secure_closet/scientist,/obj/structure/window/reinforced{dir = 4},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cGA" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Research Testing Range"; req_access_txt = "0"; req_one_access_txt = "7;47;29"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "purplefull"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) "cGB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cGC" = (/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"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cGD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cGE" = (/obj/machinery/body_scanconsole,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) -"cGF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cGF" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cGG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cGH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cGI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -7112,15 +7112,15 @@ "cGN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cGO" = (/obj/machinery/bodyscanner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cGP" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cGQ" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cGQ" = (/obj/item/radio/intercom{pixel_y = 25},/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cGR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cGS" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cGS" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/structure/window/reinforced{dir = 8},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cGT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cGU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/item/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 22},/obj/machinery/light/small{dir = 8},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cGV" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cGW" = (/obj/structure/stool/bed/chair{dir = 4},/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},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cGU" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/camera{c_tag = "Toxins - Lab"; dir = 2; network = list("SS13","RD")},/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cGV" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/structure/window/reinforced{dir = 4},/obj/machinery/portable_atmospherics/canister,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cGW" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/light{dir = 1},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cGX" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/medical/virology) -"cGY" = (/obj/structure/window/reinforced,/obj/item/target,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/toxins/test_area) +"cGY" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/portable_atmospherics/scrubber,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cGZ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cHa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical/glass{id_tag = ""; name = "Staff Room"; req_access_txt = "5"; req_one_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbreak) "cHb" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) @@ -7139,46 +7139,46 @@ "cHo" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/chargebay) "cHp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/chargebay) "cHq" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/chargebay) -"cHr" = (/obj/structure/table,/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/item/clothing/glasses/science,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) -"cHs" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door_control{id = "researchrangeshutters"; name = "Blast Door Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "0"},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) -"cHt" = (/obj/item/gun/energy/laser/practice,/obj/machinery/power/apc{dir = 2; name = "Research Firing Range APC"; pixel_x = 0; pixel_y = -28},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cHr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cHs" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/item/folder/white,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cHt" = (/obj/structure/table/reinforced,/obj/machinery/magnetic_controller{autolink = 1; pixel_y = 3},/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/clothing/ears/earmuffs,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) "cHu" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/medical/virology) "cHv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "cHw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cHx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "cHy" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) -"cHz" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cHz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHA" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cHB" = (/obj/item/assembly/prox_sensor{pixel_x = -4; pixel_y = 1},/obj/item/assembly/prox_sensor{pixel_x = 8; pixel_y = 9},/obj/item/assembly/prox_sensor{pixel_x = 9; pixel_y = -2},/obj/item/assembly/prox_sensor{pixel_x = 0; pixel_y = 2},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cHC" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cHD" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/medical/cryo) +"cHB" = (/obj/machinery/portable_atmospherics/pump,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cHC" = (/obj/structure/rack,/obj/item/target,/obj/item/target,/obj/item/target/alien,/obj/item/target/alien,/obj/item/target/alien,/obj/item/target/syndicate,/obj/item/target/syndicate,/obj/item/target/syndicate,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light_switch{pixel_x = -25},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cHD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) "cHE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHF" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cHK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) -"cHL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cHK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cHL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cHN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cHN" = (/obj/structure/window/reinforced,/obj/machinery/portable_atmospherics/scrubber,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHO" = (/obj/machinery/door/airlock/research{name = "Toxins Launch Room"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cHP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cHQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cHR" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cHS" = (/obj/machinery/light/small,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cHT" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/driver_button{dir = 2; id_tag = "toxinsdriver"; pixel_x = 24; pixel_y = -24},/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},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cHP" = (/obj/effect/landmark{name = "blobstart"},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cHQ" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cHR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/item/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 22},/obj/machinery/light/small{dir = 8},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cHS" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cHT" = (/obj/structure/stool/bed/chair{dir = 4},/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/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHU" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'BOMB RANGE"; name = "BOMB RANGE"},/turf/simulated/wall,/area/toxins/test_area) -"cHV" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plating/airless{dir = 9; icon_state = "warnplate"},/area/toxins/test_area) -"cHW" = (/obj/item/flashlight/lamp,/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/toxins/test_area) -"cHX" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plating/airless{dir = 5; icon_state = "warnplate"},/area/toxins/test_area) +"cHV" = (/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cHW" = (/obj/structure/window/reinforced,/obj/item/target,/obj/effect/decal/warning_stripes/north,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating/airless,/area/toxins/test_area) +"cHX" = (/obj/structure/stool/bed/chair,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating/airless,/area/toxins/test_area) "cHY" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cHZ" = (/turf/simulated/wall/r_wall,/area/medical/virology) "cIa" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/medical/virology) "cIb" = (/obj/item/cigbutt,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cIc" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/medical/cryo) +"cIc" = (/obj/structure/stool/bed/chair,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating/airless,/area/toxins/test_area) "cId" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/medical/cryo) -"cIe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) +"cIe" = (/obj/structure/table,/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/item/clothing/glasses/science,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) "cIf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics_cloning) "cIg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research/glass{name = "Genetics Lab"; req_access_txt = "5;9"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/genetics_cloning) "cIh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/genetics_cloning) @@ -7200,23 +7200,23 @@ "cIx" = (/turf/simulated/wall/r_wall,/area/assembly/robotics) "cIy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cIz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"cIA" = (/obj/structure/closet/bombcloset,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cIB" = (/obj/item/assembly/signaler{pixel_x = 0; pixel_y = 8},/obj/item/assembly/signaler{pixel_x = -8; pixel_y = 5},/obj/item/assembly/signaler{pixel_x = 6; pixel_y = 5},/obj/item/assembly/signaler{pixel_x = -2; pixel_y = -2},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cIA" = (/obj/item/gun/energy/laser/practice,/obj/machinery/power/apc{dir = 2; name = "Research Firing Range APC"; pixel_x = 0; pixel_y = -28},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) +"cIB" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door_control{id = "researchrangeshutters"; name = "Blast Door Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "0"},/obj/machinery/light,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) "cIC" = (/obj/item/transfer_valve{pixel_x = -5},/obj/item/transfer_valve{pixel_x = -5},/obj/item/transfer_valve{pixel_x = 0},/obj/item/transfer_valve{pixel_x = 0},/obj/item/transfer_valve{pixel_x = 5},/obj/item/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,/obj/machinery/light,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cID" = (/obj/item/assembly/timer{pixel_x = 5; pixel_y = 4},/obj/item/assembly/timer{pixel_x = -4; pixel_y = 2},/obj/item/assembly/timer{pixel_x = 6; pixel_y = -4},/obj/item/assembly/timer{pixel_x = 0; pixel_y = 0},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cIE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/structure/dispenser,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cIF" = (/obj/machinery/disposal{pixel_x = -2; pixel_y = -2},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cID" = (/obj/item/assembly/timer{pixel_x = 5; pixel_y = 4},/obj/item/assembly/timer{pixel_x = -4; pixel_y = 2},/obj/item/assembly/timer{pixel_x = 6; pixel_y = -4},/obj/item/assembly/timer{pixel_x = 0; pixel_y = 0},/obj/structure/table/reinforced,/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cIE" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cIF" = (/obj/item/assembly/prox_sensor{pixel_x = -4; pixel_y = 1},/obj/item/assembly/prox_sensor{pixel_x = 8; pixel_y = 9},/obj/item/assembly/prox_sensor{pixel_x = 9; pixel_y = -2},/obj/item/assembly/prox_sensor{pixel_x = 0; pixel_y = 2},/obj/structure/table/reinforced,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cIG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cIH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cII" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cIJ" = (/obj/structure/table,/obj/item/assembly/igniter{pixel_x = -5; pixel_y = 3},/obj/item/assembly/igniter{pixel_x = 5; pixel_y = -4},/obj/item/assembly/igniter{pixel_x = 2; pixel_y = 6},/obj/item/assembly/igniter{pixel_x = 2; pixel_y = -1},/obj/machinery/power/apc{dir = 4; name = "Toxins Lab APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cIK" = (/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cIJ" = (/obj/structure/table/reinforced,/obj/item/wrench,/obj/item/screwdriver{pixel_y = 10},/obj/item/storage/firstaid/toxin,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cIK" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Scientist"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cIL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cIM" = (/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cIM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cIN" = (/obj/machinery/door/window/southleft{name = "Mass Driver Door"; req_access_txt = "7"},/turf/simulated/floor/plasteel{icon_state = "loadingarea"; tag = "loading"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cIO" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating/airless{dir = 9; icon_state = "warnplate"},/area/toxins/test_area) +"cIO" = (/obj/item/flashlight/lamp,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating/airless,/area/toxins/test_area) "cIP" = (/turf/simulated/floor/plating/airless,/area/toxins/test_area) -"cIQ" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless{dir = 5; icon_state = "warnplate"},/area/toxins/test_area) +"cIQ" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating/airless,/area/toxins/test_area) "cIR" = (/mob/living/carbon/human/monkey,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology) "cIS" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology) "cIT" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology) @@ -7228,10 +7228,10 @@ "cIZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) "cJa" = (/obj/item/cigbutt,/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) "cJb" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; level = 1},/obj/item/radio/intercom{dir = 4; name = "station intercom (General)"; pixel_x = 28},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) -"cJc" = (/obj/item/radio/intercom{broadcasting = 1; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/unary/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/cryo) -"cJd" = (/obj/machinery/vending/medical,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) -"cJe" = (/obj/machinery/light,/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/medical/cryo) -"cJf" = (/obj/structure/table,/obj/item/roller,/obj/item/reagent_containers/spray/cleaner,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) +"cJc" = (/obj/structure/sink{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/north,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) +"cJd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cJe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cJf" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cJg" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/aft) "cJh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/genetics_cloning) "cJi" = (/obj/structure/filingcabinet/chestdrawer{pixel_x = -2; pixel_y = 2},/obj/machinery/door_control{dir = 2; id = "robotics"; name = "Shutter Control"; pixel_x = -26; pixel_y = 26},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/robotics) @@ -7246,18 +7246,18 @@ "cJr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cJs" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cJt" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (EAST)"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cJu" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cJv" = (/obj/structure/table,/obj/item/crowbar,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/wrench,/obj/item/clothing/mask/gas,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cJw" = (/obj/structure/table,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/item/multitool{pixel_x = 3},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cJu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cJv" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/driver_button{dir = 2; id_tag = "toxinsdriver"; pixel_x = 24; pixel_y = -24},/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/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cJw" = (/obj/machinery/light/small,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cJx" = (/obj/machinery/mass_driver{dir = 4; id_tag = "toxinsdriver"},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cJy" = (/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/machinery/light/small,/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cJz" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cJz" = (/obj/structure/closet/bombcloset,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cJA" = (/obj/machinery/door/poddoor{id_tag = "toxinsdriver"; name = "Toxins Launcher Bay Door"; protected = 0},/obj/structure/fans/tiny,/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cJB" = (/turf/simulated/floor/plating/airless{dir = 8; icon_state = "warnplate"},/area/space) -"cJC" = (/turf/simulated/floor/plating/airless{dir = 8; icon_state = "warnplate"},/area/toxins/test_area) -"cJD" = (/turf/simulated/floor/plating/airless{dir = 4; icon_state = "warnplate"},/area/toxins/test_area) +"cJB" = (/obj/item/assembly/signaler{pixel_x = 0; pixel_y = 8},/obj/item/assembly/signaler{pixel_x = -8; pixel_y = 5},/obj/item/assembly/signaler{pixel_x = 6; pixel_y = 5},/obj/item/assembly/signaler{pixel_x = -2; pixel_y = -2},/obj/structure/table/reinforced,/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cJC" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating/airless,/area/toxins/test_area) +"cJD" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating/airless,/area/toxins/test_area) "cJE" = (/obj/item/radio/beacon,/turf/simulated/floor/plating/airless,/area/toxins/test_area) -"cJF" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/plantgenes,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hydroponics) +"cJF" = (/obj/machinery/disposal{pixel_x = -2; pixel_y = -2},/obj/structure/disposalpipe/trunk{dir = 1},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cJG" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/toxins/test_area) "cJH" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology) "cJI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/mob/living/carbon/human/monkey,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology) @@ -7295,10 +7295,10 @@ "cKo" = (/obj/structure/closet/wardrobe/black,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/genetics) "cKp" = (/turf/simulated/floor/plasteel{icon_state = "purplefull"},/area/assembly/robotics) "cKq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = -26},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "yellow"},/area/hallway/primary/aft) -"cKr" = (/obj/effect/landmark/start{name = "Roboticist"},/obj/structure/stool/bed/chair/office/light{dir = 8},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/assembly/robotics) -"cKs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/assembly/robotics) -"cKt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/assembly/robotics) -"cKu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/assembly/robotics) +"cKr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/structure/dispenser,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cKs" = (/obj/structure/table,/obj/item/assembly/igniter{pixel_x = -5; pixel_y = 3},/obj/item/assembly/igniter{pixel_x = 5; pixel_y = -4},/obj/item/assembly/igniter{pixel_x = 2; pixel_y = 6},/obj/item/assembly/igniter{pixel_x = 2; pixel_y = -1},/obj/machinery/power/apc{dir = 4; name = "Toxins Lab APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 1},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cKt" = (/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cKu" = (/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cKv" = (/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/flash,/obj/item/flash,/obj/item/flash,/obj/item/flash,/obj/item/flash,/obj/item/flash,/obj/item/flash,/obj/machinery/ai_status_display{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/robotics) "cKw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "cKx" = (/obj/structure/lattice,/turf/space,/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -7306,15 +7306,15 @@ "cKz" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/blood/empty,/obj/item/reagent_containers/blood/empty,/obj/item/reagent_containers/blood/empty,/obj/item/reagent_containers/blood/empty,/obj/item/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cKA" = (/obj/machinery/optable,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cKB" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cKC" = (/obj/machinery/light,/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hydroponics) +"cKC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/generic,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cKD" = (/obj/machinery/computer/operating,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) -"cKE" = (/obj/machinery/atmospherics/binary/valve{dir = 4; name = "manual outlet valve"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cKF" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cKE" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cKF" = (/obj/structure/table,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/item/multitool{pixel_x = 3},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cKG" = (/obj/structure/closet/wardrobe/grey,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cKH" = (/obj/item/circular_saw,/obj/item/FixOVein,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cKI" = (/turf/simulated/wall,/area/space) -"cKJ" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating/airless{dir = 10; icon_state = "warnplate"},/area/toxins/test_area) -"cKK" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless{dir = 6; icon_state = "warnplate"},/area/toxins/test_area) +"cKJ" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating/airless,/area/toxins/test_area) +"cKK" = (/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. An external light is attached to the top."; dir = 8; invuln = 1; light = null; luminosity = 3; name = "Hardened Bomb-Test Camera"; network = list("Toxins","Research","SS13"); use_power = 0},/obj/item/target/alien{anchored = 1},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating/airless,/area/toxins/test_area) "cKL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cKM" = (/turf/simulated/wall,/area/medical/virology) "cKN" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/toxins/server{name = "\improper Research Division Server Room"}) @@ -7341,12 +7341,12 @@ "cLi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cLj" = (/obj/item/retractor,/obj/item/cautery,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cLk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay3) -"cLl" = (/obj/structure/noticeboard{dir = 4; pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/assembly/robotics) +"cLl" = (/obj/structure/table,/obj/item/crowbar,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/wrench,/obj/item/clothing/mask/gas,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cLm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/assembly/robotics) "cLn" = (/obj/effect/landmark/start{name = "Roboticist"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/robotics) "cLo" = (/turf/simulated/floor/plasteel,/area/assembly/robotics) "cLp" = (/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/robotics) -"cLq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/assembly/robotics) +"cLq" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cLr" = (/obj/machinery/firealarm{dir = 4; pixel_x = 28; pixel_y = 5},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table,/obj/item/wrench,/obj/item/screwdriver{pixel_y = 10},/obj/item/multitool{pixel_x = 3},/obj/item/stack/cable_coil,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/robotics) "cLs" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/camera{c_tag = "Research Division Hallway - Robotics"; dir = 4; network = list("SS13","RD")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cLt" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -7355,13 +7355,13 @@ "cLw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay3) "cLx" = (/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume{dir = 2; frequency = 1449; id_tag = "tox_airlock_pump"},/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cLy" = (/obj/machinery/door/airlock/research/glass{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "tox_airlock_interior"; locked = 1; name = "Mixing Room Interior Airlock"; req_access_txt = "8"},/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cLz" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cLA" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera{c_tag = "Toxins - Mixing Area"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cLz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cLA" = (/obj/effect/landmark/start{name = "Roboticist"},/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/assembly/robotics) "cLB" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cLC" = (/obj/structure/closet,/obj/item/assembly/prox_sensor{pixel_x = 2; pixel_y = -2},/obj/item/assembly/signaler{pixel_x = -2; pixel_y = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cLD" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plating/airless{dir = 10; icon_state = "warnplate"},/area/toxins/test_area) -"cLE" = (/obj/item/flashlight/lamp,/turf/simulated/floor/plating/airless{dir = 2; icon_state = "warnplate"},/area/toxins/test_area) -"cLF" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plating/airless{dir = 6; icon_state = "warnplate"},/area/toxins/test_area) +"cLD" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating/airless,/area/toxins/test_area) +"cLE" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating/airless,/area/toxins/test_area) +"cLF" = (/obj/structure/stool/bed/chair{dir = 1},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating/airless,/area/toxins/test_area) "cLG" = (/obj/item/radio/intercom{pixel_x = -28; pixel_y = 0},/obj/structure/table/glass,/obj/item/hand_labeler,/obj/item/radio/headset/headset_med,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/camera{c_tag = "Virology - Cells"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitegreen"},/area/medical/virology) "cLH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "cLI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology) @@ -7375,9 +7375,9 @@ "cLQ" = (/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/computer/pandemic,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "cLR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/medical/virology) "cLS" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cLT" = (/obj/structure/sign/biohazard{pixel_y = 32},/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) -"cLU" = (/obj/structure/sink{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/virology) -"cLV" = (/obj/structure/sign/securearea{pixel_x = 0; pixel_y = 32},/obj/machinery/shower{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/medical/virology) +"cLT" = (/obj/structure/sign/biohazard{pixel_y = 32},/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/northwest,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) +"cLU" = (/obj/structure/sign/securearea{pixel_x = 0; pixel_y = 32},/obj/machinery/shower{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/warning_stripes/northeast,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) +"cLV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/west,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "cLW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay3) "cLX" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "cLY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay3) @@ -7391,22 +7391,22 @@ "cMg" = (/obj/structure/closet,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/aft) "cMh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cMi" = (/obj/machinery/computer/rdconsole/robotics,/obj/machinery/requests_console{department = "Robotics"; departmentType = 2; name = "Robotics RC"; pixel_x = -31; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/robotics) -"cMj" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/assembly/robotics) +"cMj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/assembly/robotics) "cMk" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/assembly/robotics) "cMl" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/assembly/robotics) -"cMm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/assembly/robotics) +"cMm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/assembly/robotics) "cMn" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/robotics) "cMo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cMp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cMq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "cMr" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/machinery/requests_console{department = "Morgue"; departmentType = 5; name = "Morgue Requests Console"; pixel_x = 0; pixel_y = 30},/obj/item/storage/box/bodybags{pixel_x = 5; pixel_y = 5},/obj/item/storage/box/bodybags,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cMs" = (/obj/machinery/power/apc{dir = 1; name = "Genetics Lab APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/item/folder/white,/obj/item/folder/white,/obj/structure/table/glass,/obj/item/radio/headset/headset_medsci,/obj/item/flashlight/pen,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) -"cMt" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cMu" = (/obj/machinery/atmospherics/binary/valve{dir = 4; name = "manual inlet valve"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cMv" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cMt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/assembly/robotics) +"cMu" = (/obj/machinery/atmospherics/binary/valve{dir = 4; name = "manual outlet valve"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cMv" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1449; id_tag = "tox_airlock_control"; name = "Toxin Mixing Console"; pixel_x = -24; pixel_y = 0; req_access_txt = "0"; tag_airpump = "tox_airlock_apump"; tag_chamber_sensor = "tox_airlock_sensor"; tag_exterior_door = "tox_airlock_exterior"; tag_exterior_sensor = null; tag_interior_door = "tox_airlock_interior"},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cMw" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/light/small{dir = 1},/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cMx" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cMy" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/item/target,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/toxins/test_area) +"cMy" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cMz" = (/obj/structure/table/glass,/obj/item/folder/white,/obj/item/folder/white,/obj/item/pen/red,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"},/area/medical/virology) "cMA" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/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/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "cMB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) @@ -7423,8 +7423,8 @@ "cMM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "cMN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "cMO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "virology_airlock_interior"; locked = 1; name = "Virology Interior Airlock"; req_access_txt = "39"},/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1449; id_tag = "virology_airlock_control"; name = "Virology Access Controller"; pixel_y = 25; req_access_txt = "39"; tag_exterior_door = "virology_airlock_exterior"; tag_interior_door = "virology_airlock_interior"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1449; master_tag = "virology_airlock_control"; pixel_x = 10; pixel_y = 25; req_access_txt = "39"},/turf/simulated/floor/plasteel{icon_state = "whitegreenfull"},/area/medical/virology) -"cMP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) -"cMQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) +"cMP" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/east,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) +"cMQ" = (/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/decal/warning_stripes/south,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "cMR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{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/access_button{command = "cycle_exterior"; frequency = 1449; master_tag = "virology_airlock_control"; pixel_x = 10; pixel_y = 25; req_access = null; req_access_txt = "39"},/turf/simulated/floor/plasteel{icon_state = "whitegreenfull"},/area/medical/virology) "cMS" = (/turf/simulated/wall,/area/hallway/primary/aft) "cMT" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft) @@ -7433,14 +7433,14 @@ "cMW" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cMX" = (/obj/item/surgicaldrill,/obj/item/stack/medical/bruise_pack/advanced,/obj/machinery/camera{c_tag = "Medbay Surgery 1 South"; dir = 1; network = list("SS13"); pixel_x = 0},/obj/machinery/light,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cMY" = (/obj/structure/disposalpipe/segment,/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cMZ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cMZ" = (/obj/structure/noticeboard{dir = 4; pixel_x = -27; pixel_y = 0},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/assembly/robotics) "cNa" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/obj/item/storage/backpack/duffel/medical,/obj/item/flashlight/pen{pixel_x = 4; pixel_y = 3},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/aft{name = "Aft Maintenance"}) "cNb" = (/obj/structure/table,/obj/item/retractor,/obj/item/hemostat,/obj/item/healthanalyzer,/obj/item/clothing/glasses/eyepatch,/obj/item/reagent_containers/food/drinks/bottle/vodka{pixel_x = 3; pixel_y = 2},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/aft{name = "Aft Maintenance"}) "cNc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cNd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cNe" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/r_n_d/circuit_imprinter,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/robotics) "cNf" = (/obj/effect/landmark/start{name = "Roboticist"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/robotics) -"cNg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/assembly/robotics) +"cNg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/assembly/robotics) "cNh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/rack,/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/healthanalyzer{pixel_x = 4; pixel_y = -4},/obj/item/healthanalyzer{pixel_x = 4; pixel_y = -4},/obj/item/healthanalyzer{pixel_x = 4; pixel_y = -4},/obj/item/radio/headset/headset_sci{pixel_x = -3},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/robotics) "cNi" = (/obj/item/hemostat,/obj/item/scalpel,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cNj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) @@ -7450,7 +7450,7 @@ "cNn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/server{name = "\improper Research Division Server Room"}) "cNo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/wall/r_wall,/area/toxins/server{name = "\improper Research Division Server Room"}) "cNp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) -"cNq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "toxins_blastdoor"; name = "biohazard containment shutters"},/obj/machinery/door/airlock/maintenance{name = "Toxins Lab Maintenance"; req_access_txt = "8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cNq" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera{c_tag = "Toxins - Mixing Area"; dir = 8; network = list("SS13","RD")},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cNr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cNs" = (/obj/item/bonegel,/obj/item/bonesetter,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cNt" = (/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/port) @@ -7465,9 +7465,9 @@ "cNC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "whitegreen"},/area/medical/virology) "cND" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "whitegreen"},/area/medical/virology) "cNE" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{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},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitegreen"},/area/medical/virology) -"cNF" = (/obj/structure/closet/emcloset,/obj/item/radio/intercom{pixel_x = -28; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) -"cNG" = (/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},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) -"cNH" = (/obj/structure/closet/l3closet,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) +"cNF" = (/obj/structure/closet/emcloset,/obj/item/radio/intercom{pixel_x = -28; pixel_y = 0},/obj/effect/decal/warning_stripes/southwest,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) +"cNG" = (/obj/structure/closet/l3closet,/obj/effect/decal/warning_stripes/southeast,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) +"cNH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cNI" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/medbay3) "cNJ" = (/obj/machinery/camera{c_tag = "Medbay Foyer"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) "cNK" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) @@ -7485,10 +7485,10 @@ "cNW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cNX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cNY" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/robotics) -"cNZ" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/assembly/robotics) -"cOa" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/assembly/robotics) -"cOb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/assembly/robotics) -"cOc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/assembly/robotics) +"cNZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cOa" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/assembly/robotics) +"cOb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/assembly/robotics) +"cOc" = (/obj/machinery/atmospherics/binary/valve{dir = 4; name = "manual inlet valve"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cOd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/robotics) "cOe" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Robotics Lab"; req_access_txt = "29"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "purplefull"},/area/assembly/robotics) "cOf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) @@ -7503,7 +7503,7 @@ "cOo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 140; on = 1; pressure_checks = 0},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server{name = "\improper Research Division Server Room"}) "cOp" = (/turf/simulated/wall/r_wall,/area/toxins/server{name = "\improper Research Division Server Room"}) "cOq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay3) -"cOr" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"cOr" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cOs" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/sign/biohazard{pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cOt" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cOu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -7550,8 +7550,8 @@ "cPj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cPk" = (/obj/machinery/photocopier,/obj/item/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cPl" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/item/paper_bin{pixel_y = -1},/obj/item/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cPm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"cPn" = (/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/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cPm" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/portable_atmospherics/canister,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cPn" = (/obj/structure/stool/bed/chair{dir = 1},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating/airless,/area/toxins/test_area) "cPo" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "cPp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/bedsheet/medical,/obj/structure/stool/bed,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology) "cPq" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology) @@ -7568,7 +7568,7 @@ "cPB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) "cPC" = (/obj/structure/table,/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("SS13","RD")},/obj/machinery/photocopier/faxmachine{department = "Research Director's Office"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "cPD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3) -"cPE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cPE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/assembly/robotics) "cPF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Medical Surplus Storeroom"; req_access_txt = "12"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cPG" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/screwdriver{pixel_y = 6},/obj/item/crowbar,/obj/item/storage/pill_bottle,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/aft{name = "Aft Maintenance"}) "cPH" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -7596,11 +7596,11 @@ "cQd" = (/obj/machinery/r_n_d/server/core,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server{name = "\improper Research Division Server Room"}) "cQe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 120; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server{name = "\improper Research Division Server Room"}) "cQf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Isolation B"; req_access_txt = "5"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patient_b) -"cQg" = (/obj/structure/rack,/obj/effect/landmark/costume,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cQh" = (/obj/effect/decal/cleanable/dirt,/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cQi" = (/obj/structure/closet,/obj/item/clothing/glasses/science,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cQg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/poddoor/shutters/preopen{dir = 2; id_tag = "toxins_blastdoor"; name = "biohazard containment shutters"},/obj/machinery/door/airlock/maintenance{name = "Toxins Lab Maintenance"; req_access_txt = "8"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cQh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cQi" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cQj" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cQk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cQk" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/assembly/robotics) "cQl" = (/obj/machinery/light/small{dir = 4},/obj/structure/closet,/obj/item/flashlight,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cQm" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology) "cQn" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology) @@ -7611,30 +7611,31 @@ "cQs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "cQt" = (/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/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "cQu" = (/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/table/glass,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitegreen"},/area/medical/virology) -"cQv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cQv" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/assembly/robotics) +"cQw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/assembly/robotics) "cQx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cQy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cQz" = (/obj/structure/table,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cQA" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cQB" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cQC" = (/obj/structure/morgue,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cQD" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cQE" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cQF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cQG" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Departure Lounge APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cQH" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cQI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cQJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cQD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/assembly/robotics) +"cQE" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cQF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cQG" = (/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/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cQH" = (/obj/structure/rack,/obj/effect/landmark/costume,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cQI" = (/obj/structure/closet,/obj/item/clothing/glasses/science,/obj/effect/spawner/lootdrop/maintenance,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cQJ" = (/obj/effect/decal/cleanable/dirt,/obj/structure/reagent_dispensers/watertank,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cQK" = (/obj/machinery/door/poddoor/shutters/preopen{dir = 8; id_tag = "robotics"; name = "robotics lab shutters"},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/assembly/robotics) -"cQL" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cQM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cQN" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cQL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cQM" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cQN" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cQO" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 1; location = "Robotics"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/robotics) "cQP" = (/obj/machinery/door/airlock/maintenance{name = "Robotics Maintenance"; req_access_txt = "29"},/turf/simulated/floor/plating,/area/assembly/robotics) "cQQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/research{name = "Research Shuttle and Xenobiology"; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"cQR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cQR" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Departure Lounge APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cQS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{icon_state = "door_closed"; locked = 0; name = "Storage Room"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cQT" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"cQT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cQU" = (/obj/item/storage/box/lights/mixed,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cQV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cQW" = (/turf/simulated/wall/r_wall,/area/maintenance/starboardsolar) @@ -7651,15 +7652,15 @@ "cRh" = (/turf/simulated/wall,/area/chapel/office) "cRi" = (/obj/machinery/door/airlock/centcom{icon = 'icons/obj/doors/airlocks/station/maintenance.dmi'; overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'; name = "Crematorium Maintenance"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cRj" = (/obj/machinery/door/airlock/centcom{icon = 'icons/obj/doors/airlocks/station/maintenance.dmi'; overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'; name = "Chapel Office Maintenance"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cRk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"cRk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cRl" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cRm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cRn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cRn" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cRo" = (/obj/effect/decal/cleanable/dirt,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cRp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/twohanded/required/kirbyplants{tag = "icon-plant-11"; icon_state = "plant-11"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) -"cRq" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) +"cRq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atm{pixel_y = 32},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cRr" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cRs" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cRs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cRt" = (/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cRu" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cRv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -7668,12 +7669,12 @@ "cRy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cRz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cRA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cRB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cRB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cRC" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;7;47;29"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cRD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) +"cRD" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cRE" = (/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay3) -"cRF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"cRG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"cRF" = (/obj/item/flashlight/lamp,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating/airless,/area/toxins/test_area) +"cRG" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/item/target,/obj/effect/decal/warning_stripes/south,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating/airless,/area/toxins/test_area) "cRH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "7;12;47"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cRI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cRJ" = (/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{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) @@ -7681,10 +7682,10 @@ "cRL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay3) "cRM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay3) "cRN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cRO" = (/obj/structure/closet/crate,/obj/item/poster/random_official,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"cRP" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"cRO" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cRP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cRQ" = (/obj/machinery/power/apc{dir = 8; name = "Aft Starboard Solar APC"; pixel_x = -26; pixel_y = 3},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"cRR" = (/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/hidden/supply,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboardsolar) +"cRR" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cRS" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cRT" = (/obj/docking_port/stationary{dir = 2; dwidth = 2; height = 18; id = "skipjack_sw"; name = "southwest of SS13"; width = 19},/turf/space,/area/space) "cRU" = (/turf/simulated/wall,/area/medical/psych) @@ -7702,15 +7703,15 @@ "cSg" = (/obj/machinery/door/morgue{name = "Relic Closet"; req_access_txt = "22"},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/chapel/office) "cSh" = (/obj/structure/table/wood,/obj/item/spellbook/oneuse/smoke{name = "mysterious old book of "},/obj/item/reagent_containers/food/drinks/bottle/holywater{name = "flask of holy water"; pixel_x = -2; pixel_y = 2},/obj/item/nullrod{pixel_x = 4},/obj/item/organ/internal/heart,/obj/item/soulstone/anybody/chaplain,/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/chapel/office) "cSi" = (/obj/machinery/door/airlock/maintenance{name = "Chapel Maintenance Access "; req_access_txt = "0"; req_one_access_txt = "12;27"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cSj" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera{c_tag = "Departure Lounge - Port Fore"; dir = 4; network = list("SS13")},/obj/item/twohanded/required/kirbyplants{icon_state = "plant-24"; layer = 4.1; tag = "icon-plant-24"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cSj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cSk" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cSl" = (/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 2},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cSm" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cSn" = (/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cSl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 17},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cSm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cSn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cSo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cSp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cSq" = (/obj/machinery/light{dir = 4},/obj/machinery/camera{c_tag = "Departure Lounge - Starboard Fore"; dir = 8; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/item/twohanded/required/kirbyplants{icon_state = "plant-14"; layer = 4.1; tag = "icon-plant-14"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cSr" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Aft Maintenance APC"; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cSq" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cSr" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cSs" = (/obj/machinery/door/poddoor/preopen{id_tag = "xeno_blastdoor"; name = "biohazard containment door"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "cSt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor/preopen{id_tag = "xeno_blastdoor"; name = "biohazard containment door"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "cSu" = (/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/door/poddoor/preopen{id_tag = "xeno_blastdoor"; name = "biohazard containment door"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) @@ -7742,13 +7743,13 @@ "cSU" = (/obj/item/candle,/obj/machinery/light_switch{pixel_x = 6; pixel_y = 25},/obj/effect/decal/cleanable/cobweb2,/obj/structure/table/wood,/obj/machinery/door_control{id = "chapelescapeshutters"; name = "Side Windows Shutter Control"; pixel_x = -6; pixel_y = 25; req_access_txt = "0"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cSV" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cSW" = (/obj/structure/table,/obj/item/candle,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cSX" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cSY" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cSX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cSY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cSZ" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cTa" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cTa" = (/obj/machinery/space_heater,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cTb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cTd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cTd" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cTe" = (/obj/machinery/power/apc{dir = 4; name = "Morgue APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cTf" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/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/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -7759,14 +7760,14 @@ "cTl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Secure Lab"; req_access_txt = "47"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cTm" = (/obj/structure/sign/securearea,/turf/simulated/wall,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cTn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cTo" = (/obj/machinery/biogenerator,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cTp" = (/obj/structure/rack{layer = 2.8},/obj/item/seeds/wheat,/obj/item/seeds/watermelon,/obj/item/seeds/watermelon,/obj/item/seeds/grape,/obj/item/seeds/glowshroom,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cTq" = (/obj/item/plant_analyzer,/obj/item/cultivator,/obj/item/reagent_containers/glass/bucket,/obj/structure/rack{layer = 2.8},/obj/item/seeds/corn,/obj/item/seeds/cabbage,/obj/item/seeds/ambrosia,/obj/item/seeds/grass,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cTr" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/carrot,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cTs" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/glowshroom,/obj/item/seeds/corn,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"cTt" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/plant_analyzer,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cTo" = (/obj/structure/closet/crate,/obj/item/poster/random_official,/obj/effect/spawner/lootdrop/maintenance,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cTp" = (/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/hidden/supply,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) +"cTq" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera{c_tag = "Departure Lounge - Port Fore"; dir = 4; network = list("SS13")},/obj/item/twohanded/required/kirbyplants{icon_state = "plant-24"; layer = 4.1; tag = "icon-plant-24"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cTr" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cTs" = (/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cTt" = (/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTu" = (/obj/machinery/power/solar_control{id = "aftstarboard"; name = "Aft Starboard Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"cTv" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboardsolar) +"cTv" = (/obj/machinery/light{dir = 4},/obj/machinery/camera{c_tag = "Departure Lounge - Starboard Fore"; dir = 8; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/item/twohanded/required/kirbyplants{icon_state = "plant-14"; layer = 4.1; tag = "icon-plant-14"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTw" = (/obj/structure/table/reinforced,/obj/item/pen{pixel_x = -3; pixel_y = 5},/obj/item/folder/white,/obj/item/folder/white,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{dir = 8; id_tag = "robotics"; name = "robotics lab shutters"},/obj/machinery/door/window/eastright{dir = 4; name = "Robotics Desk"; req_access_txt = "29"},/turf/simulated/floor/plating,/area/assembly/robotics) "cTx" = (/obj/structure/disposaloutlet,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area/space) "cTy" = (/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) @@ -7784,16 +7785,16 @@ "cTK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/carpet,/area/chapel/main) "cTL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet,/area/chapel/main) "cTM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Chapel"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) -"cTN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cTO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cTN" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Aft Maintenance APC"; pixel_y = -24},/obj/structure/cable/yellow,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cTO" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Civilian"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTQ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cTR" = (/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/ppflowers,/obj/structure/flora/ausbushes/palebush,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/grass,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cTR" = (/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/ppflowers,/obj/structure/flora/ausbushes/palebush,/obj/structure/window/reinforced{dir = 5; max_integrity = 1e+007},/turf/simulated/floor/grass,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTS" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTT" = (/obj/machinery/computer/secure_data,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTU" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTV" = (/obj/structure/table,/obj/item/folder/red{pixel_x = 3},/obj/item/folder/white{pixel_x = -4; pixel_y = 2},/obj/item/restraints/handcuffs,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/radio/off,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cTW" = (/obj/structure/sign/vacuum{pixel_x = 32},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cTW" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTX" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cTY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cTZ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -7810,21 +7811,21 @@ "cUk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "cUl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "cUm" = (/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/camera{c_tag = "Chapel Office"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) -"cUn" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) +"cUn" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; max_integrity = 120; reinf = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) "cUo" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) "cUp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "cUq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "cUr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "cUs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/carpet,/area/chapel/main) "cUt" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Chapel"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) -"cUu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cUv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cUu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cUv" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cUw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cUx" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=10-Aft-Central"; location = "9.5-Escape2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cUy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cUz" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cUA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cUB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cUB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cUC" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security/glass{name = "Departure Lounge Security Post"; req_access_txt = "63"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cUD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cUE" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -7853,21 +7854,21 @@ "cVb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cVc" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cVd" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cVe" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cVf" = (/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/brflowers,/obj/structure/flora/ausbushes/sunnybush,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/grass,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cVg" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cVe" = (/obj/machinery/biogenerator,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cVf" = (/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/brflowers,/obj/structure/flora/ausbushes/sunnybush,/obj/structure/window/reinforced{dir = 5; max_integrity = 1e+007},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/grass,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cVg" = (/obj/item/plant_analyzer,/obj/item/cultivator,/obj/item/reagent_containers/glass/bucket,/obj/structure/rack{layer = 2.8},/obj/item/seeds/corn,/obj/item/seeds/cabbage,/obj/item/seeds/ambrosia,/obj/item/seeds/grass,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cVh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cVi" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cVj" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/sign/electricshock{pixel_x = 32},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cVj" = (/obj/structure/rack{layer = 2.8},/obj/item/seeds/wheat,/obj/item/seeds/watermelon,/obj/item/seeds/watermelon,/obj/item/seeds/grape,/obj/item/seeds/glowshroom,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cVk" = (/turf/simulated/wall,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cVl" = (/obj/structure/morgue,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cVm" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cVn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cVo" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/glowshroom,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"cVp" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/cultivator,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"cVq" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/ambrosia,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"cVr" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/watermelon,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"cVs" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/berry,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"cVo" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/carrot,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cVp" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/plant_analyzer,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cVq" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/glowshroom,/obj/item/seeds/corn,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cVr" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) +"cVs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cVt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cVu" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cVv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) @@ -7878,7 +7879,7 @@ "cVA" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) "cVB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cVC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cVD" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cVD" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cVE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cVF" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cVG" = (/turf/simulated/wall/r_wall,/area/toxins/xenobiology{name = "\improper Secure Lab"}) @@ -7899,17 +7900,17 @@ "cVV" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main) "cVW" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) "cVX" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) -"cVY" = (/obj/machinery/camera{c_tag = "Departure Lounge - Port Aft"; dir = 4; network = list("SS13")},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/item/twohanded/required/kirbyplants{icon_state = "plant-04"; layer = 4.1; tag = "icon-plant-04"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cVY" = (/obj/structure/sign/vacuum{pixel_x = 32},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cVZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cWa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cWb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cWb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cWc" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/bluegrid,/area/assembly/chargebay) -"cWd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cWd" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cWe" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9.5-Escape2"; location = "9-Escape"},/mob/living/simple_animal/bot/secbot{auto_patrol = 1; health = 35; maxHealth = 35; name = "Inspector Johnson"},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cWf" = (/obj/machinery/camera{c_tag = "Departure Lounge - Starboard Aft"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4},/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/item/twohanded/required/kirbyplants{icon_state = "plant-16"; layer = 4.1; tag = "icon-plant-16"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cWg" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cWh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cWi" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cWf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cWg" = (/obj/structure/closet/emcloset,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cWh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cWi" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cWj" = (/obj/structure/window/reinforced,/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "cWk" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Morgue"; opacity = 1; req_access_txt = "6"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cWl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) @@ -7927,16 +7928,16 @@ "cWx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) "cWy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) "cWz" = (/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main) -"cWA" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cWB" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cWC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cWD" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cWE" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cWA" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cWB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cWC" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) +"cWD" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cWE" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera{c_tag = "Secure Lab - Airlock"; dir = 8; network = list("SS13","RD")},/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cWF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cWG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cWH" = (/obj/machinery/light{dir = 4},/obj/structure/sign/science{name = "\improper ROBOTICS!"; pixel_x = 32},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 4; icon_state = "purplecorner"},/area/hallway/primary/aft) "cWI" = (/obj/effect/decal/cleanable/dirt,/obj/structure/rack{dir = 8; layer = 2.9},/obj/machinery/light/small{dir = 8},/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cWJ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboardsolar) +"cWJ" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cWK" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "cWL" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "cWM" = (/obj/machinery/door/window/eastleft{dir = 4; name = "Coffin Storage"; req_access_txt = "22"},/turf/simulated/floor/plating,/area/chapel/main) @@ -7946,7 +7947,7 @@ "cWQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cWR" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "cWS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"cWT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"cWT" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/sign/electricshock{pixel_x = 32},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cWU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3) "cWV" = (/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cWW" = (/obj/item/storage/bible,/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) @@ -7959,9 +7960,9 @@ "cXd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cXe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cXf" = (/obj/structure/sign/vacuum{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cXg" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cXh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cXi" = (/obj/structure/closet/l3closet/scientist,/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cXg" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cXh" = (/obj/structure/closet/l3closet/scientist,/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cXi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cXj" = (/obj/structure/closet/coffin,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/chapel/main) "cXk" = (/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Chapel - Funeral Parlour"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cXl" = (/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) @@ -7976,7 +7977,7 @@ "cXu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cXv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "xeno_airlock_interior"; locked = 1; name = "Secure Lab Internal Airlock"; req_access_txt = "55"},/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1449; id_tag = "xeno_airlock_control"; pixel_x = -25; pixel_y = -10; req_access_txt = "55"; tag_exterior_door = "xeno_airlock_exterior"; tag_interior_door = "xeno_airlock_interior"},/obj/machinery/access_button{command = "cycle_interior"; master_tag = "xeno_airlock_control"; pixel_x = -25; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cXw" = (/obj/machinery/vending/medical,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) -"cXx" = (/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. An external light is attached to the top."; dir = 8; invuln = 1; light = null; luminosity = 3; name = "Hardened Bomb-Test Camera"; network = list("Toxins","Research","SS13"); use_power = 0},/obj/item/target/alien{anchored = 1},/turf/simulated/shuttle/plating{dir = 4; icon_state = "warnplate"; luminosity = 2; nitrogen = 0.01; oxygen = 0.01; temperature = 2.7},/area/toxins/test_area) +"cXx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cXy" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/blood/empty,/obj/item/reagent_containers/blood/empty,/obj/item/reagent_containers/blood/empty,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) "cXz" = (/obj/machinery/smartfridge/secure/extract,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cXA" = (/obj/structure/table,/obj/item/reagent_containers/spray/cleaner,/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3) @@ -7985,7 +7986,7 @@ "cXD" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Civilian"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "cXE" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cXF" = (/obj/machinery/door/window{dir = 4; name = "Mass Driver"; req_access_txt = "22"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) -"cXG" = (/obj/machinery/mass_driver{dir = 2; id_tag = "chapelgun"},/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/machinery/light/small{dir = 1},/obj/item/gps,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/chapel/main) +"cXG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cXH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "cXI" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) "cXJ" = (/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) @@ -8017,7 +8018,7 @@ "cYj" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cYk" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cYl" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/driver_button{id_tag = "chapelgun"; name = "Chapel Mass Driver"; pixel_x = -4; pixel_y = -26},/obj/structure/table/wood,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) -"cYm" = (/turf/simulated/floor/plating{icon_state = "warnplate"},/area/chapel/main) +"cYm" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/glowshroom,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cYn" = (/obj/machinery/optable,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cYo" = (/obj/structure/table,/obj/item/storage/box/gloves{pixel_y = 8},/obj/item/camera{name = "Autopsy Camera"; pixel_x = -2; pixel_y = -2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cYp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) @@ -8027,6 +8028,7 @@ "cYt" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cYu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cYv" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cYw" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/ambrosia,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cYx" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "cYy" = (/obj/machinery/light/small,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cYz" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=14.8-Dorms-Lockers"; location = "14.5-Recreation"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -8045,9 +8047,9 @@ "cYM" = (/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = -32},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cYN" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cYO" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay3) -"cYP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cYQ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cYR" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cYP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cYQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/glass,/obj/item/slime_scanner,/obj/item/slime_scanner,/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cYR" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cYS" = (/obj/machinery/airlock_sensor{id_tag = "tox_airlock_sensor"; master_tag = "tox_airlock_control"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/binary/pump/highcap{dir = 4},/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cYT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/atmospherics/binary/pump/highcap{dir = 8},/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cYU" = (/obj/machinery/monkey_recycler,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) @@ -8091,11 +8093,11 @@ "cZG" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cZH" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cZI" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-21"; layer = 4.1; pixel_x = -3; pixel_y = 3; tag = "icon-plant-21"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay3) -"cZJ" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cZK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cZL" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cZM" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cZN" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio8"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cZJ" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/cultivator,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cZK" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cZL" = (/obj/machinery/computer/camera_advanced/xenobio,/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cZM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cZN" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/watermelon,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cZO" = (/obj/machinery/door/airlock/medical{name = "Psych Office"; req_access_txt = "64"},/turf/simulated/floor/wood,/area/medical/psych) "cZP" = (/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cZQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) @@ -8106,11 +8108,11 @@ "cZV" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_r"; tag = "icon-propulsion_r (EAST)"},/turf/simulated/shuttle/plating,/area/shuttle/escape) "cZW" = (/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/healthanalyzer{pixel_x = 3; pixel_y = 3},/obj/item/lazarus_injector,/mob/living/simple_animal/bot/medbot{name = "\improper emergency medibot"; pixel_x = -3; pixel_y = 2},/turf/simulated/shuttle/plating{icon_state = "bot"},/area/shuttle/escape) "cZX" = (/obj/machinery/door_control{id = "psychoffice"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = 25},/turf/simulated/floor/wood,/area/medical/psych) -"cZY" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #1"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"cZY" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/berry,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cZZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "daa" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dab" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dac" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #2"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dac" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Civilian"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dad" = (/obj/machinery/light/small{dir = 1},/obj/item/twohanded/required/kirbyplants{tag = "icon-plant-25"; icon_state = "plant-25"},/turf/simulated/floor/wood,/area/medical/psych) "dae" = (/obj/machinery/camera{c_tag = "Head of Personnel's Office"; dir = 1; network = list("SS13")},/obj/structure/table/wood,/obj/item/storage/box/PDAs{pixel_x = 4; pixel_y = 4},/obj/item/storage/box/ids,/obj/item/storage/box/ids,/turf/simulated/floor/wood,/area/crew_quarters/heads) "daf" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/turf/simulated/floor/wood,/area/medical/psych) @@ -8121,15 +8123,16 @@ "dak" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/closet/secure_closet/psychiatrist,/turf/simulated/floor/wood,/area/medical/psych) "dal" = (/turf/simulated/shuttle/wall{icon_state = "swall4"; dir = 2},/area/shuttle/escape) "dam" = (/obj/structure/closet/crate{name = "emergency supplies crate"},/obj/item/storage/toolbox/emergency,/obj/item/storage/toolbox/emergency,/obj/item/flashlight/flare{pixel_x = 3; pixel_y = 3},/obj/item/flashlight/flare{pixel_x = -6; pixel_y = -2},/obj/item/crowbar,/obj/item/wrench,/obj/item/radio,/turf/simulated/shuttle/plating{icon_state = "bot"},/area/shuttle/escape) -"dan" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"dan" = (/obj/machinery/camera{c_tag = "Departure Lounge - Port Aft"; dir = 4; network = list("SS13")},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/item/twohanded/required/kirbyplants{icon_state = "plant-04"; layer = 4.1; tag = "icon-plant-04"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dao" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/medical/virology) -"dap" = (/obj/structure/table/reinforced,/obj/machinery/door_control{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/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"daq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhitecorner"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dap" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/radio/beacon,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"daq" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dar" = (/obj/structure/disposalpipe/segment,/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"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"das" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner"; icon_state = "warnwhitecorner"; dir = 2},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dat" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"das" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dat" = (/obj/machinery/camera{c_tag = "Departure Lounge - Starboard Aft"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4},/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/item/twohanded/required/kirbyplants{icon_state = "plant-16"; layer = 4.1; tag = "icon-plant-16"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dau" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "dav" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"daw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dax" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/maintenance/aft{name = "Aft Maintenance"}) "day" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/maintenance/aft{name = "Aft Maintenance"}) "daz" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/escape) @@ -8139,9 +8142,9 @@ "daD" = (/obj/structure/stool/bed/chair,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) "daE" = (/obj/structure/stool/bed/chair,/obj/item/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 27},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) "daF" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"daG" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"daG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "daH" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"daI" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/camera{c_tag = "Secure Lab - Central"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"daI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "daJ" = (/turf/simulated/shuttle/wall{icon_state = "swall1"; dir = 2},/area/shuttle/escape) "daK" = (/obj/structure/closet/crate{name = "lifejackets"},/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/tank/emergency_oxygen/engi,/obj/item/tank/emergency_oxygen/engi,/obj/item/tank/emergency_oxygen/engi,/obj/item/tank/emergency_oxygen/engi,/obj/item/tank/emergency_oxygen/engi,/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/head/hardhat,/obj/item/clothing/head/hardhat,/obj/item/clothing/head/hardhat,/obj/item/clothing/head/hardhat,/obj/item/clothing/head/hardhat,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) "daL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access_txt = "39"},/turf/simulated/floor/plasteel{icon_state = "whitegreenfull"},/area/medical/medbay3) @@ -8150,9 +8153,9 @@ "daO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3) "daP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "daQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/wood,/area/medical/psych) -"daR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"daS" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner (WEST)"; icon_state = "warnwhitecorner"; dir = 8},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"daT" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio7"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"daR" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"daS" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/camera{c_tag = "Secure Lab - Central"; dir = 8; network = list("SS13","RD")},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"daT" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "daU" = (/obj/structure/table/wood,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor/wood,/area/medical/psych) "daV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/medical/psych) "daW" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/shuttle/escape) @@ -8161,9 +8164,9 @@ "daZ" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/escape) "dba" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area/shuttle/escape) "dbb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/medical/psych) -"dbc" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #3"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbc" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/chapel/main) "dbd" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dbe" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #4"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbe" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbf" = (/obj/machinery/power/apc{dir = 4; name = "Psychiatrist APC"; pixel_x = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/carpet,/area/medical/psych) "dbg" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "dbh" = (/obj/machinery/status_display,/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape) @@ -8171,44 +8174,44 @@ "dbj" = (/obj/structure/sign/fire{pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall/coated,/area/maintenance/incinerator) "dbk" = (/obj/structure/table,/obj/item/storage/fancy,/turf/simulated/shuttle/floor,/area/shuttle/escape) "dbl" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/item/robotanalyzer,/obj/item/storage/box/gloves,/obj/item/storage/box/masks{pixel_x = 6; pixel_y = 6},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/assembly/robotics) -"dbm" = (/obj/structure/table/reinforced,/obj/machinery/door_control{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/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbm" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio8"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbn" = (/obj/structure/disposalpipe/segment,/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"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dbo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner"; icon_state = "warnwhitecorner"; dir = 2},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbp" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/medical/virology) "dbq" = (/obj/structure/table,/obj/item/restraints/handcuffs,/turf/simulated/shuttle/floor,/area/shuttle/escape) -"dbr" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dbs" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbr" = (/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbs" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbt" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "dbu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "dbv" = (/obj/structure/sign/biohazard{pixel_x = -32},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/maintenance/aft{name = "Aft Maintenance"}) "dbw" = (/obj/structure/table,/obj/item/reagent_containers/glass/bottle/epinephrine{pixel_x = 6; pixel_y = 0},/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/simulated/shuttle/floor,/area/shuttle/escape) "dbx" = (/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/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -27},/turf/simulated/shuttle/floor,/area/shuttle/escape) "dby" = (/obj/machinery/camera{c_tag = "Virology - Entrance"; dir = 8; network = list("SS13","Medbay")},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/maintenance/aft{name = "Aft Maintenance"}) -"dbz" = (/obj/machinery/light{dir = 1},/obj/machinery/door_control{id = "xenobio1"; name = "Containment Blast Doors"; pixel_x = -24; pixel_y = 24; req_access_txt = "55"},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dbA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dbB" = (/obj/structure/window/reinforced,/obj/machinery/door_control{id = "xenobio6"; name = "Containment Blast Doors"; pixel_x = 24; pixel_y = 24; req_access_txt = "55"},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbz" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbA" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbB" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #1"; req_access_txt = "55"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbC" = (/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = -30},/obj/item/storage/box/beakers{pixel_x = 4; pixel_y = 4},/obj/item/storage/box/bodybags,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "dbD" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbE" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_se"; name = "southeast of station"; width = 18},/turf/space,/area/space) "dbF" = (/obj/structure/sign/biohazard{pixel_x = -32},/obj/item/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay3) "dbG" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/folder/white,/obj/item/folder/white,/obj/machinery/light,/obj/item/hand_labeler,/obj/item/pen{pixel_x = -3; pixel_y = 5},/obj/item/pen{pixel_x = -3; pixel_y = 5},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3) "dbH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/medical/psych) -"dbI" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #5"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbI" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #2"; req_access_txt = "55"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbJ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Scientist"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dbK" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #6"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbK" = (/obj/structure/table/reinforced,/obj/machinery/door_control{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/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbL" = (/obj/structure/table/wood,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/item/paper_bin{pixel_y = 5},/obj/item/clipboard{pixel_x = -5},/obj/item/pen/multi,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/wood,/area/medical/psych) "dbM" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbN" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 1},/obj/effect/landmark/start{name = "Psychiatrist"},/turf/simulated/floor/carpet,/area/medical/psych) "dbO" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/escape) "dbP" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor,/area/shuttle/escape) "dbQ" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) -"dbR" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbR" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbU" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dbX" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dbX" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio7"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dbY" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) "dbZ" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dca" = (/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/starboard) @@ -8216,12 +8219,12 @@ "dcc" = (/obj/structure/closet/crate{name = "lifejackets"},/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/tank/emergency_oxygen/engi,/obj/item/tank/emergency_oxygen/engi,/obj/item/tank/emergency_oxygen/engi,/obj/item/tank/emergency_oxygen/engi,/obj/item/tank/emergency_oxygen/engi,/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/mask/breath{pixel_x = -5; pixel_y = -2},/obj/item/clothing/head/hardhat,/obj/item/clothing/head/hardhat,/obj/item/clothing/head/hardhat,/obj/item/clothing/head/hardhat,/obj/item/clothing/head/hardhat,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) "dcd" = (/obj/structure/table,/obj/item/folder/white,/obj/item/pen{pixel_x = -3; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) "dce" = (/obj/machinery/computer/emergency_shuttle,/obj/machinery/light{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/escape) -"dcf" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Secure Lab - Aft-Port"; dir = 4; network = list("SS13","RD")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dcg" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dch" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible,/obj/item/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dci" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dcj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dck" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Secure Lab - Aft-Starboard"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dcf" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #3"; req_access_txt = "55"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dcg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dch" = (/obj/machinery/light{dir = 1},/obj/machinery/door_control{id = "xenobio1"; name = "Containment Blast Doors"; pixel_x = -24; pixel_y = 24; req_access_txt = "55"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dci" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible,/obj/item/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dcj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dck" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #4"; req_access_txt = "55"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dcl" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 0; pixel_y = 0; req_access_txt = "0"; use_power = 0},/turf/simulated/shuttle/wall{icon_state = "swall0"; dir = 2},/area/shuttle/escape) "dcm" = (/obj/structure/extinguisher_cabinet,/turf/simulated/shuttle/wall{icon_state = "swall0"; dir = 2},/area/shuttle/escape) "dcn" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) @@ -8232,13 +8235,13 @@ "dcs" = (/obj/structure/closet,/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dct" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dcu" = (/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/airlocks/centcom/centcom.dmi'; overlays_file = 'icons/obj/doors/airlocks/centcom/overlays.dmi'; name = "Test Chamber Maintenance"; req_access_txt = "47"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dcv" = (/obj/item/crowbar/red,/obj/item/wrench,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dcw" = (/obj/machinery/computer/security/telescreen{dir = 1; name = "Test Chamber Monitor"; network = list("Xeno"); pixel_x = 0; pixel_y = 2},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dcx" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/window/reinforced{dir = 4},/obj/machinery/ignition_switch{id = "Xenobio"; pixel_x = -6; pixel_y = -2},/obj/machinery/door_control{id = "Xenolab"; name = "Test Chamber Blast Doors"; pixel_x = 4; pixel_y = -2; req_access_txt = "55"},/obj/structure/table/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dcy" = (/obj/machinery/door/window/southleft{dir = 1; name = "Maximum Security Test Chamber"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dcz" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 2},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dcA" = (/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,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dcB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dcv" = (/obj/structure/table/reinforced,/obj/machinery/door_control{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/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dcw" = (/obj/structure/window/reinforced,/obj/machinery/door_control{id = "xenobio6"; name = "Containment Blast Doors"; pixel_x = 24; pixel_y = 24; req_access_txt = "55"},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dcx" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #5"; req_access_txt = "55"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dcy" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #6"; req_access_txt = "55"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dcz" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dcA" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dcB" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Secure Lab - Aft-Port"; dir = 4; network = list("SS13","RD")},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dcC" = (/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/airlocks/centcom/centcom.dmi'; overlays_file = 'icons/obj/doors/airlocks/centcom/overlays.dmi'; name = "Test Chamber Maintenance"; req_access_txt = "47"},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dcD" = (/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dcE" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) @@ -8273,7 +8276,7 @@ "ddh" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 10},/obj/item/radio/electropack,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "ddi" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) "ddj" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) -"ddk" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHEAST)"; icon_state = "warnplate"; dir = 5},/area/engine/engineering) +"ddk" = (/obj/machinery/mass_driver{dir = 2; id_tag = "chapelgun"},/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/machinery/light/small{dir = 1},/obj/item/gps,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/chapel/main) "ddl" = (/obj/machinery/shower,/turf/simulated/shuttle/floor,/area/shuttle/escape) "ddm" = (/obj/machinery/computer/atmos_alert,/turf/simulated/shuttle/floor,/area/shuttle/escape) "ddn" = (/obj/structure/table,/obj/item/defibrillator,/turf/simulated/shuttle/floor,/area/shuttle/escape) @@ -8306,13 +8309,13 @@ "ddO" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless,/area/space) "ddP" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/disposaloutlet,/turf/simulated/floor/plating/airless,/area/space) "ddQ" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_s"; name = "south of station"; width = 18},/turf/space,/area/space) -"ddR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) -"ddS" = (/obj/machinery/the_singularitygen{anchored = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/space) +"ddR" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Secure Lab - Aft-Starboard"; dir = 8; network = list("SS13","RD")},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"ddS" = (/obj/item/crowbar/red,/obj/item/wrench,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "ddT" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/shuttle/plating{icon_state = "floorgrime"},/area/shuttle/escape) -"ddU" = (/obj/item/wirecutters,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) +"ddU" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/window/reinforced{dir = 4},/obj/machinery/ignition_switch{id = "Xenobio"; pixel_x = -6; pixel_y = -2},/obj/machinery/door_control{id = "Xenolab"; name = "Test Chamber Blast Doors"; pixel_x = 4; pixel_y = -2; req_access_txt = "55"},/obj/structure/table/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "ddV" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/space) -"ddW" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/space) -"ddX" = (/obj/machinery/the_singularitygen/tesla{anchored = 1},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/space) +"ddW" = (/obj/machinery/computer/security/telescreen{dir = 1; name = "Test Chamber Monitor"; network = list("Xeno"); pixel_x = 0; pixel_y = 2},/obj/structure/table/reinforced,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"ddX" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 2},/obj/structure/window/reinforced{dir = 8},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "ddY" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) "ddZ" = (/obj/machinery/power/tesla_coil{anchored = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/space) "dea" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless,/area/space) @@ -8324,7 +8327,7 @@ "deg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "deh" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall,/area/maintenance/aft{name = "Aft Maintenance"}) "dei" = (/turf/simulated/floor/wood,/area/medical/psych) -"dej" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 17},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) +"dej" = (/obj/machinery/door/window/southleft{dir = 1; name = "Maximum Security Test Chamber"; req_access_txt = "55"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dek" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "del" = (/obj/item/candle,/obj/structure/table/wood,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "dem" = (/obj/structure/table/wood,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) @@ -8333,15 +8336,16 @@ "dep" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green,/turf/simulated/floor/carpet,/area/medical/psych) "deq" = (/obj/structure/stool/psychbed,/turf/simulated/floor/carpet,/area/medical/psych) "der" = (/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/medical/psych) -"des" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atm{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"det" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) +"des" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"det" = (/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/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "deu" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/wall/r_wall,/area/medical/virology) "dev" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) "dew" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plating/airless,/area/space) "dex" = (/obj/structure/table,/obj/item/candle,/obj/item/radio/intercom{pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dey" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 1},/turf/simulated/floor/plating/airless,/area/space) -"dez" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera{c_tag = "Secure Lab - Airlock"; dir = 8; network = list("SS13","RD")},/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"dez" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "deA" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/toxins/xenobiology{name = "\improper Secure Lab"}) +"deB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "deC" = (/obj/machinery/computer/security,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "deD" = (/obj/structure/sign/directions/evac,/obj/structure/sign/directions/medical{pixel_y = 8},/obj/structure/sign/directions/science{pixel_y = -8},/turf/simulated/wall,/area/library) "deE" = (/obj/structure/sign/directions/medical{dir = 4; pixel_y = 8},/obj/structure/sign/directions/evac{dir = 4},/obj/structure/sign/directions/science{dir = 4; pixel_y = -8},/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) @@ -8397,7 +8401,6 @@ "dfC" = (/obj/structure/rack,/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/sunglasses,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/maintenance/starboard) "dfD" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door_control{id = "mechpod"; name = "Mechanic's Inner Door Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "70"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "dfE" = (/obj/structure/closet/emcloset,/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/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/maintenance/starboard) -"dfF" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) "dfG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) "dfH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 2; name = "Mechanic Workshop APC"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "dfI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) @@ -8406,19 +8409,8 @@ "dfL" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) "dfM" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/shuttle/plating{icon_state = "floorgrime"},/area/shuttle/escape) "dfN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/hallway/secondary/entry{name = "Arrivals"}) -"dfO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "dfP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) -"dfQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"dfR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"dfS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) -"dfT" = (/obj/machinery/camera{c_tag = "Arrivals - Aft Arm - Far"; dir = 1; network = list("SS13")},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"dfU" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"dfV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"dfW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"dfX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"dfY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "dfZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bluecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) -"dga" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "dgb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/double/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},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "dgc" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main) "dgd" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/door_control{desc = "A remote control-switch for the pod doors."; id = "mechpodbay"; name = "Pod Door Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "70"},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) @@ -8467,7 +8459,6 @@ "dgU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall/coated,/area/toxins/server{name = "\improper Research Division Server Room"}) "dgV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 0},/turf/simulated/wall/r_wall/coated,/area/toxins/server{name = "\improper Research Division Server Room"}) "dgW" = (/obj/machinery/computer/camera_advanced/xenobio,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"dgX" = (/obj/machinery/computer/camera_advanced/xenobio,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhitecorner"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dgY" = (/obj/structure/table,/obj/machinery/recharger{active_power_usage = 0; idle_power_usage = 0; use_power = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) "dgZ" = (/obj/structure/table,/obj/item/storage/box/handcuffs,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) "dha" = (/obj/structure/sink,/turf/simulated/shuttle/floor,/area/shuttle/escape) @@ -8567,132 +8558,132 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaktaktakIakIakIakIakIajBakvakwakxajBabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqamxamxamxamxamxamYaAsatragAagAaonagAagAagAaopaooaosaoqaovaotaowamOaoxdfnasiapCapCaoHapCapCaoLaohapiatKaojaojaojaojaojaojaokaxYaWvapkafbcXHakhakialcaldcXZaldaleakmalfalgalhairairairairairalialjalkaeNaaaabqabqabqabqabqabqabfabqabqabqabqabqaaaaaaadFaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaflallallafgaaaaaaaehalmaeGaeGaeGalnaehaaaaaaaflallallafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaloalpakIalqalrajyaltajBajEalvalwajBakyalLakyakyabqabqaaaaaaaaaaaaaaaabqaaaabqabqamxalQanKanSaplamYapmatragBapoappapoagBapqapsapraptaoqapvapuaovamOapxapwatCatDatEapCatGapyapzaohapGapFaojaojaojaojaojaojapHaxYapLapIapNcYaakhamaambamccYbamdameamfamgamhaeNairairairairairaeNamiamjaeNaaaabqaaaabqaaaamkamkamkamkamkamkamkabqabqabqadFabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehamlaeGaeGaeGalnaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktammaktamnalrampamqajBajBamramsajBalxalzalyakyakyabqabqabqabqabqabqabqabqabqaaaamxapQaqaaqaaqlamYaAsatragBaqxaqKaqIagBaqLaqNaqMaqPaqOaqRaqQaqTamOaoxaqUaqVaqVaqVapCaqVaqVaqXaqWareardaojaojaojaojaojaojaokarfargafbafbarhancandaneanfcYcangameamjanhamhaeNairairairairairaeNanianjaeNabqabqabqabqabqamkankanlanmannankamkabqaaaanoanpanoansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehantanuaglantanuaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaakIanvanwanxanyanzanAanBanCanDanEakyamtanGamvanIakyabqaaaaaaabqaaaaaaaaaakDakDakDamxariarjaqaarMarkaAsarOagBarQarVarSagBarXascarYaosaoqasfaseaovamOaslashasnasmasqasoassasraswastasxapFaojaojaojaojaojaojaokaxYaWvafbcYdasyakhaszambaoycYbaozameaoAamgaoBaoCairairairairairaoDaoEaoFaoGapeaoGaaaabqaaaamkaoIaoJankaoJaoKamkabqaaaapgaoMapgasTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaoOaoPaeGaoQaoRaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaktaoSaktaoTaoUaoVaoWaktaoXaoYaoZapaapbapcapdaphakyabqapfapfalLapfapfaaaakDapSapSamxasLaqHapjasRasMatsaxJagBattasaamKagBatuaqNatvatwaoqaoqaoqaoqakDakDatxakDakDakDaxLatzatyaxLatBatKatKatKatFatFatFatFatFaokaxYaWxafbaimasyakhajpapTapUcYeapWapXapYamgapZaqDairairairairairaqbafbaqcaoGaqdaqeaefaefabqamkaqfaqgaqhaqiaqjamkabqanoapgaqkapgansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaqmaqnaeGaqpaqoaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktaqqaqraqraqraqsaqtaktamuaqvapdakyatHaqyaqzaqAakyapfapfaqBaqCanEajgajgakDaqFaqEamxatIaqaatMaqlarkaAsauHagBauOauSauPagBauUauWauVauZauYakDavcavfaveaviavhavpavjakDavsavuavtavZavwawkawdawdawlalWamoawpawmafbafbafbafbafbawqarlajpajparmcYxaroarparparqapZaqDairairairairairaqbarrarsaoGaqeaoGaoGapeaoGamkartaruankarvarwamkabqapgapgaoMapgansaoGaoGaoGcKIacJaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFarxaryarzaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarBaaaaaaarAaaaarAaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaaktarCarDarEarFarGarHaktapdaqvapdapfarIapdapdapdarJapfarKarUamzarNajganHarWarParRaumazcaCTawraorawsawtarZagBawuauSawyagBagBagBawzawBawAakDawCakDawDawFawEakDawIakDawQaxjaxfavtaxHaxNaxMaxPaxOaEgaEgaEgaxRasuakhaxSasvasvaxVasBasCasCasDcYzasFasGasGasGasHaqDairairairairairaqbasIasJaoGarsasKaouasJasNamkasjasgasQasOasPamkabqansasUasVasWaoGauodgCbkjavNavNblzaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFaeFaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarAabqabqarAarAarAabqaaaarAarAataarAarAaaaabqapfapfalLapfabqaaaabqabqabqabqabqapfalLaktaktatbatcatdaktaktaktaoXateaoZatfapbatgapdapdatiapfaoXaElaEjajgajgatlatmaquapOamxamxamxakDakDatpatqatrasSaytayVayTayXayWagBawzawBaosakDakDakDakDakDakDakDakDakDayYazaayZazdazbazxatKatKamOamOamOamOayGafbaeNazCaeNafbatNatOatPatQatRcYGatTatUatVatWatXatYatZatZatZatZatZauaaubayvaoGasJasJasJasJaudamkaueaufaugauhavFamkabqansaujaukaulaoGdgCdgCbnGblAbvublBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaupabqarAabqaupabqarAarAabqarAarAarAarAarAaaaaaaaaaapfauqauCapfautausausausausausauuapfarKauqapfauwauxaoXauyauzapfauAauBauCapfarIatjauDauEarJapfauGaNEaFEajgauIatmakeakfaqwajgauLamxauMauNaqJatqapnauQaAeauTauRaAjaAhauXaAkawBaosakDaAlaAnaFgamEaAoaAnaFgakDaApaAtaAqaAvaAuazxavkavlavlavmavnamOayGafbaBraBsavqavravravravravraByaCmaCeavvavvavvavvavvaDeaoGaqGavyavzaoGaoGasJaoGavAawMavCasJavDavEavHavGawZavIavJamkapeansarTavLavMaoGdgCdgCblyavNavNbnHaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAabqarAabqarAarAarAataabqabqabqarAarAabqaaaabqabqalLasAavoatLazLapdapdapdapdapdbMKavQavRaoZavWavSatkapdavYavXapdatkaxqajgajgajgajgajgajgajgajgajgajgawgajgawhajgajgajgajgajgajgamxawiawjaqJatqatrasSavdaDDaDgaEVawnaqYaFzaFBaFAakDaFVaAnaFXamEaGraAnaGEakDaGFaGIaAqaHfaHfaHhatKawGawHawGaHZamOayGawaaBraIgavqavrawNawOawPawoawRawSawTavvawUawVawWavvaoGaoGasJaubasJasIaoGayvaoGavzasJawXasJaoGawYayqamkamkaxaaxbamkayxansansaxdaxeaoGaoGbnIaxhaoGbplaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarAarAarAarAabqarAarAabqauparAarAabqabqabqabqapfapfawcapfapfaxlaxkaxkaxkaxkaxkaxZapfapfapfapfaxmaxnaxoaxoaxoaxoaxpaxqajgaxraxsaxtaxuaxvaxwaxxaxyaxzaxAaxBaxCajgaxDaxEaxEaxEaxFamEaxGaICaqJaxIaIIaxKaqYaIVasSaJyasdagBamEaKaamEamxaKbaKAaKcamxaKbaKBaKcakDaKOaMoaLvaKOaNoawdatKaxWaxWaxWamOamOayGafbdeeaAAdefavrayaaybayaawoaycaydayeayfaygayhayiavvathaoGaykaylaymaynaoGasJaoGaoGaoGayoaoGaoGaypbppayramkamkamkamkazrasIazGazFbTiaoGdfCdgCdfEaoGaoGaoGabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqarAarAarAarAarAarAarAarAarAarAarAayyarAabqaupapfapfapfayzatkapfabqabqabqabqabqabqabqabqabqabqabqapfaqBayBapdaoXapdaoXayDayEayFayHayGaAYajgajgajgaxTaxQaxQaxQaxUajgajgayMayNayOatnayMamEamEakDayQayRapnaNIaySaOPaNZaOYaySaPaaNZaPbayUaPmaPcaRPaQyaUxaSLaVMaUSaVNaNIaXqaWoaySaXBaXDaXCazeazeazeazeakDayGafbaxYaWvavqavrazfazgazhavraziazjazkazlazmavvavvavvaznaoGasIasJawXasJaoGayvaoGazpaoGazqdfFazsbpmawebpobqVbpqbqXbqWbqWbqWbqWdeSdgCdeVdgCdgCdgCaxgazHaxgaWwaWwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupabqarAataarAarAarAarAazIabqarAarAarAarAarAarAazJazKazJazLatkapfapfabqaaaaaaaaaaaaaaaaaaaaaaaaabqapfapfapfapdaoXapdaoXazNazOazPawfatoaAYajgaaaabqaaaaaaaaaaaaaaaabqaaaaxEazUazVazWazXazYazeazZaAaaAbaAcaAdaAdaZaaYLaZbaAdbaqaAcbcBaAiaAdbeTbfmbfkaAdaAmbfFbfAaAdbglbgIaAraAsbjUblZazeaAwaAxaAyaAzakDayGafbaxYaWxavqavraABaACaADayJaAFaAGaAHavvaAIaAJaAKavvaALaoGaoGaoGayoaoGaoGasJaoGasJaoGatAaxhaxhawYawJamkaxhaxhaxhaxhaxhaxhaxhaxhaxhaxhayxaxhaxhaxhaxhaxhaAObreabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarAarAarAarAarAarAarAarAarAarAabqarAarAarAabqapfapfapfaAPatkapdapfaaaaAQaARaASaARaATabqabqabqabqapfaAUapfaAVavUavUavUaAWaAXajgawKaAZaBaajgaaaaBbaBbaBbaBbaBbaBbaBbaaaayMaBcaBdaBeayMamEamEakDaBfaBgaBhaBiaBjaBkaBhaBlaBjaBkaBmaBnaBoaBpaBqbmPbmIaBtaBuaBvaBwaBxbnuaBwaBzaBAaBBaBCaBDaBEaBFaBGaBHakDayGaBIaBIaBIaBIavraBJaPWaBLaBNaBMaBOayeaBPaBQaBRaBSavvaBTaBUaBWaBWaBXaBWaBWaBWaBZaBWdgEaCaaCbaCcaCdawLaCfaCgaChaCgaCiaCjaCjaCkaCjaxiaxhaxhaCgaCiaCjayAaCjaClaCgabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqarAarAarAarAarAarAarAaCnarAabqabqabqabqapfaoXatkarIalLaaaaCoaCpaCqaCpaCoayKayKayKaCsaCsaCsaCsaCtaCsaCsaCuaCuaCuaCuazRaCuaCwajgabqaBbaCxaCyaCzaCAaCBaBbaaaayMaCCaCCaCDayMaaaaaaakDayLaCGazwatJayLaCIazwakDayLaCJazwakDaCKalMaCLakDamEazzaANamEamEaCOaCOaCPaCQaCRaCOaCOaCSakDakDakDakDakDayGaBIaQdaCUaQvavravravravravraCWaCXaCYazlazmavvavvavvaoGaCZasIarrasJasIaDadgIaxhaxhaxhaxhaxhaDbaDcbsFbqkaDfaWyaDfaDhaDiaDiaDjaWzaDkaCjaDlaCjaDmaWzaDjaDiaCvaDnaCgabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqabqabqarAarAarAarAataarAarAarAaDparAarAarAarAabqaaaabqalLayBatkapdapfaaaaASaDqaDraDqaASayKaDsaDtaCsaDuaDvaDwaDxaDyaCsaDzaDAaDBaCEaCNaCuaCwajgaaaaBbaDEaDFaDGaDHaDIaBbaaaaxEaDJaCCaucayMaAfaAfamxaDMaDNaDOakDaDPaDNaDOakDaDQaDNaDOakDaDRaDSaDTakDaDUaDVaDWaDXaDYaCOaDZaEaaEbaEcaEdaEeaCSaEfaEgaEgaEgaEgaDdaBIaRtaEkaRyaBIaEmaEnaEmavvaEoaEpaEqaEraEsaEuaEuaEvaBWaEwaxhaxhaxhaxhaxhaxhaxhaExaExaEyaEzaEAaEBbumaEDaCgaCgaCgabqabqaDiaEEaEFaDiaDiaDiaDiaDiaEGaEEaDiaDCbbTaCgaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqarAarAarAarAarAarAarAabqarAabqabqarAarAabqabqapfapfauyatkapfapfaaaaCobxFaDqaDqaEIaEJaEKaEKaELaEMaENaEOaEPaEQasbaESaETaEUaETaEWaCuaCwajgaaaaBbaEXaEYaEZaFaaFbaBbaaaayMaFcaCCaCCaFdaFeaFfamxaFgaDNaFhakDaFgaDNaFiakDaFgaDNaFjakDaFkaFlaFmakDaFnaFoaFpaFqaFraCOaFsaFtaFuaFvaFwaFxaCSayGalWalWalWapPalWaBIaTeaFDaThaBIaFFaFGaFGaFHaFIaFJaFKavvavvavvavvavvaoGaFLaxhaFMauraFOauvaFQaFRaFSaFTaFTaFTaFTaFUbwaaFWbwqaFYaCgaFZabqaaaabqaaaaaaaaaabqabqaaaaaaabqaaaaWAaEibbTaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaarAarAarAarAarAabqabqabqarAarAarAabeaaaabqabqabqapfaAgaoXaoXaECalLaaaaaaaASaDraDraDraASayKaGcaGdaGeaEMaEKaGfaGgaGhaCsaGiaGjaGkaEHaGmaCuaCwajgabqaBbaGnaGoaGpaGqbykaBbaaaayMaGsaGsaGsayMaAfauFamxaAEaCFaCramxaAEaCFaCramxaAEaCFaCramxaGxaCHaGzamxamxazzaGAamxaGBaCOaGCaGDbyAbyDaGGaGHaCSayGajgajgajgaFyajgaBIaGKaGLaBIaBIaGMaGNaGOaGPaGQaGRaGSazlaGTaGUawWavvaGVaGWaxhaGXaGYaGZaGZaHaaCMaDcaHcbCjbALbALbALbEoaHgbELaHiaDLarAaMKaMJaMJaOhaMJaMJaOhaMJaMJaOhaMJaMJaPwaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqaHkaHlaHkabfaaaabqaaaabqapfaHmaHnanEatkapfapfaaaaCoaHoaHpaHqaCoayKayKayKaCsaHraEKaHsaGgaHtaCsaHuaHvaHwaGlaHyaCuaCwajgaaaaBbaHzaHAaHBaHCaBbaBbaaaaHDaHEaHEaHEaHFaHGaHHaHGaHIaHJaHIaHKaHIaHJaHIaHLaHIaHJaHMaHNaHOaHPaHQaFCaHSaHTaHUamxazeaCSaHVaHWbHcbLSbIbaIaaCSayGaBIaIcaIdaHdaGJaGJaHeaIhaIiaIjaIkaIlaImaInaIoaIpayeaIqaIraIsaItavvasJaGWaxhaIuaIvaIwaIxaIyaIzaIAaIBbMIaIDaIDaIDaIEaIFbMOaHiaDLaMIaPxarAarAaPyarAarAaPyarAarAaPyarAarAaPxaWAaHxaCgaDoabqaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqabqaaaaHkaIGaHkabqabqabqabqabqapfauJapdapdaHXaIJapfaaaaIKaARaILaARaIMabqabqabqayKaINaIOaIPaIQaIRaCsaISaITaIUaHYaIWaCuaCwajgaaaabqaaaaGaaIYaGuaaaabqaaaaHGaAfaAfaAfaHGaHGaJaaJbaJcaJdaJeaJfaJgaJhaJhaJiaJhaJjaJgaJkaJlaJmaJnaERaJpaJqaJramxazeaCSaCSaJsaJtaCSbNVaCSaCSayGaBIaBIaBIaJvaJwaJxaIeaJzaJAaJBaJCaJDaJEaJFaJFaJGaJHavvavvavvavvavvaubaGWaxhaJIaJJaJKaJLaJMaGvaJOaJPaJQaJRaJSaJTaJUaJVbMOaHiaDLaDLaPxarAaJWaaaaaaaaaaaaaJWaaaaaaaJWarAaPxaIfaGbaCgaLwabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaabqaaaaHkaHlaHkaHkaGwaGwaGwaHkaHkaHkaHkaHkapdatkapfaaaaaaaaaaaaaaaaaaaaaaaaabqayKbPcbOgaKdaKeaKfaCsaJoaKhaCuaCuaCuaCuaKiajgaKjaGyaHjaHbaKgaHRaIZaIXaKjaHGaKraKsaKsaKtaKuaKvaKwaKxaKyaKzbPXbPiaTiaKDaKEaKCaKFaKGaKHaKIaKJaKKaJNaKMaKNbQEamxazeaKPaCSaKQaKRaCSbTjbTkalWayGaBIaKWaKXaKYaKZaBIaLaaLbaLcaBIaLdaLeaLfaLgaLfaLhaLiaLjaLkaLlaLmavvasJaGWaxhaLnaLoaLpaLqaLraFRaLsaLtaJQaLuaCgaCgbTlaLwaCgaDLaDLaDLaPxarAaaaaaaaaaaaaaaaaLxaaaaaaaaaaTMaRgaIfaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabqaHkaHkaLBaLzaLAaLBaLBaLBaLDaLEaLFaLGaHkaHkatkapfaaaaLHaLIaLIaLIaLIaLIaLJabqaCsaCsaCsauKazTaCsaCsaLMaLNaLOaLPaLQaLRaLSaLTaLUaLVaLWaLXaLYaLWaLZaMaaMbaHGaMcaMdaMeaMfaMfaKkaMfaMfaMfaMfaMfaMfaMfaMfaKkaMfaMhaMiaMjaMkaMkaMkaMlaMlaMlaMlaMlaMkaMmaMkaMnaMnaMnaMnaJuaMnayGaBIaBIaBIaMpaMqaBIaMraBIaMsaBIaMtaMuaMvazlaMwaMxaMyazlaMzaMAaMBavvaMCaGWaxhaCgaCgaCgaCgaCgaFRaMEaMFaJQaMGaCgaMHaXGaWubssaWuddkaDLaPxarAaaaaaaabqabqabqabqabqaaaaaaarAaPxaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaHkaMLaMLaMLaLBaLBaLBaLBaLBaLBaMLaMLaMMaHkatkalLaaaaMNaMOaMOaMOaMOaMOaMNabqabqaKlaMQaMRaMSaMTaMUaMVaMWaMXaMYaMZaNaaNbaNcaLRaNdaNeaNfaNgaNhaNiaNjaNkaNlaNmaNnbTqaKmaaaaaaaaaabqaaaaaaaaaabqaaaaaaaaaaKoaNraNsaNtaMkaNuaNvaNwaNxaNyaNzaNAaNBaNCaMkaNDaUfaNFaNGaJXaMnawKaBIaNJaNKaJwaMqaBIaNLaBIaNMaBIaNNaNOaNPaNQaNQaNQaNQaNQaNQaNQaNQaNQaoGaNRaxhaNSaNTaNUaNVaCgavgaIvaMFaNXaNYbVbaOaaObaOcaOdaOeddRaDLaPxarAaJWabqabqaOgddSaOiabqaOjaaaarAaPxaWAaKSaCgaDoabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaUUaUUaUUaUUaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaHkaOkaLBaLBaLBaLBaLBaLBaLBaLBaMLaMLaMLaOlaKTapfaaaaMNaOnaMOaMOaMOaMOaMNaKpaKlaKlaOpaOqaOraOraOsaOtaOuaOvaOwaOxapfaOyapfapfapfapfaOzaOAavxaOCaKnavxaOAaOAaOAaOAaOFaaaaaaaOGaOGaOGaOGaOGaOGaOGaaaaaaaMfaOHaOIaOJaOKaOLaNAaOMaONaOOavBaOQaORaOSaMkaOTaOUaOVaNHaKVaMnbViaBIaBIaBIaOZaOZaBIaBIaBIaBIaBIbVmbWpbVoaNQaPdaPeaPfaPgaPhaPiaPjaNQaPkaGWaxhaNTaNTaPlaOdbXuaGYaPnaPoaPpaPqaCgaPraPsaPtaPuaPvddUaKLddVarAaaaaaaabqddWcspaPzabqaaaaaaaTMaRgaIfaHxaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaabdabdabdabdabdabdabdaXHaXIaWBaXJaWBaXKaXOabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabqaHkaPAaLBaLBaLBaLBaPBaLBaLBaLBaLBaMLaPDaHkaECapfaaaaMNaMOaMOaMOaMOaMOaPEawbavKawbaPHaPIaPJaPKaPLaPMaPNaPOaPPaPQaPRaPSaPTaPTaPTaPTaPVaOAaYOaPXaPYaPZaQaaQbaQcbeBaQeaQfaQgaQgaQhaQiaQjaQkaQlaQmaQmaQnaQoaQpaKGaNtaMkaQqaNAaQraNAaQsaNAaQtaNAaNAaMkaQubeLaOVaQwaQxaMnbXQaQzaQAaQBaQCaQDaQEaQFaQGaQHaQIaQJaQKaQLaNQaQMaQNaQNaQNaQOaQPaQQaNQawvaGWaxhaQSaQSaQTaOdbXuaJJaQUaMFaOWaOmbVbaOXaRaaRbaRcaRdaOfaDLaPxarAaaaaReabqaRfddXaRhabqabqaJWarAaPxaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaUUaUUaUUaUUaUVaXNbbXbbWbbYbbWbbZbgUaUVaUUaUUaUUaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGwaLBaLBaLBaLBaLBaLBaLBaLBaLBaLBaRiaHkaHkatkapfabqaMNaMOaMOaMOaMOaMOaRkaRlaRmaRlaRnaPIaRoaRoaRpaRoaOuaRqaRraRsapfapfapfapfapfapfazSaOAbgkaRuaRvaRwaRxaRxaRxbgyaOFaaaaOGaRzaRAaRAaRAaRAaRAaRBaOGaaaaMfaRCaMiaMjaMkaRDaREaRFaNAaRGaNAaRHaRIaNAaRJaRKaRLaRMaRNaROaMnbYFaQVaQVaQVaQVaQWaRTaRTaRUaRUaRVaRWaRXaRYaRZaSaaSbaSbaSbaScaSdaSeaNQaSfaGWaxhaQSaSgaShaSiaCgaSjaIvaMFaJQaSlaCgaSmaSnaSoaSoaSoaSpaDLaPxarAaaaaaaabqabqabqabqabqaaaaaaarAaPxaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbcbbcabcabcabcabcabzhbzhbdJbzhbzhbcabcabcabcabcaaXKaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSqaSraSsaaaaGwaLBaLBaLBaLBaLBaLBaStaSuaSuaSvaSwaHkaqBatkapfabqaMNaMOaMOaMOaMOaSxaMNaKpaKlaKlaSyaPIaSzaSAaSBaSCaSDaSEaSFaSGaLKaSIaSJaSKbZaapfaSMaOAaSNaRuaSOaSPaSQaSQaSRaSSaOFaaaaMgaSUaRAaSVaSWaSXaRAaSYaMgaaaaMfaMhaMiaMjaMkaSZaTaaTbaTcaTdaTcbjbaTfaTgaMkbZdaxcaTjaTkaTlaMnaTmaToaToaTpaTqaTraTsaTtaTuaTvaTwaTxaTyaTzaTAaTBaTCaTDaQXaTFaTGaTHaNQasIaGWaxhaCgaCgaCgaCgaCgaFRaTIaQYaTKaTLaCgaCgbZVaLwaCgaDLaDLaDLaPxarAaaaaaaaaaabqaaaaaaaaaaaaaaaaTMaRgaIfaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbdKbdNbdNbdNbdNbdNbdNbdObdNbdNbdNbdNbdNbdNbdPbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGaTNbBmaTNacJaHkaLBaLBaLBaLBaLBaLBaLBaLBaLBaTPaTQaHkauAaQZapfaaaaMNaMOaMOaMOaMOaMOaTSaRlaTTaRlaRnaPIaRoaRoaRpaRoaOuaOvaTUaTVaTWaTXaTYaTZaUaapfaUbaUcaUdaRuaRuaUebmJaRuaUgaUhaOFaaaaMPaUjaUkaUlaUmaUlaUkaUnaNpaaaaMfaMhaUpaUqaMkaNqaNqaNqaNqaUsaNqaNqaOoaNqaMkaMnaOBaUvaSHaMnaMnbZWaToaTpaTqaUyaUzaTnaToaTqaTqaTpaUAaUBaUCaUDaUEaSbaSbaSbaScaUGaUHaNQaUIaGWaxhaUKaULaUMaSTaUOaUPaIvaMFaJQaUQaJSbZXcaGaUTbMOaHiaDLaDLaPxarAaJWaaaaaaaJWaaaaaaaaaaaaaJWarAaPxaIfaGbaCgaLwabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbeXbeXbeXbeXbeXbdObeXbeXbeXbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWDaTNaUWaTNaWDaHkaPAaMLaLBaLBaLBaLBaLBaLBaLBaUYaUZaHkatkapdapfaaaaMNaMOaMOaMOaMOaMOaVbayjaxXayjaVeaPIaRoaVfaVgaVhaViaVjaOuaVkaVlaVmaVnaVoaVpapfaVqaOAaVraRuaRubmKaVtaVuaUgaRRaOFaaaaOGaVwaVxaUkaVyaRAaVzaVAaOGaaaaMfaVBaOIaOJaVCaVDaVEaVEaVEaNCaVEaVEaVFaVGaMkaVHaVIaVJaVKaVLcaHaVKcbeaVOaVOaVPaVQaVRaVSaVTaVUaVVaVSaVWaVXaNQaVYaVZaWaaWaaWcaWdaWeaNQasJaWfaxhaWgaWhaWiaTOaWkaWlaWmaRSaTEaSkaTRcbWaUFaWsbMOaWtaDLbeZaPxarAarAddZarAarAddZarAarAddZarAarAaPxaWAaHxaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaabdabdaXHbdMbeWbeXbeXbeXbeXaXLaXLaXMaXLaXLbeXbeXbeXbeXbeYbdMaXOabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaWDaWEaWFaWGaWDaHkaLBaMLaWHaWIaWJaLBaLBaLBaLBaUYaWKaHkatkapdalLaaaaMNaOnaMOaMOaMOaMOaMNaKpaKlaKlaWLaPIaRoaRoaRpaRoaOuaVjaWMaWNaVlaWOaWPaWQaWRapfazSaOAaWSaWTaWTaWUaWVaRuaUgaWWaOFabqaOGaOGaOGaWXaWYaWZaOGaOGaOGabqaMfaOHaXaaMjaXbaXcaVEaVEaVEaXdaVEaVEaXeaNCaXbaQCaXfaXgaXhaToayuaToaTnaTpaToaXjaToaXkaTpaTqaToaTqaTpaXlaXmaNQaXnaXpaXoaURaXraPiaQQaNQaXsaGWaxhaXtaXuaXvaXwaXxaXyaXzaXAcczccyccHccHcdIaXFbMOaHiaDLarAdeaaMJaMJdebaMJaMJdebaMJaMJdebaMJaMJdecaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabdaaabgMbdMbeWbeXbeXaXLaXLaXLaXLbfabpvaXLaXLaXLbeXbeXbeYbdMbMnaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaWDayCaXQaXRaXSaHkaXTaMLaXUaXVaXWaMLaMLaMLaXXaXYaXZaHkaVaaYbapfabqaYcaYdaMOaMOaMOaYeaYfabqabqaKlaWLaYgaPJaPKaYhaYiaYjaYkaYlaYmaYnaYnaYnaYnaYnapfaYoaYpaYqaYraYraYsaYtaYuaYvaYwaUoaaaaaaaaaaOGaOGaYyaOGaOGaaaaaaaaaaKoaNraYzaMjaYAaYBaYCaYDaYEaNCaNCaYFaYGaNCaYAaQCaYHaYIaYJaYKcdPaYKaYMaYNbmLaYPaYKaYKaYKaYKaYKaYKaYQaYRaYSaNQaNQaNQaNQaVcaNQaNQaNQaNQaoGaGWaxhaYVaYUaYUaSTaYWaYXaYYaYZaWbaVvaWnaQUcdQaZfbwqaZgaCgaaaabqaaaabqaaaaaaaaaaaaabqaaaaaaabqabqaWAaWpaDhaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHbcbbfcbfbbgNaXLaXLbdIbdIbdIbgPbgObdIbdIaXLaXLbgNbgQbgSbgRaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaWDaWDaZiaZjaWDaWDaWDaZkaWDaWDaZlaZmaWDaWDaWDaZnaWDaWDaWqapfapfabqaZpaZqaZraZraZraZqaZsabqabqaZtaZuaPIaRoaRoaRpaRoaOuaZvaOuaZwaYnaZxaZyaZzaZAapfazSaOAaZBaZCaZDaZEaZFaZGaZHaZIaOFaZJaUraZJaZLaZMaZNaZOaZLaZJaUraZJaMfaZPaZQaZRaZSaMkaMkaMkaMkaZTaZUaZVaNCaZWaMkaQCaZXaTraZYaZZaZZaZZaZZaoGaoGaoGbaababbacbadbaebafaZZbagbagaoGbahazyazyaWrazyazyazybakazybalaxhbambambambambanbaobapcdRbarbasbatayIcdSbavaCgaCgaCgabqabqaDibawbaxaDiaDiaDiaDiaDiaDibawaDiaXEaDhaCgaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabdaXHbgTbicbeXbeXaXLbdIbidbifbiebihbigbiibidbdIaXLbeXbeXbijbgTaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaUNbaAbaBbaCbaDbaEbaBbaFbaGbaHbaGbaIbaJbaGbaKbaLbaMaYTbaOapfaaaaaabaPbaQbaQbaQbaRaaaabqaZtbaSaWLaPIaRoaRobaTbaUaOubaVbaWbaXbaYbaZbbabbbbbcapfazSaOAaOAaOAavxavxayPaOFbbebbeaOFbbgbbhbbiaZLbbjbbkbblaZLbbmbbnbbobbpbbqbbrbbsbbtbbubbvbbwaMkaMkaYAaLLaYAaMkaMkayubbybbzayubbAbbBbbCbbDbbEbbFaoGaoGaoGaoGbbGaoGaoGaoGaoGaoGaoGaGWasIasJbbHbbHbbHbbHbbHbbHbbHbambbIbbJbbKbamazobbMbambbNbbOaFRaFRazAcePcemaDfbbSaDfbbTaDiaDibbUaDiaCiaCjbbVaCjaClaDibbUaDiaCvaDnaCgabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabdaXHbdMbeWbeXaXLaXLbdIbikbilbdLbnQbimbjPbjObdIaXLaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaUNbcdbcebcebcfbcebcebcebcgbchbcibcjbckbckbckbclbcmbcnbcoapfaaaaaaabqabqaaaaaaabqabqabqaZtbcpbcqbcrbcsaRobctbcubcvbcwbcxbcybczbcAceSbcCbcDapfazBbcFbcGbcHbcIbcJbcKbcLbcMbcNbcObcPbcQbcPbcRbcSbcTbcUbcVbcPbcWbcXbcXbcYbcZbdabcXbcXbdbbdcbdcbdcbddbdebdcbdcbdfbdcbdgbdhbdcbdcbdcbdibdjaoGbdkbdobdmbdnbdobdpbdobdqbdobdrazybakbalaubasJbbHbdsbdtbdubdvbdwbdxbambdybdzbdzbdAbdzbdBbambdCbarbdDbdEbdEbdEbdEbdEbdFaCgbdGaCjaCjbdHaCjaDmaCgaCgaCgbdGaCjaZdaZcaDmaCgabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLaXLbdIbjQbilbdIbjRbdIbjTbjSbdIbdIaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNbdQaUNaWDaUNbdRaUNbcdbcebdSbdTaUNbdRaUNbdUbdVbdWbdXapfapfapfapfalLalLalLapfapfapfaZtbdYbdZbdZbdZbdZbeaaRobebbecbedbeeaYnaYnaYnaYnaWjapfapfbegapfapfbehbeibejbekbelbembenbekbelbeobepbembeqbekbekbekbelbekbekberbesbekbekbekbekbekbekbekbetbeubekbekbenbevbewbekbekbekbekbexbeybezbezbezbeAbezbezbezaoGbmMaoGaGWaoGaoGbeCbeCbeCbeCbeDbeEbeEbeFbeGbeHbambeIbeJbeKbmNbeMbeNbambeObePbeQbdEbeRbeSceWbdEbeUaCgaCgaCgaCgaCgaCgaCgaCgazMaCgaCgaCgaCgaCgaLwaCgabqabfabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabdaXHbdMbeWbeXaXLaXLbjWbjVbjYbjXblFblDblIblGblJbdIaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNabqaaaabqaaaaUNbfdaUNbfebfebffbfgaUNbfdaUNaUNaWDbfhbfibfjavTavUavUavUbflavUavUbfnavVbfobfpbfqbfqbfrbfsbftbfubfvbfwbfxbfybfwbfzceXbfwbfBbfCbfDbfEceYbfGbfHbfIbfJbfKbfKbfLbfMbfNbfObfPbfQbfRbfSbfSbfSbfSbfSbfSbfSbfTbfUbfVbfVbfVbfVbfVbfVbfVbfVbfWbfXbfYbfZbfVbgabfWbfVbfVbgbbgcbgdbezbgebgfbggbghbgibezbgjbmOaoGaGWaoGaaabeCbgmbgnbeCbgobgpbgqbgrbgsbgtbambgubgvbgwbgxcfdbgzbambgAbgBbgCbdEbgDbgEbgFbdEbgGaOdaOdaOdaOdaOdaOdaOdaOdaOdaOdbgKbgLbgKbgLaefaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdaXHbdMbeWbeXaXLaXLbdIblKbilbdIblLbdIbjTbjSbdIbdIaXLbeXbeYbdMaXOabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqaaaaUNbdRaUNaUNaUNaUNaUNaUNbdRaUNaaaaWDbgVbgWbgXbgXbgXbgXbgXbgXbgXbgXbgYazQbfwbfwaXibhbaXibfwbfwbfwbhcbfwbhdbhebhfbhgbhhbhibhjbhkbhlbhmbhnbfGbhobfIbhpblhbhqbhrbhqbhsbhqbhtbhubhtaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxbhwbhwbhxbhwbhwbhwbhwbhwbrNbhybfIbhzbezbhAbhBbhCbhDbhEbezbhFbhGaoGaGWapeaaaaZKbhIbhJbbxbhLbhMbhNbhObhPbhQbambhRbhSbhTbhTbhUbhVbambhWbhXbhWbdEbhYbhZbiabdEaChaCgaCgaCgaCgaCgaCgaCgaCgaCgaDLaFRaFRbdFaFRabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaabdaaabgMbdMbeWbeXaXLaXLbdIbikbilbdIbdIbdIbjTbjObdIbdIaXLbeXbeYbdMbMnaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabinbiobipbiobiqbiobiobiqbiobipbirbisaWDbgVbitbiubivbiwbixbiybizbiAbgXbgYbiCbiDbiEbiFbiGbiFbiGbiHbiGbiIbfwbiJbiKbiLbiMbiNbazbiPbiQbiRbiSbiTaAMbiVbiWbiXbhqbiYbiZbjabhKbhqbjcbjdbjeabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqbhwbjfbjgbjhbjibjjbjkbjlbhwbjmbjnbjobezbjpbjqbjrbjsbjtbezaoGaoGaoGbjuaoGaaabeCbjvbjwbeCbjxbjybjzbjAbjBbjCbambjDaZebjFbjGbjHbjIbamaFRbjJaFRbdEbjKbjLbjMbdEdeWavPdfadfcdfbdfdasXdfeanqanqaaaaaaaFRbgLaFRabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaUUaUUblMaXNbmHblNbfbbgNaXLaXLbdIbidbilbmTbnLbnEbnMbidbdIbdIaXLbgNbgQbnNbnPbnOaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabinbiobiobjZbkabkbbkcbkdbkebkfbkgbkhbkbbkiblVaUNbgVbgWbbLbklbkmbknbkobkpbkqbkrbksbktbkubkvbkvbkwbkxbkybfwbfwbfwbfwbkzbkAbkBbkCbkDaXibkEbhkbhlbkFbkGbkHbkIbfIbkJbhqbkKbkLbkMbkNbkObkPbkQbccabqabqaBVaCVaBYaDKbkWaEhaCVaDKbkWaEhaBYaBYaEtabqabqbhwaFNblablbblcblbbldblebhwblfbfIblgbwlbezbkkaODbkRbezbezbllblmaoGblnaoGblobeCbeCbeCbeCbbHbbHbbHblpblqbbHbambambambambamaGtaFPbambltblubltbdEbkUblwbkVbdEdffdfhdfgdfgdfjdfkdfkdfkdflabqaaaaaaaaaaWwaaaabqaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWwbnRblEbnTbnSbnUbicbeXbeXaXLaXLbdIbpsbptbdLbqZbpubrbbrabdIbdIaXLbeXbeXbrcbijbrfaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablOblPblQblRbkbblSblTblSblTblSblTblSbkbblUbnFaUNbgVblWbgXblXblYcfgbmabmbbmcbgXbmdbmebmfbmgbmhbmibmjbmkbmlbmmbmnbmobmpbmqbmrbmsbmtbmubmvbmwbmxbmybmzbmAbiVbfIbmSbhqbmQbmCbmDbmEbhqbmFbmGbjeabqabqaIbboBbopbpVboHbqfbqdbqhbqgcfhbqjbqlaIHabqabqbhwbmUbmVbmWbmXbmYbmZbnabhwbhybnbbncbndbnebnfbnebngbnhbnibnebnebnebnjbnebnkbnlbnmbnnbnebnebnobnkbngbnjbnpbnqbnobnrbnsbntcfibnvbnwbnxbnybnzbnAbnBbnCbnDblidfmdftdfqdfxdfudfydeZaoNdflabqaaaaaaaaaaWwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaWwbnRblEbnKbrgbrhbeWbrjbeXaXLaXLbdIbrlbrmbifbrIbrnbrQbrKbdIbdIaXLbeXbeXbeXbeYbrfaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiqbkbbkbbipbkbblSblTblSbnVblSblTblSbkbblUbnFaUNbnWbnXbnYbnZboablkaUtblkbiubiubodboebhcbfwbofbogbohboibojbokbolbfwbombonbojbkCboobfwbrXboqborbosbotaAMbkIbfIbkJbhqboubovbowboxbhqboybozbjebkWaJYbkWbsbboCboDboEboDboFboDboEboDboGbscbkWaJYbkWbhwboIboIboIboJboKboLboMbhwboNboOboPboQboRboSboRboTboRboUboRboRboRboVboRboWboXboYboZboRboRbpabpbbpcboVbpdboVbpebpfbpgbntbphbpibpibpjbpkbpibpidfzdfBdfAbljdfDdfIdfHdfKdfJdgddfLdgKazDabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqbpraaaaaaaaaabqbsdbsdblMbsebsfbeWbsnaXLaXLaXLbsMbdIblHblHbnJbdIbdIbdIbdIbrkaXLaXLaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablObpwbpxblRbkbblSblTblSblTblSblTblSbkbblUbnFaUNbpybpzbpAbpBbpCbpDbpDbpEbpFbpBbpGbpHbpIbfwbpJbpKbpLbpMbpNbpObpPbfwbpQbpRbpSbpTbpUbfwbsibpWbpXbpYbpZbfGbqabjnbqbbqcbqcbqcbqcbqcbhtbtPbqebhtbkWbtSbtRbtTboEboEboEboEbqiboEboEboEboEbtZbtYbubbkWbqmbqnbqobqpbqqbqrbqrbqsbhwbqtbqubqvbqwbqxbqybqxbqzbqxbqAbqxbqxbqBbqxbqxbqCbqDbqxbqEbqBbqFbqGbqCbqHbqxbqIbqJbqKbqLbqMblsbqObqPbqQbqRbpnbqSbqSbqTdgMdgLdgOdgNdgPanqanqanqanqanqanqanqanqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqaaaabqbsPbsRbsQbsSbrdcKIaXNbsfbsTbsUaXLbsWbsVbsXbribsZbsYbtbbtabtcbrkbtebtdbtgbtfaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrobiobiobjZbrpbkbbrqbkbbrrbrsbkbbrtbkbbkibruaUNbgVbrvbrwbrxbrybrzbrAbrBbrCbrxbrDbrEbrFbfwbrGaXibrHblvbfwbfwbfwbfwbfwaXibrJblxbfwbfwaAMbrLbrMaAMaAMbzObehbfIbrObqcbrPcfjbrRbqcbrSbrTbrUbrVaJZburbrYbrZbsabsabvWbwfbwebvWbvWbsabsabsgbshbwgbkWbhwboIboIboIbsjboIboIboIbhwbskbfIbslbZiblCbsoblCbsmbspbspbspbspbspbspaoGaoGbsqaoGaoGaoGbsrbmBaoGaoGaoGbstaoGbsubsvbswbbfbsybszbsAbsBbqSbsCbsCbsDbqUbsEbjNbntcfkbsGbsHbsIbsJbsJbsKbsLabqaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaabuLbudbuMabqbuObuNbuQbuPbuSbuRbuTbBebuVbuUbuWbribuYbuXbvabuZbvcbvbbvebvdbvgbvfaXLbvhbvibdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrobiobthbiobiqbiobiobiqbiobipbtibtjaWDbvjbtlbtmbfGbtnbtobtpbtobtqbfGbtrbtsbttbtubtvbtwbtxbtybtzbtwbtAbtBbtwbtvbtvbtCbtvbtDbtEbtFbtGbtHbtvbtIbtJbtKbkJaKqbtMbtNbtObqcbjebjebjebjebkWbwmbtQboEboEboEbtUboEbtVbtWbtXboEboEbwnbuabAkbucbhwbwobuebufbugbuhboIbuibhwbujbfIbukboAdedbunbuobsmbupbuqbwpbusbutbuubuvbuwbuxaoGbuybuzbuAbuBbuCaoGarrbuDaoGbuEbuFbuGbqNbuHbuHbuHbuIbuJbqSbqSbuKaZobvkbvnbvmbvpbvobvrbvqbvsbvsbvvbvtbvwbvwbvwbxlbxmbvwbvwbvwbvwbvwbxlbvwbvwbvwbvwbvwbvwbxlbvwbxmbxobxnbxpbxpbxrbxqbxtbxsbxvbxubxxbxwbxzbxybxBbxAbxDbxCbzebxEbzgbzfbzjbzibzlbzkbznbzmbzpbzoaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaUNbdRaUNaUNaUNaUNaUNaUNbdRaUNaaaaWDbzqbzsbzrbfGbvAbvBbvCbvBbvDbfGbvEbvFbvGbvHbvHbvIbvJbvHbvHbvKbvLbvMbvNbvHbvHbvObvHbvHbvHbvPbvQbvRbvRbvSbvTbvUbvVbqcbyobvXbvYbqcbvZbwbcflbwcbwdboEbtQboEbypbywbwhbwibwjbwibwkbyJbyxbAbbyQbAkcfmbhwbwrbwsbwtbwubwvbhwbhwbhwbhybwwbwxbsmbwybwzbwAbsmbwBbwCbwDbwEbwFbwGbwHbwIbwJbwKbwLaKUbwNbwObwPbwQbwRbwSaoGbsubwTbwUbntbwVbwWbwXbwYbwZbxabxbbxcbxdbqUbxebxfbxgbxhbxiaWCaaaaaabxjbsNabqaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaabxkbztbsLabqbBbbzubBdbBcbBgbBfbBibBhbBnbBjbCWbBobCYbCXbDabCZbDibDcbFdbDjbFfbFeaXLbrcbFgbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNabqaaaabqaaaaUNbxGaUNbxHbxIbfebxJaUNbxGaUNaUNaWDbgVbxKbxLbfGbxMbvBbxNbvBbxObfGbxPbxQbxRbxSbxTbxUbxVbxWbxXbxYbxZbyabxTbxTbxTbybbxTbycbydbxVbyebxTbxTbyfbygbyhbvVbqcbyibyjbymbylbymbynbymaLybwdbAjbAebyqbyqbyqbyrbysbytbyubyvbyqbyqbyqbBWbCcbkWbhwbyybyzcfnbyBbyCbhwcghbyEbyFbyGbwxblCbyHbyIbCdbsmbyKbyLbyMbyNbspbspaoGaoGbyOaoGaoGaoGaLCbCeaoGaoGbyRbCIaoGbyTbwTbyUbntbjNbjNbjNbjNbyVbjNbjNbyWbyXbyYbntbntbyZbzabzbbzcaaabqYbzdaaaabqaaaaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqaaaaaabxkbBabFkbGNbGMcKIbsebGSbGObrcaXLbsMbsMbsMbribribICbBkbribribrkbrkbrkaXLaXLaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNaUNbdQaUNaWDaUNbdRaUNbzvbaBbzwbzxaUNbdRaUNbzybzzbzAbtlbtmbfGbzBbzCbtpbzCbzBbfGbzDbzEbzFbfGbzGbzHbzIbfGapfbzJapfbzKbzKbaibzMbzNbaibzKbzKbzKbzKbzKbzKdeDbzPbzQbzRbzSbzTbzUbzVbzWbzVbzXbzYbzZbAabCfbAcbAdbThbAdbAdbAfbAgbAhbyqbyqbAibyqbCkbAkbhwbAlbAmbAnbAobApbAqbhwaMDbhtbAsbbrbAtbsmbsmbsmbsmbsmbAubAvbspbspbspbAwbAxbspbAybAzbAAaoGazpbABaoGbACbADbAEbAFbAGbAHbAIbAJbAKbAKbAMbAKaNWbAObjNbAPbAQbARbASbATbAUbAVbAWbAXbsJbAYbAZabqabqabqabqabqaaaabqaaaabqaaaabqaaaabqaaaaaaaaaaaaaaaaaaabqbpraaaaaaaaaabqaaaaaaabdaZhbIEbeWbeXbeXbIFaXLbBlbDbbKjbDdbDebDfbDgbDhbBlaXLbIFbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbBpbaBbaCbBqbBrbaBbaBbBsbBtbchbBubBvbBvbBvbBwbBxbBybBzbBAbBBbBCbBDbBEbBFbBGbBBbBHbBIbBJbBKbBKbBLbBKbBKarKbBMbBNbzKbBObBPbBQbBRbBSbzKbBTbBUbzKbBTbBUbzKbzPbfIbkJbqcbBVbClbBXdaebBYbBZbCabCbbwdbAkbDrbyqboEbDVbCgboEboEbAkbChbDWcgibyqbEfbEgbhwbCmbCnbCobCpbCqbCrbCsbCtbhtbhybbrbhzbspbCubCvbCwbCxbCybCzbCAbspbCBbCCbCCbCEbCFbCGbCHaoGaoGaoGaoGaoGaoGbCIaoGbCJbCKbCLbCMbCNbCNbCNbCNbCNbCMbCMbCNbCObCPbCQbCRbCSbCTbCUbCVbCMbCMbCMabqaaaaaaaaaabqaaaabqaaaabqaaaabeaaaabeaaaaaaaaaaaaaaaaaaaaaabqabqabqabqaaaaaaaaaabdaXHbsfbKkbvhbeXbeXaXLbBlbFhbFibFjbKnbFlbFmbFnbBlaXLbeXbeXbvhbvhbvibdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbcdbcebcebDkbcebDlbDmbDnbDnbDobDnbDpbDqbEJbDsbDtbDubDvbDwbpBbDxbDybDzbDAbDBbDCbDDbDEbDFbDGbDHbDIbDJbBKbDKbDLapdbzKbDMbDNbBQbBRbBSbzKbDObDPbzKbDObDPbzKbDQbfIbkJbqcbqcaPCbqcbqcbqcaPGaPFbsObqcbFJbtQbDXboEbwibwibDYbDZbEabEbbEcbEdbEebshbFUbEhbEibEjbEkbElbEmbEnbhwcgjbhtbEpbbrbhzbspbEqbErbCybEsbCybEtbCybEubEvbCHbaubvzbEybEzbEAbEBbECbEDbEEbEFbEGbEHaoGbEIbwTbHCbCMbEKcgkbEMbENbEObCMbEPbEQbERbESbzLbEUbEVbEWbEXbEYbEZbFabCMabqabqabqabqabqabqabqaaaabeaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHbKpbKobKqbfbbgNaXLbBlbGPbGQbGRbMpbGTbGUbGVbBlaXLbgNbgQbMtbMrbMrbNXaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNaWDaUNbdQaUNaWDaUNaUNaUNaWDaUNaWDaWDaWDbnWbnXapfbFoapfapfbFpbFqbFpbFrbFpbFpbFpbFpbBKbBKbFsbFtbBKbBKbBKbFuaoXbzKbFvbFwbBQbFxbzKbzKbFybzKbzKbFzbzKbzKbFAbfIbkJbFBbFCbFDbFEbFFbFGbFDbFDbFHbFIbAkbHDbAdbFKbFLbFMbFNbFObFPbFQbFRbFSbyqbFTbAkbhwbFVbFWbFXbFYbFZbGabhwbGbbhtbhybbrbhzbspbGcbGdbGebGdbGfbGgbGhbGibEvbCHbvzbDSbCHbEvbGlbGmbGnbGobGpbGqbEGbCIaoGbGrbGsbGtbDTbGvbGwbGxbGybGzbCMbGAbGBbGCbGDbzLbGEbGFbGGbGHbGIbGJbGKbCMabqbGLbGLbGLbGLbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaabPHbNYbdMbeWbeXaXLbBlbIybIzbIAbPJbIBbRobIDbBlaXLbeXbeYbdMbRpbsdbPHaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaabGWbGXbGXbGYbGXbGXbGXbGZbGXbGXbHaabqaUNbHbdfOdfPapfbWdbHJbHdbFpbHebHfbHgbHhbHibHjbFpbHkbHkbHlbHmbHnbHobBKbFubHpbzKbHqbHrbBQbBRbHsbHtbFwbHubHvbHwbHxbaibzPbfIbkJbFBbEwbDUbExbExbExbExbExbHzbFIaQRaPUbkWbkWbkWbETbGkbGjbHybGubkWbkWbkWaRjaUibhwbhwbEhbhwbhwbhwbhxbhwbHKbhtbHLbHMbhzbHAbHObHObHObHPbHObHQbHObHRbEvbEvbEvbEvbEvbCHbHEbHUbHVbHWbHXbHYbEGbCIaoGbHZbGsbIacglbIcbIdbIebIfbIgbHFbIibIjbIkbIlbzLbImbInbIobIpbIqbIrbIsbHGbIubIvbIwbIxbIxbGLabqaaabFcaaabFbaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdaXHbdMbeWbeXaXLbKlbKlbKlbHNbRqbHNbKlbKlbKlaXLbeXbeYbdMaXOabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGWbIGbIHbIIbIJbIJbIKbIJbIJbIJbIKbGYbHHaUNaUNdfQbIMapfbgYaEjaUubFpbIQbHfbHgbIRbISbITbFpbIUbIVbIWbIXbBKbBKbBKbFucgmbzKbIYbIZbBQbBRbBQbBQbBQbBQbBQbJabBQbzMbJbbJcbJdbJebJfbJgbJfbJhbJfbJgbJfbJibCibJkbJjbJmbJlbJpbJnbJnbJqbKYbJrbJsbJtbJubJvbJwbJxbJobJybJzbJobJAbJBbJobJCbJDbJEbJFbwxbJGbCybJHbCybJIbCybJJbCybJKbEvbEvbCHbEvbEvbJMbHIbHUbJObECbHXbJPbEGbCIaoGbJQbJRbyUbDTbJSbIdbJTbIdbJUbJVbJWbJXbJYbJZbzLbKabKbbKcbKdbKebKfbKgbzLabqbzLbKhbIxbKibGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLbMobRrbMqbHNbRsbHNbMsbSXbMuaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKrbKsbKsbKsbKsbKsbKsbKsbKsbKsbKsbKtbKubKvbKudfQbKwapfbgYbKyanEbFpbKzbHfbHgbKAbHfbKBbFpbBKbKCbBKbHmbKDbKEbBKbFucgobzKbKFbHrbKGbKHbKIbKIbKIbKIbKIbKJbKIbKKbygbKLbKMbKNbKObKPbKObKQbSrbKSbKTbKUbKVbKWbKXbKOcnjbKZbLabLbbaybLdcpcbLebLfbLgbLhbLibLjbLkbLlbLmbLnbLobLpbLibLqbLrbLsbLtbLubLvbLwbLxbLybLybLzbLAbLwbLBbaNbbRbbQbCHbLFbCHbIhbLHbLIbLJbhabLLbLMbLNaoGbLObLPbLQbLRaUwbLTbLUbLVbLWbzLbLXbLYbLZbMabMbbMcbIobMdbMebMfbMgbMhbItbMjbMkbMlbIxbMmbGLabqaaabFcaaabFbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLbNZbOabObbHNbRqbHNbObbOabOcaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMvbMwbMxbMybMzbMzbMAbMzbMzbMzbMAbGYaUNaUNaUNdfQbMBapfbjEapfapfbFpbMDbMEbMFbHfbHfbHfbFpbMGbMHbBKcgpbBKbBKbBKbMJbMKbMLbFwbFwbJabMMbMNbFwbFwbFwbFwbFwbMPbaibzPbMQbMRbMSbMSbMTbMUbMVbMSbMSbMWbMWbMXbMYbMWbMZbtkbNbbvlbMZbNdbNdbvybNfbCDbNdbNhbNibNjbNkbNhbNhbHBbNmbNlbNhbNobhtbNpbNqbNrbLGbNtbNubNtbNvbNwbCybCybHRbHSbEvbDRbILbHTbILbbRbJLbINbKmbJNbNEbEGbNFaoGbNGbNHbNIbNJbNKbNLbNMbNNbNObNPbNQbNRbGIbGFbzLbMibNcbNabNcbNabNgbNebzLabqbGLbGLbGLbGLbGLabqaaabFcaaabFbaaabFcabfabeabqabeabfabfabeabeaaaaaaaaaaaaaaaaaaaaaaaaabdclHbdMbeWbeXaXLbPIbOabOabOabSZbSYbOabOabPKaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaabMvbGXbGXbGYbGXbGXbGXbGZbGXbGXbOdabqaUNbOedfQbOfapfbgYatjaqBbFpbOhbHgbOibOjbKBbHfbFpbOkbOlbBKbIUbOmbOnbBKbFucgobzKbOobOobJabBRbOpbOpbOqbOrbOsbOtbzKbzKbJbbOubOvbMSbOwbOxbOybOzbOAbOBbOCbODbOEbOFbMWbOGbOHbOIbOJbOKbNdbOLbOMbONbOObOPbNhbOQbORbOSbOTbNhbNhbNhbNhbNhbOUbhtbNpbOVbOWbspbOXbOYbHObOZbPabHObPbbspbSsbTZbEvbEvbEvbEvbEvbPdbPebPfbPgbPhbEGbNFaxhbPjbPkbPlbPmbPnbPobPpbPqbPrbPsbPtbPubPvbPwbPwbPxbPybPzbIpbPAbPBbPCbHGbIubIvbPDbPEbPEbGLabqabqbPFabqbPGabqbFcaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLbRnbTabTcbOabTebTdbUzbUybRtaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNaWDaUNbdQaUNaWDaUNaUNaUNaWDaUNaWDaWDaWDdfRbPMbPNbLcbPPbPQbFpbPRbPSbOibPTbPUbPVbFpbBKbBKbBKbBKbBKbBKbBKbFucgobzKbPWbFwbJabBRbFwbFwbPYbFwbPZbQabzKbQbbzPbfIbQcbMSbQdbQebQfbQgbQhbOBbQibQjbQkbQlbNsbQnbQobQobQobQpbQqbQrbQsbQtbQsbQubNSbQwbQxbQybQzbNTbQBbQCbQDbNhbTVbhtbQFbQGbQHbQIbQIbQIbNnbQJbQLbQMbQKbQIbQObQIbQPbQQbQRbQSbQTbEGbEGbQUbEGbEGbEGbNFbQVbQWbQXbQVbCMbCMbCMbCMbCMbQYbNObVpbRabRbbGGbRcbRdbRebRfbInbRgbRhbRibzLabqbzLbRjbRkbRlbGLabqaaabFcaaabFbaaabRmarBarBarBarBabearBarBarBaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbUAbfbbgNaXLbKlbVjbVkbOabTbbTdbVXbVlbKlaXLbgNbgQbVYaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbRubzzbaCbRvbaCbaBbaBbRwbaBbzzbaBbRxbzzbaBdfSbRyapfbgYaoXatkbFpbRAbRBbHfbHfbHfbRCbFpbRDbREbRFbRGbRHbRIapfbFuauCbzKbRJbRKbJabRLbRMbRMbRNbFwbFwbRObzKbRPbzPbfIbOvbMSbRQbRRbRSbRTbRUbOBbRVbRWbRXbRYbMWbRZbSabSbbSabScbNdbSdbSebSfbSebSgbNhbShbSibSjbSkbNUbSmbSnbSobNhbSpbhtbSqbbrbOWbQIbVrbVsbStbSubSvbSwbSwbSxbSybQIbQIbQIbQIbQIbQIbQIbEGbSzbSAbSBbEGbSCbQVbSDbSEbSFbQVbSGbSHasJbSIbCMbSJbSKbSLbSMbSNbSObSPbSQbSRbSSbRgbSTbSUbItbMjbMkbSVbPEbSWbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbIFbKlbUxbOabOabWabVZbXCbWbbKlbIFbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbcdbcebcebcebcedfUdfTdfWdfVdfYdfXdgadfZbLCdgbbTmapfbgYauyatkbFpbHhbTnbHfbHfbTnbTobFpbTparJarLbPPbPQbRHapfbFubTrbzKbTsbTtbTubTvbFwbTwbTxbTybTzbTAbzKbTBbzPbfIbTCbMSbTDbTEbTFbTGbOBbOBbTHbTIbTJbTKbMWbRZbSabSabSabTLbNdbSdbSebTMbTNbTObNhbTPbSibTQbTRbNhbTSbTTbTUbNhbTVbhtbTWbbrbTXaUJbUabUabUbbUcbUdbStbStbUebUfbQIbUgbUhbUibUhbUjbQIbUkbUlbUmbUnbEGbNFbQVbUobUpbUqbQVasJasJasJbUrbCMbSJbUsbUtbCNbCNbCNbUubGGbUvbGGbRgbUwbRibzLabqbGLbGLbGLbGLbGLabqaaaabeaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbIFbKlbXDbXFbXEbYQbXGcckbZObKlbIFbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNbUBbUBaUNaUNbNWaWDbQNdgRbQNdfNaWDapfbLDapfapfapfbgYauCatkbFpbTobUDbUEbHfbUEbUFbFpbUGapdapdatjbUHbXJapfbFuaoXbzKbzKbaibUIbUJbaibzKbzKbzKbzKbUKbzKbzKbULbjnbUMbMSbUNbUObUPbUQbURbOBbUSbUTbUUbUVbMWbUWbUXbUYbUZbVabNdcgqbSebVcbVdbVebNhbVfbSibVgbVhbQmcclcdBccmbNhcgrbhtbVnbbrbOWaUXbVtbVqbXcbYtbYsbVubVqbUebVvbQIbVwbVxbVybVzbUjbQIbVAbVBbVCbVDbVEbVFbQVbVGbVHbVIbQVbVJbVKbVLbVMbCMbVNbVObRabVPbCNbVQbSRbGGbSPbVRbVSbVTbPCbHGbIubIvbVUbVVbVWbGLabqaaabFcaaabFbaaabFcaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHbdMbeWbeXbeXaXLaXLbKlbKlcepbKlbKlaXLaXLbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaUNbWcbfdaUNdghdgjdgibBtdgkbBtdgldgmapfbLEauJbLKaoXbMCbWgbWibFpbFpbFpbFpbWjbFpbFpbFpbWkdeJdeHapdbWlbWmapfbFubWobzKcgsbWqbWrbWsbWtbWubWvbzKbWwbWxbWybzKbzPbfIbWzbMSbQdbTEbWAbWBbQdbOBbWCbWDbWEbWFbMWbWGbWHbWIbWJbWKbWLbWMbWNbWObWPbWQbNhbWRbWSbWTbWUbWVbWWbWXbWYbWZbXabhtbXbbbrbOWaUXbYubXdbXdbXebXfbXgbXhbNxbXjbQIbXkbVxbXlbXmbXnbQIbXobXpbXqbXrbEGbNFbQVbQVbQVbQVbQVbXsasJasJbXtbCMbVNbVObRaaVdbXvbVQbXwbInbSPbXxbRgbXybRibzLabqbzLbXzbXAbXBbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbeXbeXbeXbIFbIFceqbIFbIFbeXbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaUNbUBbUBaUNdgndgjbBtbBtdgobBtbsxdgqapfbXHavUavUavUbDLapdatkaoXaqBayBapdbXIauyauCapfapfapfapfapfbXKapfapfbFucgmbzKbXLbXMbXNbXNbWsbWtbXPbzKcgtbXRbXSbzKbDQbfIbXTbMSbQdbXUbXVbXWbXXbOBbXYbXZbYabMWbMWbYbbYcbYdbYebYfbNdbYgbSdaVsbYibYjbNhbYkbYlbYmbYnbNUbYobYobYpbNhbYqbhtbYrbbrbOWbQIbYvbYEbYwbStcbacbbbUcbNzbNybNBbNAbNDbNCbUCbPObQIbEGbEGbEGbEGbEGbNFaoGbYGbUrasJasJchGchFaXPasJbCMbCMbYJbNRbVPbCNbYKbYLbGGbYMbVRbRgbYNbSUbItbMjbMkbYObVVbYPbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbeXbeXbeXbeXbeXbdObeXbeXbeXbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabredgrdgtdgsdgvdgudgxdgwdgyapfapfapfapfbWmbYRavUbYSbYTbYUbYVbYVdfibYWbYVbYVbYTbYVbYVbYVbYZbYVaPTcgucgobzKbZbbZccgvbZebHrbZfbZgbzKbzKbzKbzKbzKbZhbfIbOvdeEbMSbZjbZjbZjbMSbMSbMWbMWbZkbMWbMWbZlbZlbZlbZmbZlbZnbZnbZobZpbZnbZnbNhbNhbNhbNhbNhbNhbZqbZqbZqbNhbZrdeFbZsbbrbZtbZubZvbZvbZvbZvbZvbZvbZxbZybZvbZvbZvbZvbQIbZzbWfbWnbWhbXibZEasJbZFbZGaoGbVLbZHbZIasJbYHckgasJarrbCMbZJbJWbZKbCNbCNbCNbZLbGGbZMbZNbRgbUwbRibzLabqbGLbGLbGLbGLbGLabqabqbRmabqbPGabqabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbKkbvhbvhbvhbvhbvhbvhbdObvhbvhbvhbvhbvhbvhbvibdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgrdgfdgzdgzdgzdgzdgzdgAaaaabqaaabZPbZPbZQbZRbZSapfbZTapfapfapfaYabZUbZUbZUbZUbZUbZUbZUapfcgHapfapfbzKbZYbZZcaacabbHrbWscaccadcaeayBapfcafbzPcagcahcaicajcakcakcakcalcamcancaocakcapcaqcaicaicarcascarcarcatcarcaucavcavcawcaxcaycazcaAcaBcakcakcakcaCcaDcavcaEbbrcaFcgKbajcaIcaJbZwcaLcaMcaNcaKcaOcaQcaPcaRbQIcaScaTcaUbYxbYycaXcdobZGcaZaoGaoGaoGaoGaoGcmHbXtbCMbCMbCMcbcbJWbNRcbdbbdbbPbKacbgcbhcbibVScbjbPCbHGbIubIvcbkcblcblbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHcerbMrbMrbMrbMrbMrcLLcLLcQccLLcLLbMrbMrbMrbMrbMrbNXaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgrdgJdgzdgzdgzdgzdgDdgraaaabqaaabZSbcEcbncbobZSapdcbpbPQcbqapfcbrbZUcbscbtcbucbvcbwbZUcgVcgUchnapfbzKbzKbzKbzKbzKbzKbzKbzKbzKaxqaoXapfcbxbzPcbycbzbekbekbekbekbekbekbenbekcbAcbBcbCbembekbekbekbvTcbDcbEcbFbekbekbekbekbekcbGcbHbekbekbenbekbekbekbekcbIbekcbAcbJcbKcbLcbMcbNcbOcbNcbPcbPcbQcbRcbScbPcbOcbTbQIbQIbQIbQIcbUcbVasIarrbdlcbXasIcbXazpbefaoGayoaoGbCMccaccbcccccdcceccfccfccfbMcbGGbGGbGGbRgccgbRibzLabqbzLcchcciccjbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaabPHbsdbsdbsdbPHbNYbbXcUIcUMcUIbbZaXOabqaaaaaaaaaabqaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgrdgzdgzdgzdgzdgzdgzdgraaaabqabqbZSccnccoccpbZSapdccqaEjapfapfccsbZUchyccuccvccwccxbZUapfapfapfapfavXchoccAccAccAccAchpccAccAccBbcGccCccDccEccFccGccIchschtccJccGccGccKccGbdabcXccLbcYbcXbcXbcXccMccNbcZbcYbcXbcXbcXbdbccOccPccQccQccQccRccQccQccQccSccTccOccUccVccWccXccYccZcdacdbcdccddcdecdfcdgcdhcdecdibZvcdjcdkbZvcbUcbVasIasIasIasIasIcdmcdocdocdpcdqcdrcdscdtcducdvcdwcdxbGGbGGbGGbGGbGGbInbGGbRgcdybSUbItbMjbMkcdzcblcdAbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdabdabdabdabdaXHcerbzhcWjbzhbNXaXOabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgrdgrdgBdgFdgFdgFdgrdgraaaabqaaabZScdCcdDcdEbZScdFapdcdGapfcdHceNbZUcdJcdKchvchycdNbZUceTceUceVbZUchychwchzchxaoXauyauJauCcdTcdTcdTcdTcdTcdTcdTchMchMchNchMcdUcdUcdUcdUcdVcdWcdWcdXcdYcdWcdZcdWceacebbbrceccedceecefceecegcehceeceeceibZubbgbbibbicejbZucekbZuaYxchOaYxbZvcenceocfDcdhcitcescdfcixcdhcetceubZvcevcewbZvcexceycezcdocdocdocdoceAceBceCceDceCceCbPmceFceGceHbGGceIbPwbPwbPwbPwbPwceJbGGbRgbUwceKbCMabqbGLbGLbGLbGLbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaabsdbsdbsdbsdbsdaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgGdgHdgHdgHdgHdgHdgHdgGaaaabeaaabZSbTYceMbTYbZSapfapfapfapfbZUchPbZUceOchQceRchychSbZUcfVcfWcfVbZUbZUceZbZUbZUbZUbZUbZUbZUcdTcfachTbgHchUcfecffchMchWchVchXcdUchZchYcdUciacjdciacjjcjhciacjdciacjmcfocfpcfqcfrcOmcftcOmcfucfvcOmcftcOmcfwcfxcfxcfxcfxcfxcfybZucfzcfAcfBbajcfCcbOcdfcdhcdhcdecfDcdhcdhcdecfEbZvcfFcfGbZvcbUbgJcfIceCceCceCceCceCcfJcfKcfLcfKcfKbCMcfMcfNcfOcfPcfQbInbGGbGGceIbPwcfRbSSbRgcfSbRibCMabqabqabqabqabqabqabqabqbPFabqbPGabqbRmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaaaaabTYcfTbTYaaaabqaaaaaaaaabZUceNbZUbZUbZUcfUbZUbZUbZUcjscjrcjvcjubZUcfXcfYbZUcfZcgacgbcgccgdcgecgfcggcgfcgfcjwchMcjycjxcjzcdUcjBcjAcjDcjCcjFcjEckdcjGckyckxckBcjdcgwcgxcgycftcgzcgAcgBcgCcgDcgEcgFcgGckEcfxcgIcgJckGcfxcjUbZucgMcgNcgOcgPcgQcgRcgScgTbYAbYzbYCbYBbYBbYzbZAbYDbZCbZBcaVbZDcbVasIchbchccfKcfKcfKcfKcfKchdchechfbCMchgchhbGGbGGbSPchibIqbIqchjchkchjbIqchlchmbRibCMbCMbCMaUVaUUaUVaUUaUVaaabFcaaaabqaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeabqabqbTYceMbTYabqaaaaaaaaaaaabZUcPjbZUchqcjichrbZUckHbibckJchychycjkbZUchAchBchCchDcaWcmJccrchHchIchJchKchLckKckLchMckNckMckOcdUckQckPcjDckRckUckTclEclxclLclKclOclMcgwcgxcgycibciccidciecifcigcihcihciiciicelcikcilcimcfxcinbZuciocipciqbajcircisciuciucivciuciwciucKCcJFciybZvcizciAciBciCcfJaoGaoGaoGcfKciDciEciFciGciHciIciJbCMciKciLciMciNciOciPciQciRciSciTciUciVciWciXbRiciYciZciYcjacjacjacjacjbabqabeaaaabqaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaacjcaaaaaaabqaaabZUbZUbZUckvckwclQcjecjfcjgclRcjeclTckAclUbZUbZUcjlclWbZUcdNcjncjocjpcdTcjqclYclXcjtclZcmachMcmccmbcmdcdUcmfcmecdUcmgcmkcmhcmhcmlcmqcmpcmTcmscjHcjIcjJcibciccicciccjKcjLcjMcjNcjOcjPceLcjRcjScjTcfxcjUbZubZubZubZubZvbZvcjVbZvbZvbZvbZvbZvbZvbZvbZvbZvbZvbZvbZvbZvcbUcjXaoGcjYcjZcfKckackbckcaRQbhvckfbhHbCMckhckhckickhckjckhckickkckjckjbRickhcklckmcknbCMbCMbCMckockpcjackqckoaaabFcaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaackraaaaaacksckscktckuclJcPjbZUbZUbZUbZUbZUbZUbZUbZUbZUbZUbZUbZUckCcmXcmXcmXcmXcmXcmXcmXcmXcmXckFcjtcnackIchMchMcnbchMcdUcndcnccnfcnecnicngcnmcnlcmqcnncnociacgwckVcgycOmckWckXckYckZclaclbclccldclecfxclfclgclhcfxclicljcljcljcljcljcllclmcljcljcljclocljcljcljcljcljclqclrboccdocltcluclvclwbVKcfKcnrclyclzclybiBbiUbiObCMbCMbCMcgnbzLchRbzLcgnbzLchRchRcijbzLcijbCMbCMbCMabqabqabqclHcjaaWCabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabeabqclIabqabqabqaaabZUcmSbZUcofcoecmYcjecjecmUcogcogcogcmVcmVcmVcmWcohcmXcoicokcojcmXcoicolcojcmXclVconcomcopcoocorcoqcoscdUcoucotcnfcovcowcoocoociacoxciacoycoocozckVcmmcmncmocmocmocmocoBcoAcmrbkSbkTcfxcmucmvcmwcfxcmxbkXcmzcmzcmzcmzcmAcmzcmBcmBcmBcmBcmBcmBcmBcmBcmBcmCaoGasJasJasJasJaoGasJasJcfKcmEcmFbkYclybiBbiUbkZblrabqabqcmKabqcmLabqcmKabqcmMcmNcmOabqcmOabqabqabqabqaaaaaacmPcjacmQaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBaaacmRaaaabqaaabZUbZUbZUbZUbZUbZUbZUbZUbZUcodcoDcoCcoCcoCcoCcoCcoCcoCcoCcoEcpbcoFcpBcpzcpbcpCcmXcdTcpEcpDcdTcoocpGcpFcpHcdUcpJcpIcdUcpKcpLcoocpNcpMcpPcpOcpQcoocpRcntcnucmobmRcnwcnxcnycnxcnzcmocnAcnBcnCcnDcnCcfxcfxcnEbZUcmzcnFcnGcnHcnIcnJcmBcnKcnKcnKcnLcnMcnNcnKcmBcmCaoGclsasIcnPcnQaoGcnRcnScfKaTJbtLbrWbvxbulbiUbobclAabqbGLcnYbzLcnYbGLcnYbzLcnYbGLcnZbzLcoabGLabqaaaabqabqabqcobcjacocabqabqabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqarBaaacjcaaaabqaaabZUcpucpvcpwcpxcpycpScpAbZUcodcFQcoCcpUcpTcpWcpVcpYcpXcoCcqacrdcqbcrfcrecrgcqbcricrhcrkcrjcrmcrlcrocrncrtcrpcrwcrucrycrxcrAcrzcrBcmqcrCcmqcrDciacgwckVcmmbWecoGcoHcoIcoJcoKcoLcmocoMcoNcoOcoPcmzcdNcjncrFcrvcmzcoRcoScoTcoUcoVcmBcnKcoWcoXcoYcnKcoZcpacmBcmCaoGaoGaoGaoGaoGaoGaoGaoGcfKcfKcfKclFclAclBbwMclDclAabqbGLcphcpicpjbGLcpkcplcpmbGLcpncpocppbGLabqaaaabqaaabCMcpqcprcpscptaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabeaaackrabqabqabqcmicqYcqZcracrbcpycrccdKbZUcodcjncoCcrGcrEcrHcrEcrEcrVcoCcsCcsGcsEcsIcsHcsNcsEcsPcsOcsScsQctqctgctBctActDctCctGctFctIctHctKctJctMcrCcrCcrCctPctOcgwckVcrWcmocqdcqecqfcqgcqhcqibyScqkcqlcqmcqncmzcqocqpcqqcsncmzcqscqtcqucqvcqwcmBcnKcnKcqxcnKcnKcqycqzcmBcmCbZUcqAcqBbZUcqCcqDcqFcqEcqHcqGbZUcsoclAcqrbArcqIclAabqbGLcqKcqLcqMbGLcqNcqOcqPbGLcqQcqRcqSbGLabqabqabqabqcptcqTcqUcqVcqWabqabeabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBaaackrabqaaaaaacmicZfcrccqZcswcpycsxbZUbZUcsyctQcoCctTctRctWctVcrEctXcoCctYcuactZcpBcuecuacukcmXcuFcuLcuKcuMcnncuNcnncuOcnncnncnncuQcuPcuScuRcuTcmqcrCcmqcuUciacgwckVcrIcmocrJcrKcrLcrMcrNcrOcmocrPcrQcrRcrScmzcrTcrUctSctEcmzcrXcrYcrZcsacsbcmBcmBcscbANbIObIOcmBbIPcmBcsgcshcsicsjbZUcskchychychycdKcslbZUbKxctucnXbyPcNmctuabqbGLcqKcsqcqKbGLcqNcsrcqNbGLcsscstcssbGLabqaaaabqaaacqWcqUcsucqUcjaaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabeabqckrabqaaaaaacmicsvcqZcZhctxcpyctyctzcdOcodcuVcoCcuXcuWcuZcuYcvbcvacoCcvccvdcvdcmXcvecvecvfcmXcvgcvicvhcvkcPycvjcjQcmjcjQcvjcvjcvjcvocvLcoocvNcvMcvRcvOcwbcoocwcckVcsTcmocmocsUcsVcsWcsXcsYcmocsZcnBcfwcfwcmzctacmzctbcmzcmzcfwctcbQvcfwcfwctectfcwdcthctictjcrqctlcmBctmbZUctnctobZUctpcdKchychychyctrbZUbKxctubQAbKRbQZbSlabqbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLabqabqabqabqcjacqUcqUcqUcqWabqbFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaabqaaaaaaarBaaaclIaaaaaaaaacmicmicqZcpycpycqZcqZcuJcdOcodcuVcoCcwfcwecwgcrEcrEcwhcoCcwicwjcwjcwkcwjcwlcwjcwmcwjcwocwncwqcwpcvjcnpcnqcwrcwucwscvjcwvcwwcoocoociacwxciacwycoocwzcubcuccudcwAcufcugcuhcuicujbWeculcumcuncuocupciccuqcurcusciccutcuucuvciccuwctecuxcuycuzcuAcuBcuCcuDcmBcmCbZUbZUcuEbZUcwBcuGchychycuHcuIcmibKxctuctucgWctuctuabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqaaaabqaaacjacqWcptbCMcptaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaabqaaaaaaabeaaacmRabqaaaaaacmicvZcqZcwacqZcqZcsxbZUbZUcodchycoCcwDcwCcxmcrEcxocxncoCcxpcxrcxqcxscxqcxucxtcxtcxtcxwcxvcxycxxcvjcxAcpZcxBcpZcpZcxDcxCcxFcxEcxHcxGcmqcxIcxJciacgwckVcvmcvncxRcvpcvqcvrcvscvtcvucvvcvwcvxcvycvzcvAcvBcvCcvDcvEcvDcvFcvGcvHcvIcvJcvKcgYcgXchacgZclSckScszcoQbZUcvTcvUcvVcbvchychychycvWcvXbZUbXOcynctubYhctucspaaaaaaaaaaaaaaaabqaaaaaaaaaabqaaaaaaaaaaaaabqaaaabqaaaaaaabqaaaabqaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaabqabqaaaaaaarBaaacjcaaaaaaaaacmicxkcpycracpycxlchycyjbZUcymchycoCcoCcoCcypcyocyocyocoCcyrcvkcsJcsJcyscsJcyscsJcsJcyucytcywcyvcyycyxcyAcyzcyCcyBcyGcyDcyHcmqcyIcmqcmqcyJcmqclMcgwckVcvmcwEcyKcwFcwGcwHcwIcwJbWecwKcwLcwMcwNcwOcwPcwQcwRcihcihcwScwTcwUcwVcwWcwXcwYcwZcxacxbcxccxdcxecmBcmCbZUcxfcxgcxhcsicxicuHchychycxjcmictscttdbjctvdbjarAabqabebFbbFbbFbbFbbFbbFbabebFbbFcbFbbPGabqbFcabqabqabebRmbRmbRmabeabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaaaaaarBaaackraaaaaaabqcmicpycxlcpycyichycdLcykcylcyZchyczpczrczqcztczsczsczuczpczvcxycysczxczwczAczyczBcysczEczDcAhczJcxDcAicAkcAjcAmcAlcAocAncApcApcApcApcAscArcApcAtcAvcxKcxLcmocmocmocmocmocxMcxNcmocmzcmzcxOcxPcxQbYXbYIbYYcxUcxUcxUcxUcxVcxWcxXcxVcmBcmBcmBcxYcxZcyacybcmBcmCbZUcvTcycbZUcydcyecyfcygcygcyhbZUabqabqabqabqabqabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaabFcaaaaaaabqaaaaaaabqaaaabqabqaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBarBabqabearBaaaabearBarBabqabqabqckrabqabqabqcmicmicmibZUbZUcznczobZUbZUcAwcAycAxcABcAzcBjcAMcBmcBlcBocBncBqcBpcBscBrcBucBtcBFcBEcBHcBGcxycCacvjcCccChcCgcCjcCicyGcCkcCmcClcClcnncCocCncnocoocCpcyLcyMcyNcyOcyEcyPcyQcyRcyScyTcyUcyVcyWcyXcyYcaYczaczbczcczdczeczfcxVczgczhcziczjczkcmBcmBcmBcmBcmBcmBcmCbZUbZUbZUbZUbZUbZUbZUcmibZUbZUbZUaaaabqaaaaaaaaaabqabqabqabebFcbFcbFcabebFcbFcbFcabebFcbRmbFcbFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczmaaaaaaaaaabqaaaaaaaaaabqaaaaaaabqaaaclIaaaaaaabqabqaaaaaabZUbZUbZUbZUbZUcAgcodchyczpcCrcCqcCtcCscCvcCucCycCxcCEcyscCGcCFcCScCKcDdcysczEcDecwqcDfcDfcDfcDfcDfcDfcDgcDgcDgcDgcDhczCczCczCczCczCcDiczFczGczHczIcMYczKczLbZUczMczMczNczMczMczOczPczQcaYczRczSczTczUczVczWcxVczXczYczZcAacAbcrUcfYclPbZUcAccmYcAdbZUcAecfYbZUaaaabqaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqaaaabqaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqabqabqcAfcAfcAfcmRcAfaaaarBabqabqabqbZUcFRcFScFRbZUcDkcDjcDlcAxcDncDmcDqcDocDscDrcDwcDvcDxcsJcDJcDycDPcDOcDScsJcDVcDecwqcDWcEacDXctLcEbcEccBvcBwcBxcBycBvcAqcEdcEecMscAuczCcnscgxcAAbZUcMZcACcADcAEczMcAFcAGcAHczMcAIcAJcAKcbfcEfcANcAOcAPcAQcARcxVcAScATcAUcAVcAWcrUcAXcAYcAZcBackDcBbcAZcBccvWcmiabqabqabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeabqcBdcBecBecBecBecBfckrcBgcBhcBhcBhcBhcBiabqabqaaaaaaabqbZUbZUbZUbZUbZUcuVcBkcFTczpczrcEicztczsczscEjczpcxpcEkcsJcsJcsJcsJcsJcsJcsJcEmcElcEOcEncERcEPcETcEScEUcBvcCwcEVcEWcBvcBzcBAcBBcBCcBDczCcEXcgxcBIcBJcBKcBJcBJcBJczMcBLcBMcAGcxScBOcBPcBQcBRcBScBTcBUcBUcBVcAQcxVcBWcATcBXcBYcBZcrUcbmcCbbZUcmCchycCdbZUchycCebZUaaaabqaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaDaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaackraaacCfcCfcCfcCfcCfaaaarBaaaabqabqaefbZUcDcbZUcctcuVcBkckDcEYcEYcEYcFacEZcEZcEZcEYcFccEkcFdcFfcFecFhcFgcFicFdcFPcFjcFVcFUcFXcFWcFZcFYcEUcGacGccGbcGdcGacCzcCAcCBcCCcCDczCcGecgxcmmcBJcCHcCIcCJcFoczMcCLcAGcCMczMcCNcCOcCPcxUcCQcCRcPCcCTcCUcCVcxVcCWcCXcCYcCZcBYcrUbZUbZUbZUctmbZUcDabZUbZUbZUbZUabqabqaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaabqaaaabqabqabqaaacDbaaaabqaaaabqaaaabqaaaarBaaaabecvQcvPclJcDQcDRcDQbgZcGgcIbcEYcGncGicGpcGocGOcGEcEYcxpcHbcHacHdcHccHgcHecHicHhcHlcHkcHycHmcHKcHDcIdcIccIecDYcDZcIfcIhcIgcIjcIicIkcDtcDucIlcIpcDzcDAcDBcDCcDDcDDcDEczMcDFcDFcDGczMcgCcCOcDHcxUcxUcxUcxUcxUcxUcxUcxVcxVcxVcDIcxVcxVcrUcAccmYcmYcDKbZUchycDLcDMcDNcDMckscksaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqckrabqcAfcAfcAfcAfcAfabqarBabqarBabqabqbZUcENbZUcdNchycJRcDTcEYcIrcIqcIvcGocGocIUcEYcIVcIWcFdcIYcIXcJacIZcJbcFdczEcDecwqcDWcJdcJccJecxzcJfcBvcJScJhcFbcDgcJUcJTcJVcEgcEhcbYcJWcgxcEocEpcEqcErcErcEsczMcEtcEucEuczMcEvcEwcExcEycEzcEAcEBcECcEDcEEcEFcEGcEHcEIcEJcEKcfZcELchychybZUbZUcEMbZUbZUbZUbZUabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcBdcBecBecBecBecBfckrcBgcBhcBhcBhcBhcBiabqaupaaaabqaaaaaabZUbZUbZUbZUbZUbZUcEQcEYcJYcJXcKacJZcKccKbcEYcKdcKfcKecKhcKgcKjcKicKkcKeczEcDecwqcKZcKZcKZcLdcLdcLdcBvcGfcKncGhcDgcKocGjcGkcGlcGmczCcKqcFkcFlcBJcFmcCIcFncWcczMcFpcFqcFrcxScFscFtcFucbZcFwcFxcFycFzcFAcFBcFCcFDcFBcFEcFFcEKbZUcFGbZUcFHcFHcFIcFJcFKcFLcFMabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcFNcALcFNabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaaclIabqcCfcCfcCfcCfcCfaaaarBaaaabqaaaaaaaaabZUcPGcNacNbbZUcGZcEYcKzcKycKDcKAcGocKHcEYcKWcKXcFdcFdcFdcKecFdcFdcFdcKYcDecwqcKZcLbcLacLdcLccLecBvcBvcLfcDgcBvczCczCczCczCczCczCcLgcGqcGrcGscGtcGucGvcGwczMcGxcGycGzcGAcGBcGCcGDcdlcGFcGGcGHcGIcGIcGJcGKcGLcGMcGNcdncGPcGQcGRcGScGTcGUcGVcGVcGVcGWcBNabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcGYcFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaabqaaaabqaaaabqaaacmRaaaabqaaaabqabqabqabqaupaaaaaaaaaaaaabqbZUcNOcNPcNQbZUcEQcEYcLhcGocLicGocGocLjcEYcxpcLvcLkcLKcLwcLWcLwcLwcLwcLYcLXcxycKZcMacLZcLdcMbcMccImcMecMdcMrcMfcIocMwcIncMLcImcMScMTczGczHcHncHocHocHpcHqczMcHrcHscHtcDpcHvcHwcHxcdMcHzcHAcHBcHCceEcHEcHFcHGcHHcHIcHJceQcHLcHMcHNcHOcHPcHQcHRcHScHTcBNabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcHUcALcHVcHWcHXcALcHUabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqcHYabqcAfcAfcAfcAfcAfabqarBaaaaaaaaaaaaaaabZUcOJcOKcfbbZUcMUcEYcMWcMVcNccMXcNscNicEYcNIcNKcNJcNMcNLcNNcNKcNKcNScOqcNUcwqcKZcOIcOHcLdcOLcOUcImcPkcOYcPlcIncIocPucPwcPvcImcIscnscgxcItcBJcIucFOcIwcIucIxcIxcIxcIxcIxcIycxPcIzcEycIAcIAcIBcICcIDcIEcIFcIGcIHcIIcIJcEKcIKcILcIMcEycINcBNcBNcFHcBNcFHarAabqaaaaaaabqaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqabqcALcALcIOcIPcIPcIPcIQcALcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcBdcBecBecBecBecBfckrcBgcBhcBhcBhcBhcBiabqarBaaaaaaaaaaaaaaabZUbZUcfccPEcPFcPxcEYcEYcEYcEYcEYcEYcEYcEYcPycPycPycPzcPycPycPycPycPycPBcPAcPDcKZcKZcQbcLdcQfcLdcImcyqcMdcQzcIncIocQAcQCcQBcImcJgcnscgxcvmcwEcQKcJicJjcJkcJlcJmcJncJocJpcJqcCOczQdgSdgSdgSdgSdgSdgScJrcJscJtcJucJvcJwcEKbZUcFGbZUcFHcJxcJycJzcJAcJBarAarAabqabqabqabqabqabqabqaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqcJCcJDcJCcIPcJEcIPcXxcJGcFNabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaaclIaaacCfcCfcCfcCfcCfaaaaupaaaaaaaaaaaaaaaaaabZUbZUbZUbZUcJRcogcogcogcogcNTcogcogcQVcogcogcogcRkcNTcNTcRlcRocPycRpcNUcRLcREcwjcRMcwjcRMcSvcImcSBcMdcSCcIocSPcSMcTncTecImcMScEXcgxcvmcKpcTwcKrcKscKtcKtcKtcKucKvcJpcgCcCOcKwdgScKxcfHcfscgLdgTcYScKBbRzcKEcKFcEKcrUcKGccscfYcFHcFHcFHcFHcFHcHfcKIarAabqaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqabqcALcALcKJcIPcIPcIPcKKcALcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaaaaaabqabqabqaaaaaacKLabqaaaaaaabqabqaaaaaaarBabqaaaaaaaaaaaaaaaaaaaaaaaabZUbZUbZUbZUbZUbZUbZUbZUbZUbZUbZUcoDcuVcTFchycoDcTZcjicUacUocUecUqcUpcUpcUrcUpcUFcUVcUUcVbcUWcVmcVlcVucVtcVEcVvcWkcVKcWGcWlcWHcIxcIxcLlcLmcLncLocLpcLqcLrcJpcLscLtcLucBNcKxcfHchuchuchEcLxcLycLzcJucLAcEKcdNcLBceNchycLCbZUabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcHUcALcLDcLEcLFcALcHUabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaacKLaaaaaaaaaaaaabqaaaaaaaupaaacHZcHZcHZcFvcHZcHZcHZaaaabqaaaaaaaaaabqaaaabqabqabqaaabZUcWIchychychychycWTchycDUcWUcwncXrcXlcXlcXwcXAcXycXYcImcYocYncyFcIncYIcYycYNcYLcImcMgcMhcgxcmmcIxcMicMjcMkcLocLocMlcMmcMncJpcMocMpcMqdgScKxcfHchuckedgTcYTcKBcMtcMucMvcEKcjnchyceNchycMxbZUabqaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcMycFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabearBarBarBaaaaaaaaacKLaaaaaaaaaarBarBarBauparBabqcHZcIRcIScIRcITcIRcHZcHZcFvcHZcFvcHZcHZaaaaaaabqaaaaaacHZcHZcHZcHZcHZbZUcKVbZUcDUcYOcDecRLcRUcRUcRUcRUcRUcRUcRUcImcImcImcImcYWcImcImcImcImbZUcNdcgxcmmcIxcNecMjcLocLpcLocNfcNgcNhckzcNjcNkcNldgVdgUdgUdgUdgUdgUcNocNncNpcNqcNrcEKchychyceNchybZUbZUbZUabqabqaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcFNcALcFNabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaarBabqcNtabqarBaaaaaaabqaaaaaaabqaaacHZcJHcJIcJJcJKcJHcGXcJMcJNcJOcJPcJQcHZaaacZmcIacIacIacLRcLTcLUcLVcHZcZvcZqcZwcDUcZIcZycZQcZOcZXdeidafdaddakcRUcNRcmVcmVcmWdancjecmYcmYcmZcNVcNWcNXcBIcIxcNYcNZcOacOacOacObcOccOdcOecOfcOgcOhcOicOjcOkcOlcJLcOncOocOpclncOrcOscOtcmYcmYcOucOvcOwcOxbZUbZUbZUcksaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaarBaaaabqaaaarBaaaaaaabqabqabqabqabqcHZcKMcHjcKOcHucKMcKMcKQcKRcKScKTcKUcHZaaadaodaucMMcMNcMOcMPcMBcMQcMRdaydaxdaMdaLdaOdaNdaPcYCdaUdaQdbbdaVdbfcRUcOMbZUbZUbZUbZUbZUbZUbZUbZUczIcONcOOcOPcOQcORcOScOTdblcOVcOWcLpcOXclCcOZcPacPbcPccPdcPecPfcPgcPhcPicOpclNcPjbZUbZUbZUbZUbZUdenclGcPmclJcPnclJcPoabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBarBarBarBarBaaaaaaaaaaaaaaaaaaaaacHZcLGcLHcLIcLJcvScjWcLMcLNcLOcLPcLQcLRcIadbpdbucFvcFvcHZcNFcNGcNHcHZcZvdbvdbycPydbFdbCdbGcRUdbLdbHdepdbNdeqcRUcOMbZUcPHcPIcPJbZUcPKcPLcPMbZUcPNcPOcPPcIxcPQcPRcPScPTcPUcPVcLpcPWcIxcPXcPYciccPccPZcQadcdcKNcQdcQecOpchycPjbZUcQgcQhcQibZUcQjcQkcQlbZUbZUbZUcksaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFvcMzcMAcMBcMCcMDcMEcMFcMGcMHcMIcMJcMKdcKdcKdcLcFvaaacHZcHZcHZcHZcHZdehdegbZUcPycPycPycPycRUcRUdercRUcRUcRUcRUcOMbZUcQDcQEcQFcQGcQHcQIcQJdescQLcQMcQNcIxcIxcIxcIxcIxcQOcIxcQPcrUcrUcfwcQQcfwcOpcOpcOpcOpcOpcOpcOpcOpchycQRcQScQTcQUbeVcQWcQWcQXcQYcQWaaaaaaaaaaaaabqabqaaaaaaabqaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHZcNucNvcNwcNxcNyclkcNAcNBcNCcNDcNEcHZcFvcFvcFvcFvaaaaaabZUcQvcQxcQxcQydejcyEcyEcyEcyEcyEcyEcyEdekcRndetcRmcRmcRqcRrcRscRtcRucRvcRwcRxcRycRycRzcRAcRBcRCcRDcmYcmYcmYcRFcmYcRGcmZcRHcRIcRJcRIcvlcmYcmYcmYcmYcOtcmYcmYcmYcRNbZUcnOcROcRPcQWcRQcRRcRScQWabqabqabqabqabqabqabqabqabqabqabqabqaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqcHZclpcOzcKMcOAclpcOBcODcOCcOEcOFcOGcHZaaaaaaaaaabqabqbZUbZUcRibZUbZUbZUcRjbZUbZUbZUbZUbZUbZUbZUbZUcSibZUbZUbZUbZUbZUcSjcRtcSkcRtcSlcSmcSncRtcSocSpcSqbZUbZUbZUbZUbZUbZUcCdcSrcfZbZUcSscStcSubZUcvYcwtchybZUbZUbZUbZUbZUbZUbZUbZUbZUcuEcQWcSwcSxcSycQWaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHZcPpcPqcKMcPqcPrcPscKMcKMcPtcKMcKMcHZaaaaaaaaaaaaabqcRhcSacSbcRhcSccSdcSecSfcSgcShcRhdemdelcSQcSRcSScSRcSTcSUcSOdexcSXcRtcSkcRtcSYcSZcTacRtcTbcTccTddeocTfcTgcThcTibZUcTjbZUbZUbZUcTkcTlcTmbZUcmicmicmibZUcTocTpcTqbZUcTrcTscTtbZUctocQWcTucTvcmtcQWaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHZcQmcQncKMcQocQpcPscQqcQrcQscQtcQucHZaaaaaaaaaaaaaaacRhcSIcSJcRhcSKcSLdeIcSNcRhcRhcRhdeLcTGcTHcTIcTJcTKcTLcTLcTMcTNcTOcTPcTQcRtcSYcTRcTacRtcSocSpcSYcLScTTcRtcTUcTVbZUcTWbZUabqaaacNzcTYcNzaaaaaaaaaaaabZUchychychycmycjicUbcjicUccUdcQWcOycUfcOycQWaaaabqaaaabqabqaaaaaaabqaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHZcQZcRacKMcRacQZcRbcRccRdcRecRfcRgcFvaaaaaaabqaaaaaacRhcTycTzcRhcTAcTBcTCcTDcRhcTEdeMdeNdeNdeNdeOdePcUscTHcTHcUtcUucUvcUwcUxcUycSYcUzcTacRtcSocUAcUBcUCcUDcUEdeQcUGbZUcTjbZUabqabqcNzcUHcNzabqaaaaaaaaabZUchychychycUJcUKchycULbZUcmicQWcOycWJcWmcWKcWKcWKcWKcWKcWKcWKcWKcWLarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqcHZcHZcFvcHZcFvcHZdeucRVcRWcRXcRYcRZcHZaaaaaaabqaaaaaacRhcUgcUhcUicUjcUkcUlcUmcRhcUncRhcSOdeUdeYdeXdfocUYcUZcVacSOcSWcTacRtcVccVdcVecVfcVgcUwcVhcVicVjcVkcVkcSVcTScVkbZUaefabqaaaaaacNzcVncNzaaaaaaaaaaaabZUcVocVpcVqbZUcVrcVscVqbZUaaaabqcOycOycOyabqaaaabqaaaaaaabqabqaaacWRarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqcSzcSAdewcKPcSDcSEcSFcSGcSHcHZaaaaaaabeabeaaacRhcTycUNcRhcUOcUPcUQcURcUScUTcRhcSOdfrcVwcVxcUXcVycVzcVAcSOcSOcTacRtcRtcRtcSYcSZcTacRtcVBcVCcVDcTXabqabqaaaaaaabqaefabqaaacVFcVGcVHcVGcVIaaaaaaaaabZUbZUbZUbZUbZUbZUbZUbZUbZUaaaabqaaaaaaaaaabqabqabqabqabqabqaaaaaacWRarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaacTxabqdeycHZcHZcHZcHZcHZcHZcHZaaaaaaabfaaacSOcSOcSOcSOcSOcSOcSOcVQdfscSOcSOcSOcVTcVUcVVcVWcUXcUYcUZcVacVXcSOcVYcRtcVZcWacWbcrrcWdcWacWecRtcWfcVkaaaabqabqabqabqabqabqabqcVGcWgcWhcWicVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaabqaaaaaacWRaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaabfaaadfvcVLcVMcSOcVNcVOcVPcVQcVRcVScSOcUXdfwcWvcWucWwcWpcWxcWwcWycWzcSOcWAcWBcWCcWBcWBcWBcWBcWBcWCcWBcWDcTXaaaabqaaaaaaabqaaaaaaaaacVGcWEcWFdezdeAcxTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZjaaaaaaaaaaaaaaaaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabfaaadfvcWncVMcWocWpcWpcWpcWqcWrcWscWtcWpdgcdfGcWVcWVcWWcWVcWVcWXcWYcSOcWZcXacXbcXacXacXccXacXacXdcXecXfcVkabqabqaaacVGcVGcVGcVGcVGcVGcXgcXhcXicVGcVGcVGcVGcVGcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaabqaaaaaaaaaaaaaaacVJaaaaaaabqaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaakIanvanwanyanxanzanAanBanCanDanEakyamtanGamvanIakyabqaaaaaaabqaaaaaaaaaakDakDakDamxariarjaqaarMarkaAsarOagBarQarVarSagBarXascarYaosaoqasfaseaovamOaslashasnasmasqasoassasraswastasxapFaojaojaojaojaojaojaokaxYaWvafbcYdasyakhaszambaoycYbaozameaoAamgaoBaoCairairairairairaoDaoEaoFaoGapeaoGaaaabqaaaamkaoIaoJankaoJaoKamkabqaaaapgaoMapgasTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaoOaoPaeGaoQaoRaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaktaoSaktaoTaoUaoVaoWaktaoXaoYaoZapaapbapcapdaphakyabqapfapfalLapfapfaaaakDapSapSamxasLaqHapjasRasMatsaxJagBattasaamKagBatuaqNatvatwaoqaoqaoqaoqakDakDatxakDakDakDaxLatzatyaxLatBatKatKatKatFatFatFatFatFaokaxYaWxafbaimasyakhajpapTapUcYeapWapXapYamgapZaqDairairairairairaqbafbaqcaoGapPaqeaefaefabqamkaqfaqgaqhaqiaqjamkabqanoapgaqdapgansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaqmaqnaeGaqpaqoaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktaqqaqraqraqraqsaqkaktamuaqvapdakyatHaqyaqzaqAakyapfapfaqBaqCanEajgajgakDaqFaqEamxatIaqaatMaqlarkaAsauHagBauOauSauPagBauUauWauVauZauYakDavcavfaveaviavhavpavjakDavsavuavtavZavwawkawdawdawlalWamoawpawmafbafbafbafbafbawqarlajpajparmcYxaroarparparqapZaqDairairairairairaqbarraqtaoGaqeaoGaoGapeaoGamkartaruankarvarwamkabqapgapgaoMapgansaoGaoGaoGcKIacJaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFarxaryarzaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarBaaaaaaarAaaaarAaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaaktarsarDarEarFarGarCaktapdaqvapdapfarIapdapdapdarJapfarKarUamzarNajganHarWarParHaumazcaCTawraorawsawtarZagBawuauSawyagBagBagBawzawBawAakDawCakDawDawFawEakDawIakDawQaxjaxfavtaxHaxNaxMaxParRaEgaEgaEgasAasuakhaxSasvasvaxVasBasCasCasDcYzasFasGasGasGasHaqDairairairairairaqbasIasJaoGaqtasKaouasJasNamkasjasgasQasOasPamkabqansasUasVasWaoGauodgCbkjavNavNblzaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFaeFaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarAabqabqarAarAarAabqaaaarAarAataarAarAaaaabqapfapfalLapfabqaaaabqabqabqabqabqapfalLaktaktatbatcatdaktaktaktaoXateaoZatfapbatgapdapdatiapfaoXaElaEjajgajgatlatmaquapOamxamxamxakDakDatpatqatrasSaytayVayTayXayWagBawzawBaosakDakDakDakDakDakDakDakDakDayYazaayZazdazbazxatKatKamOamOamOamOayGafbaeNazCaeNafbatNatOatPatQatRcYGatTatUatVatWatXatYatZatZatZatZatZauaaubayvaoGasJasJasJasJaudamkaueatLaugaufauhamkabqansaujaukaulaoGdgCdgCbnGblAbvublBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaupabqarAabqaupabqarAarAabqarAarAarAarAarAaaaaaaaaaapfauqauCapfautausausausausausauuapfarKauqapfauwauxaoXauyauzapfauAauBauCapfarIatjauDauEarJapfauGaNEauIajgavoatmakeakfaqwajgauLamxauMauNaqJatqapnauQaAeauTauRaAjaAhauXaAkawBaosakDaAlaAnaFgamEaAoaAnaFgakDaApaAtaAqaAvaAuazxavkavlavlavmavnamOayGafbaBraBsavqavravravravravraByaCmaCeavvavvavvavvavvaDeaoGaqGavyavzaoGaoGasJaoGavAawMavCasJavDavEavGavFavIavHavJamkapeansarTavLavMaoGdgCdgCblyavNavNbnHaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAabqarAabqarAarAarAataabqabqabqarAarAabqaaaabqabqalLavQavSavRavTapdapdapdapdapdaweavVawfaoZavWawKatkapdavYavXapdatkaxqajgajgajgajgajgajgajgajgajgajgawgajgawhajgajgajgajgajgajgamxawiawjaqJatqatrasSavdaDDaDgaEVawnaqYaFzaFBaFAakDaFVaAnaFXamEaGraAnaGEakDaGFaGIaAqaHfaHfaHhatKawGawHawGaHZamOayGawaaBraIgavqavrawNawOawPawoawRawSawTavvawUawVawWavvaoGaoGasJaubasJasIaoGayvaoGavzasJawLasJaoGawYayqamkamkaxaaxbamkayxansansaxdaxeaoGaoGbnIaxhaoGbplaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarAarAarAarAabqarAarAabqauparAarAabqabqabqabqapfapfawcapfapfaxlaxkaxkaxkaxkaxkaxwapfapfapfapfaxmaxnaxoaxoaxoaxoaxpaxqajgaxraxsaxtawXaxvaxZaxxaxyaxzawZaxBaxuajgaxDaxEaxEaxEaxFamEaxGaICaqJaxIaIIaxKaqYaIVasSaJyasdagBamEaKaamEamxaKbaKAaKcamxaKbaKBaKcakDaKOaMoaLvaKOaNoawdatKaxWaxWaxWamOamOayGafbdeeaAAdefavrayaaybayaawoaycaydayeayfaygayhayiavvathaoGaykaylaymaynaoGasJaoGaoGaoGayoaoGaoGaxAaxOaxCamkamkamkamkazrasIazGazFbTiaoGdfCdgCdfEaoGaoGaoGabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqarAarAarAarAarAarAarAarAarAarAarAayyarAabqaupapfapfapfayzatkapfabqabqabqabqabqabqabqabqabqabqabqapfaqBayBapdaoXapdaoXayDayEayFayHayGaAYajgajgajgaxTaxQaxQaxQaxUajgajgayMayNayOatnayMamEamEakDayQayRapnaNIaySaOPaNZaOYaySaPaaNZaPbayUaPmaPcaRPaQyaUxaSLaVMaUSaVNaNIaXqaWoaySaXBaXDaXCazeazeazeazeakDayGafbaxYaWvavqavrazfazgazhavraziazjazkazlazmavvavvavvaxRaoGasIasJawLasJaoGayvaoGazpaoGayraypazsayIazqaznbqVbpqbqXbqWbqWbqWbqWdeSdgCdeVdgCdgCdgCaxgazAaxgaWwaWwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupabqarAataarAarAarAarAazIabqarAarAarAarAarAarAazJazHazJavTatkapfapfabqaaaaaaaaaaaaaaaaaaaaaaaaabqapfapfapfapdaoXapdaoXazNazKazPazLatoaAYajgaaaabqaaaaaaaaaaaaaaaabqaaaaxEazUazVazWazXazYazeazZaAaaAbaAcaAdaAdaZaaYLaZbaAdbaqaAcbcBaAiaAdbeTbfmbfkaAdaAmbfFbfAaAdbglbgIaAraAsbjUblZazeaAwaAxaAyaAzakDayGafbaxYaWxavqavraABaACaADayJaAFaAGaAHavvaAIaAJaAKavvaALaoGaoGaoGayoaoGaoGasJaoGasJaoGatAaxhaxhawYawJamkaxhaxhaxhaxhaxhaxhaxhaxhaxhaxhayxaxhaxhaxhaxhaxhaAObreabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarAarAarAarAarAarAarAarAarAarAabqarAarAarAabqapfapfapfaAPatkapdapfaaaaAQaARaASaARaATabqabqabqabqapfaAUapfazOavUavUavUaAWaAXajgaAVaAZaBaajgaaaaBbaBbaBbaBbaBbaBbaBbaaaayMaBcaBdaBeayMamEamEakDaBfaBgaBhaBiaBjaBkaBhaBlaBjaBkaBmaBnaBoaBpaBqbmPbmIaBtaBuaBvaBwaBxbnuaBwaBzaBAaBBaBCaBDaBEaBFaBGaBHakDayGaBIaBIaBIaBIavraBJaPWaBLaBNaBMaBOayeaBPaBQaBRaBSavvaBTaBUaBWaBWaBXaBWaBWaBWaBZaBWdgEaCaaCbaCcaCdaDcaCfaCgaChaCgaCiaCjaCjaCkaCjaxiaxhaxhaCgaCiaCjayAaCjaClaCgabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqarAarAarAarAarAarAarAaCnarAabqabqabqabqapfaoXatkarIalLaaaaCoaCpaCqaCpaCoayKayKayKaCsaCsaCsaCsaCtaCsaCsaCuaCuaCuaCuazRaCuaCwajgabqaBbaCxaCyaCzaCAaCBaBbaaaayMaCCaCCaCDayMaaaaaaakDayLaCGazwatJayLaCIazwakDayLaCJazwakDaCKalMaCLakDamEazzaANamEamEaCOaCOaCPaCQaCRaCOaCOaCSakDakDakDakDakDayGaBIaQdaCUaQvavravravravravraCWaCXaCYazlazmavvavvavvaoGaCZasIarrasJasIaDadgIaxhaxhaxhaxhaxhaDbaDsbsFaDtaDfaWyaDfaDhaDiaDiaDjaWzaDkaCjaDlaCjaDmaWzaDjaDiaCvaDnaCgabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqabqabqarAarAarAarAataarAarAarAaDparAarAarAarAabqaaaabqalLayBatkapdapfaaaaASaDqaDraDqaASayKaEsaEBaCsaDuaDvaDwaDxaDyaCsaDzaDAaDBaCEaCNaCuaCwajgaaaaBbaDEaDFaDGaDHaDIaBbaaaaxEaDJaCCaucayMaAfaAfamxaDMaDNaDOakDaDPaDNaDOakDaDQaDNaDOakDaDRaDSaDTakDaDUaDVaDWaDXaDYaCOaDZaEaaEbaEcaEdaEeaCSaEfaEgaEgaEgaEgaDdaBIaRtaEkaRyaBIaEmaEnaEmavvaEoaEpaEqaEraEDaEuaEuaEvaBWaEwaxhaxhaxhaxhaxhaxhaxhaExaExaEyaEzaEAaEEbumaFEaCgaCgaCgabqabqaDiaFSaEFaDiaDiaDiaDiaDiaEGaFSaDiaDCbbTaCgaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqarAarAarAarAarAarAarAabqarAabqabqarAarAabqabqapfapfauyatkapfapfaaaaCobxFaDqaDqaEIaEJaEKaEKaELaEMaENaEOaEPaEQasbaESaETaEUaETaEWaCuaCwajgaaaaBbaEXaEYaEZaFaaFbaBbaaaayMaFcaCCaCCaFdaFeaFfamxaFgaDNaFhakDaFgaDNaFiakDaFgaDNaFjakDaFkaFlaFmakDaFnaFoaFpaFqaFraCOaFsaFtaFuaFvaFwaFxaCSayGalWalWalWaFTalWaBIaTeaFDaThaBIaFFaFGaFGaFHaFIaFJaFKavvavvavvavvavvaoGaFLaxhaFMauraFOauvaFQaFRaGcaFWaFWaFWaFWaFUbwaaGdaHiaFYaCgaFZabqaaaabqaaaaaaaaaabqabqaaaaaaabqaaaaWAaEibbTaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaarAarAarAarAarAabqabqabqarAarAarAabeaaaabqabqabqapfaAgaoXaoXaECalLaaaaaaaASaDraDraDraASayKaGYaGZaGeaEMaEKaGfaGgaGhaCsaGiaGjaGkaEHaGmaCuaCwajgabqaBbaGnaGoaGpaGqbykaBbaaaayMaGsaGsaGsayMaAfauFamxaAEaCFaCramxaAEaCFaCramxaAEaCFaCramxaGxaCHaGzamxamxazzaGAamxaGBaCOaGCaGDbyAbyDaGGaGHaCSayGajgajgajgaFyajgaBIaGKaGLaBIaBIaGMaGNaGOaGPaGQaGRaGSazlaGTaGUawWavvaGVaGWaxhaGXaHaaHgaHgaIvaCMaDsaHcbCjbALbALbALbEoaIyaOXaOaaDLarAaMKaMJaMJaOhaMJaMJaOhaMJaMJaOhaMJaMJaPwaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqaHkaHlaHkabfaaaabqaaaabqapfaHmaHnanEatkapfapfaaaaCoaHoaHpaHqaCoayKayKayKaCsaHraEKaHsaGgaHtaCsaHuaHvaHwaGlaHyaCuaCwajgaaaaBbaHzaHAaHBaHCaBbaBbaaaaHDaHEaHEaHEaHFaHGaHHaHGaHIaHJaHIaHKaHIaHJaHIaHLaHIaHJaHMaHNaHOaHPaHQaFCaHSaHTaHUamxazeaCSaHVaHWbHcbLSbIbaIaaCSayGaBIaIcaIdaHdaGJaGJaHeaIhaIiaIjaIkaIlaImaInaIoaIpayeaIqaIraIsaItavvasJaGWaxhaIuaIAaIwaIxaIDaIzaIEaIBaMXaIFaIFaIFaJJaIGaPraOaaDLaMIaPxarAarAaPyarAarAaPyarAarAaPyarAarAaPxaWAaHxaCgaDoabqaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqabqaaaaHkaJKaHkabqabqabqabqabqapfauJapdapdaHXaIJapfaaaaIKaARaILaARaIMabqabqabqayKaINaIOaIPaIQaIRaCsaISaITaIUaHYaIWaCuaCwajgaaaabqaaaaGaaIYaGuaaaabqaaaaHGaAfaAfaAfaHGaHGaJaaJbaJcaJdaJeaJfaJgaJhaJhaJiaJhaJjaJgaJkaJlaJmaJnaERaJpaJqaJramxazeaCSaCSaJsaJtaCSbNVaCSaCSayGaBIaBIaBIaJvaJwaJxaIeaJzaJAaJBaJCaJDaJEaJFaJFaJGaJHavvavvavvavvavvaubaGWaxhaJIaJLaJOaJMaJQaGvaKTaJPaLsaJRaJSaJTaJUaJVaPraOaaDLaDLaPxarAaJWaaaaaaaaaaaaaJWaaaaaaaJWarAaPxaIfaGbaCgaLwabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaabqaaaaHkaHlaHkaHkaGwaGwaGwaHkaHkaHkaHkaHkapdatkapfaaaaaaaaaaaaaaaaaaaaaaaaabqayKbPcbOgaKdaKeaKfaCsaJoaKhaCuaCuaCuaCuaKiajgaKjaGyaHjaHbaKgaHRaIZaIXaKjaHGaKraKsaKsaKtaKuaKvaKwaKxaKyaKzbPXbPiaTiaKDaKEaKCaKFaKGaKHaKIaKJaKKaJNaKMaKNbQEamxazeaKPaCSaKQaKRaCSaLMaFTalWayGaBIaKWaKXaKYaKZaBIaLaaLbaLcaBIaLdaLeaLfaLgaLfaLhaLiaLjaLkaLlaLmavvasJaGWaxhaLnaLoaLpaLqaLraFRaLNaLtaLsaLuaCgaCgbTlaLwaCgaDLaDLaDLaPxarAaaaaaaaaaaaaaaaaLxaaaaaaaaaaTMaRgaIfaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabqaHkaHkaLBaLzaLAaLBaLBaLBaLDaLEaLFaLGaHkaHkatkapfaaaaLHaLIaLIaLIaLIaLIaLJabqaCsaCsaCsauKazTaCsaCsaLPaLOaLSaLQaLTaLRaMHaMEaLUaLVaLWaLXaLYaLWaLZaMaaMbaHGaMcaMdaMeaMfaMfaKkaMfaMfaMfaMfaMfaMfaMfaMfaKkaMfaMhaMiaMjaMkaMkaMkaMlaMlaMlaMlaMlaMkaMmaMkaMnaMnaMnaMnaJuaMnayGaBIaBIaBIaMpaMqaBIaMraBIaMsaBIaMtaMuaMvazlaMwaMxaMyazlaMzaMAaMBavvaMCaGWaxhaCgaCgaCgaCgaCgaFRaMRaMFaLsaMGaCgaMUaWtaPSaWuaPSaXGaDLaPxarAaaaaaaabqabqabqabqabqaaaaaaarAaPxaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaHkaMLaMLaMLaLBaLBaLBaLBaLBaLBaMLaMLaMMaHkatkalLaaaaMNaMOaMOaMOaMOaMOaMNabqabqaKlaMQaMVaMSaMTaMYaNbaMWaMZaNYaNcaNaaOfaNXaLRaNdaNeaNfaNgaNhaNiaNjaNkaNlaNmaNnbTqaKmaaaaaaaaaabqaaaaaaaaaabqaaaaaaaaaaKoaNraNsaNtaMkaNuaNvaNwaNxaNyaNzaNAaNBaNCaMkaNDaUfaNFaNGaJXaMnaAVaBIaNJaNKaJwaMqaBIaNLaBIaNMaBIaNNaNOaNPaNQaNQaNQaNQaNQaNQaNQaNQaNQaoGaNRaxhaNSaNTaNUaNVaCgavgaIAaMFaOvaOgbVbaZgaObaOcaOdaOeaOiaDLaPxarAaJWabqabqaOmaPdaOqabqaOjaaaarAaPxaWAaKSaCgaDoabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaUUaUUaUUaUUaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaHkaOkaLBaLBaLBaLBaLBaLBaLBaLBaMLaMLaMLaOlaPeapfaaaaMNaOnaMOaMOaMOaMOaMNaKpaKlaKlaOpaPfaOraOraOsaOtaOuaOWaOwaOxapfaOyapfapfapfapfaOzaOAavxaOCaKnavxaOAaOAaOAaOAaOFaaaaaaaOGaOGaOGaOGaOGaOGaOGaaaaaaaMfaOHaOIaOJaOKaOLaNAaOMaONaOOavBaOQaORaOSaMkaOTaOUaOVaNHaKVaMnbViaBIaBIaBIaOZaOZaBIaBIaBIaBIaBIbVmbWpbVoaNQaPgaPqaPhaPIaPzaPiaPjaNQaPkaGWaxhaNTaNTaPlaOdbXuaHaaPnaPoaPpaQRaCgbssaPsaPtaPuaPvaRfaKLddVarAaaaaaaabqaRhcspaSkabqaaaaaaaTMaRgaIfaHxaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaabdabdabdabdabdabdabdaXHaXIaWBaXJaWBaXKaXOabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabqaHkaPAaLBaLBaLBaLBaPBaLBaLBaLBaLBaMLaPDaHkaECapfaaaaMNaMOaMOaMOaMOaMOaPEawbavKawbaPHaSmaPJaPKaPLaPMaPNaPOaPPaPQaPRbwqaPTaPTaPTaPTaPVaOAaYOaPXaPYaPZaQaaQbaQcbeBaQeaQfaQgaQgaQhaQiaQjaQkaQlaQmaQmaQnaQoaQpaKGaNtaMkaQqaNAaQraNAaQsaNAaQtaNAaNAaMkaQubeLaOVaQwaQxaMnbXQaQzaQAaQBaQCaQDaQEaQFaQGaQHaQIaQJaQKaQLaNQaQMaQNaQNaQNaQOaQPaQQaNQawvaGWaxhaQSaQSaQTaOdbXuaJLaQUaMFaSEaSnbVbbELaRaaRbaRcaRdaSoaDLaPxarAaaaaReabqaSpaTIaTGabqabqaJWarAaPxaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaUUaUUaUUaUUaUVaXNbbXbbWbbYbbWbbZbgUaUVaUUaUUaUUaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGwaLBaLBaLBaLBaLBaLBaLBaLBaLBaLBaRiaHkaHkatkapfabqaMNaMOaMOaMOaMOaMOaRkaRlaRmaRlaRnaSmaRoaRoaRpaRoaOuaRqaRraRsapfapfapfapfapfapfazSaOAbgkaRuaRvaRwaRxaRxaRxbgyaOFaaaaOGaRzaRAaRAaRAaRAaRAaRBaOGaaaaMfaRCaMiaMjaMkaRDaREaRFaNAaRGaNAaRHaRIaNAaRJaRKaRLaRMaRNaROaMnbYFaQVaQVaQVaQVaQWaRTaRTaRUaRUaRVaRWaRXaRYaRZaSaaSbaSbaSbaScaSdaSeaNQaSfaGWaxhaQSaSgaShaSiaCgaSjaIAaMFaLsaSlaCgaTKaTUaTRaTRaTRaTVaDLaPxarAaaaaaaabqabqabqabqabqaaaaaaarAaPxaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbcbbcabcabcabcabcabzhbzhbdJbzhbzhbcabcabcabcabcaaXKaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSqaSraSsaaaaGwaLBaLBaLBaLBaLBaLBaStaSuaSuaSvaSwaHkaqBatkapfabqaMNaMOaMOaMOaMOaSxaMNaKpaKlaKlaSyaSmaSzaSAaSBaSCaSDaTEaSFaSGaLKaSIaSJaSKbZaapfaSMaOAaSNaRuaSOaSPaSQaSQaSRaSSaOFaaaaMgaSUaRAaSVaSWaSXaRAaSYaMgaaaaMfaMhaMiaMjaMkaSZaTaaTbaTcaTdaTcbjbaTfaTgaMkbZdaxcaTjaTkaTlaMnaTmaToaToaTpaTqaTraTsaTtaTuaTvaTwaTxaTyaTzaTAaTBaTCaTDaQXaTFaUbaTHaNQasIaGWaxhaCgaCgaCgaCgaCgaFRaUFaQYaURaTLaCgaCgbZVaLwaCgaDLaDLaDLaPxarAaaaaaaaaaabqaaaaaaaaaaaaaaaaTMaRgaIfaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbdKbdNbdNbdNbdNbdNbdNbdObdNbdNbdNbdNbdNbdNbdPbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGaTNbBmaTNacJaHkaLBaLBaLBaLBaLBaLBaLBaLBaLBaTPaTQaHkauAaQZapfaaaaMNaMOaMOaMOaMOaMOaTSaRlaTTaRlaRnaSmaRoaRoaRpaRoaOuaOWaVaaVdaTWaTXaTYaTZaUaapfaVkaUcaUdaRuaRuaUebmJaRuaUgaUhaOFaaaaMPaUjaUkaUlaUmaUlaUkaUnaNpaaaaMfaMhaUpaUqaMkaNqaNqaNqaNqaUsaNqaNqaOoaNqaMkaMnaOBaUvaSHaMnaMnbZWaToaTpaTqaUyaUzaTnaToaTqaTqaTpaUAaUBaUCaUDaUEaSbaSbaSbaScaUGaUHaNQaUIaGWaxhaUKaULaUMaSTaUOaUPaIAaMFaLsaUQaJSbZXcaGaUTaPraOaaDLaDLaPxarAaJWaaaaaaaJWaaaaaaaaaaaaaJWarAaPxaIfaGbaCgaLwabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbeXbeXbeXbeXbeXbdObeXbeXbeXbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWDaTNaUWaTNaWDaHkaPAaMLaLBaLBaLBaLBaLBaLBaLBaUYaUZaHkatkapdapfaaaaMNaMOaMOaMOaMOaMOaVbayjaxXayjaVeaSmaRoaVfaVgaVhaViaVjaOuaVvaVlaVmaVnaVoaVpapfaVqaOAaVraRuaRubmKaVtaVuaUgaRRaOFaaaaOGaVwaVxaUkaVyaRAaVzaVAaOGaaaaMfaVBaOIaOJaVCaVDaVEaVEaVEaNCaVEaVEaVFaVGaMkaVHaVIaVJaVKaVLcaHaVKcbeaVOaVOaVPaVQaVRaVSaVTaVUaVVaVSaVWaVXaNQaVYaVZaWaaWaaWcaWdaWeaNQasJaWfaxhaWgaWbaWhaTOaWkaWiaWmaRSaXtaWlaWraWnaWNaWsaPrbMOaDLbeZaPxarAarAddZarAarAddZarAarAddZarAarAaPxaWAaHxaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaabdabdaXHbdMbeWbeXbeXbeXbeXaXLaXLaXMaXLaXLbeXbeXbeXbeXbeYbdMaXOabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaWDaWEaWFaWGaWDaHkaLBaMLaWHaWIaWJaLBaLBaLBaLBaUYaWKaHkatkapdalLaaaaMNaOnaMOaMOaMOaMOaMNaKpaKlaKlaWLaSmaRoaRoaRpaRoaOuaVjaWMaXnaVlaWOaWPaWQaWRapfazSaOAaWSaWTaWTaWUaWVaRuaUgaWWaOFabqaOGaOGaOGaWXaWYaWZaOGaOGaOGabqaMfaOHaXaaMjaXbaXcaVEaVEaVEaXdaVEaVEaXeaNCaXbaQCaXfaXgaXhaToayuaToaTnaTpaToaXjaToaXkaTpaTqaToaTqaTpaXlaXmaNQaXoaXraXpaXvaXuaPiaQQaNQaXsaGWaxhbbPaXxaXFaXwaXQaXyaXzaXAcczccyccHccHcdIaXRaPraOaaDLarAdeaaMJaMJdebaMJaMJdebaMJaMJdebaMJaMJdecaWAaGbaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabdaaabgMbdMbeWbeXbeXaXLaXLaXLaXLbfabpvaXLaXLaXLbeXbeXbeYbdMbMnaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaWDayCaYaaYgaXSaHkaXTaMLaXUaXVaXWaMLaMLaMLaXXaXYaXZaHkaYmaYbapfabqaYcaYdaMOaMOaMOaYeaYfabqabqaKlaWLaYoaPJaPKaYhaYiaYjaYkaYlaYWaYnaYnaYnaYnaYnapfaYXaYpaYqaYraYraYsaYtaYuaYvaYwaUoaaaaaaaaaaOGaOGaYyaOGaOGaaaaaaaaaaKoaNraYzaMjaYAaYBaYCaYDaYEaNCaNCaYFaYGaNCaYAaQCaYHaYIaYJaYKcdPaYKaYMaYNbmLaYPaYKaYKaYKaYKaYKaYKaYQaYRaYSaNQaNQaNQaNQaVcaNQaNQaNQaNQaoGaGWaxhaYVaYUaYUaSTaYZaYYaZwaZfbawbavbaAaQUcdQbaBaHiccuaCgaaaabqaaaabqaaaaaaaaaaaaabqaaaaaaabqabqaWAaWpaDhaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHbcbbfcbfbbgNaXLaXLbdIbdIbdIbgPbgObdIbdIaXLaXLbgNbgQbgSbgRaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaWDaWDaZiaZjaWDaWDaWDaZkaWDaWDaZlaZmaWDaWDaWDaZnaWDaWDaWqapfapfabqaZpaZqaZraZraZraZqaZsabqabqaZtaZuaSmaRoaRoaRpaRoaOuaZvaOubaCaYnaZxaZyaZzaZAapfazSaOAaZBaZCaZDaZEaZFaZGaZHaZIaOFaZJaUraZJaZLaZMaZNaZOaZLaZJaUraZJaMfaZPaZQaZRaZSaMkaMkaMkaMkaZTaZUaZVaNCaZWaMkaQCaZXaTraZYaZZaZZaZZaZZaoGaoGaoGbaababbacbadbaebafaZZbagbagaoGbahazyazybaDazyazyazybakazybalaxhbambambambambanbaobapcdRbarbasbatbaEcdSbaFaCgaCgaCgabqabqaDibaGbaxaDiaDiaDiaDiaDiaDibaGaDiaXEaDhaCgaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabdaXHbgTbicbeXbeXaXLbdIbidbifbiebihbigbiibidbdIaXLbeXbeXbijbgTaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaUNbaHbaJbaIbaLbaKbaJbaXbbFbbdbbFbbSbcdbbFbcfbcebaMaYTbaOapfaaaaaabaPbaQbaQbaQbaRaaaabqaZtbaSaWLaSmaRoaRobaTbaUaOubaVbaWbcgbaYbaZbbabbbbbcapfazSaOAaOAaOAavxavxayPaOFbbebbeaOFbbgbbhbbiaZLbbjbbkbblaZLbbmbbnbbobbpbbqbbrbbsbbtbbubbvbbwaMkaMkaYAaLLaYAaMkaMkayubbybbzayubbAbbBbbCbbDbbEbcjaoGaoGaoGaoGbbGaoGaoGaoGaoGaoGaoGaGWasIasJbbHbbHbbHbbHbbHbbHbbHbambbIbbJbbKbamazobbMbambbNbbOaFRaFRbckbcpbclaDfbcraDfbbTaDiaDibbUaDiaCiaCjbbVaCjaClaDibbUaDiaCvaDnaCgabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabdaXHbdMbeWbeXaXLaXLbdIbikbilbdLbnQbimbjPbjObdIaXLaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaUNbcydgxdgxbcGdgxdgxdgxbcRbchbcibcSbcTbcTbcTbcUbcmbcnbcoapfaaaaaaabqabqaaaaaaabqabqabqaZtbcVbcqbdmbcsaRobctbcubcvbcwbcxbdpbczbcAceSbcCbcDapfazBbcFbdqbcHbcIbcJbcKbcLbcMbcNbcObcPbcQbcPbdFbdTbdSbdVbdUbcPbcWbcXbcXbcYbcZbdabcXbcXbdbbdcbdcbdcbddbdebdcbdcbdfbdcbdgbdhbdcbdcbdcbdibdjaoGbdkbdobdWbdnbdobdYbdobecbdobdrazybakbalaubasJbbHbdsbdtbdubdvbdwbdxbambdybdzbdzbdAbdzbdBbambdCbarbdDbdEbdEbdEbdEbdEaTRaCgbdGaCjaCjbdHaCjaDmaCgaCgaCgbdGaCjaZdaZcaDmaCgabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLaXLbdIbjQbilbdIbjRbdIbjTbjSbdIbdIaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNbdQaUNaWDaUNbdRaUNbcydgxbeObedaUNbdRaUNbePbfdbeQbdXapfapfapfapfalLalLalLapfapfapfaZtbfhbdZbdZbdZbdZbeaaRobebbfqbfpbeeaYnaYnaYnaYnaWjapfapfbegapfapfbehbeibejbekbelbembenbekbelbeobepbembeqbekbekbekbelbekbekberbesbekbekbekbekbekbekbekbetbeubekbekbenbevbewbekbekbekbekbexbeybezbezbezbeAbezbezbezaoGbmMaoGaGWaoGaoGbeCbeCbeCbeCbeDbeEbeEbeFbeGbeHbambeIbeJbeKbmNbeMbeNbambfrbftbfsbdEbeRbeSceWbdEbeUaCgaCgaCgaCgaCgaCgaCgaCgazMaCgaCgaCgaCgaCgaLwaCgabqabfabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabdaXHbdMbeWbeXaXLaXLbjWbjVbjYbjXblFblDblIblGblJbdIaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNabqaaaabqaaaaUNaYgaUNbfebfebffbfgaUNaYgaUNaUNaWDbfubfibfjbgAavUavUavUbflavUavUbfnbgBbfobgKbgCbgCbgVbjdbiIbjubfvbfwbfxbfybfwbfzceXbfwbfBbfCbfDbfEceYbfGbfHbfIbfJbfKbfKbfLbfMbfNbfObfPbfQbfRbfSbfSbfSbfSbfSbfSbfSbfTbfUbfVbfVbfVbfVbfVbfVbfVbfVbfWbfXbfYbfZbfVbgabfWbfVbfVbgbbgcbgdbezbgebgfbggbghbgibezbgjbksaoGaGWaoGaaabeCbgmbgnbeCbgobgpbgqbgrbgsbgtbambgubgvbgwbgxcfdbgzbambktbkwbkvbdEbgDbgEbgFbdEbgGaOdaOdaOdaOdaOdaOdaOdaOdaOdaOdbkxbgLbkxbgLaefaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdaXHbdMbeWbeXaXLaXLbdIblKbilbdIblLbdIbjTbjSbdIbdIaXLbeXbeYbdMaXOabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqaaaaUNbdRaUNaUNaUNaUNaUNaUNbdRaUNaaaaWDbkybgWbgXbgXbgXbgXbgXbgXbgXbgXbgYazQbfwbfwaXibhbaXibfwbfwbfwbhcbfwbhdbhebhfbhgbhhbhibhjbhkbhlbhmbhnbfGbhobfIbhpblhbhqbhrbhqbhsbhqbhtbhubhtaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxbhwbhwbhxbhwbhwbhwbhwbhwbrNbhybfIbhzbezbhAbhBbhCbhDbhEbezbhFbhGaoGaGWapeaaaaZKbhIbhJbbxbhLbhMbhNbhObhPbhQbambhRbhSbhTbhTbhUbhVbambhWbhXbhWbdEbhYbhZbiabdEaChaCgaCgaCgaCgaCgaCgaCgaCgaCgaDLaFRaFRaTRaFRabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaabdaaabgMbdMbeWbeXaXLaXLbdIbikbilbdIbdIbdIbjTbjObdIbdIaXLbeXbeYbdMbMnaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabinbiobipbiobiqbiobiobiqbiobipbirbisaWDbkybitbiubivbiwbixbiybizbiAbgXbgYbiCbiDbiEbiFbiGbiFbiGbiHbiGbmdbfwbiJbiKbiLbiMbiNbazbiPbiQbiRbiSbiTaAMbiVbiWbiXbhqbiYbiZbjabhKbhqbjcbmObjeabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqbhwbjfbjgbjhbjibjjbjkbjlbhwbjmbjnbjobezbjpbjqbjrbjsbjtbezaoGaoGaoGbmRaoGaaabeCbjvbjwbeCbjxbjybjzbjAbjBbjCbambjDaZebjFbjGbjHbjIbamaFRbjJaFRbdEbjKbjLbjMbdEdeWavPdfadfcdfbdfdasXdfeanqanqaaaaaaaFRbgLaFRabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaUUaUUblMaXNbmHblNbfbbgNaXLaXLbdIbidbilbmTbnLbnEbnMbidbdIbdIaXLbgNbgQbnNbnPbnOaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabinbiobiobjZbkabkbbkcbkdbkebkfbkgbkhbkbbkiblVaUNbkybgWbbLbklbkmbknbkobkpbkqbkrbnWbocbkubpmbpmbppbpobpybfwbfwbfwbfwbkzbkAbkBbkCbkDaXibkEbhkbhlbkFbkGbkHbkIbfIbkJbhqbkKbkLbkMbkNbkObkPbkQbccabqabqaBVaCVaBYaDKbkWaEhaCVaDKbkWaEhaBYaBYaEtabqabqbhwaFNblablbblcblbbldblebhwblfbfIblgbwlbezbkkaODbkRbezbezbllblmaoGblnaoGblobeCbeCbeCbeCbbHbbHbbHblpblqbbHbambambambambamaGtaFPbambltblubltbdEbkUblwbkVbdEdffdfhdfgdfgdfjdfkdfkdfkdflabqaaaaaaaaaaWwaaaabqaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWwbnRblEbnTbnSbnUbicbeXbeXaXLaXLbdIbpsbptbdLbqZbpubrbbrabdIbdIaXLbeXbeXbrcbijbrfaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablOblPblQblRbkbblSblTblSblTblSblTblSbkbblUbnFaUNbkyblWbgXblXblYcfgbmabmbbmcbgXbqkbmebmfbmgbmhbmibmjbmkbmlbmmbmnbmobmpbmqbmrbmsbmtbmubmvbmwbmxbmybmzbmAbiVbfIbmSbhqbmQbmCbmDbmEbhqbmFbmGbjeabqabqaIbboBbopbpVboHbqfbqdbqhbqgcfhbqjbqlaIHabqabqbhwbmUbmVbmWbmXbmYbmZbnabhwbhybnbbncbndbnebnfbnebngbnhbnibnebnebnebnjbnebnkbnlbnmbnnbnebnebnobnkbngbnjbnpbnqbnobnrbnsbntcfibnvbnwbnxbnybnzbnAbnBbnCbnDblidfmdftdfqdfxdfudfydeZaoNdflabqaaaaaaaaaaWwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaWwbnRblEbnKbrgbrhbeWbrjbeXaXLaXLbdIbrlbrmbifbrIbrnbrQbrKbdIbdIaXLbeXbeXbeXbeYbrfaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiqbkbbkbbipbkbblSblTblSbnVblSblTblSbkbblUbnFaUNbrUbnXbnYbnZboablkaUtblkbiubiubodboebhcbfwbofbogbohboibojbokbolbfwbombonbojbkCboobfwbrXboqborbosbotaAMbkIbfIbkJbhqboubovbowboxbhqboybozbjebkWaJYbkWbsbboCboDboEboDboFboDboEboDboGbscbkWaJYbkWbhwboIboIboIboJboKboLboMbhwboNboOboPboQboRboSboRboTboRboUboRboRboRboVboRboWboXboYboZboRboRbpabpbbpcboVbpdboVbpebpfbpgbntbphbpibpibpjbpkbpibpidfzdfBdfAbljdfDdfIdfHdfKdfJdgddfLdgKazDabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqbpraaaaaaaaaabqbsdbsdblMbsebsfbeWbsnaXLaXLaXLbsMbdIblHblHbnJbdIbdIbdIbdIbrkaXLaXLaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablObpwbpxblRbkbblSblTblSblTblSblTblSbkbblUbnFaUNbuxbpzbpAbpBbpCbpDbpDbpEbpFbpBbpGbpHbpIbfwbpJbpKbpLbpMbpNbpObpPbfwbpQbpRbpSbpTbpUbfwbsibpWbpXbpYbpZbfGbqabjnbqbbqcbqcbqcbqcbqcbhtbtPbqebhtbkWbtSbtRbtTboEboEboEboEbqiboEboEboEboEbtZbtYbubbkWbqmbqnbqobqpbqqbqrbqrbqsbhwbqtbqubqvbqwbqxbqybqxbqzbqxbqAbqxbqxbqBbqxbqxbqCbqDbqxbqEbqBbqFbqGbqCbqHbqxbqIbqJbqKbqLbqMblsbqObqPbqQbqRbpnbqSbqSbqTdgMdgLdgOdgNdgPanqanqanqanqanqanqanqanqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqaaaabqbsPbsRbsQbsSbrdcKIaXNbsfbsTbsUaXLbsWbsVbsXbribsZbsYbtbbtabtcbrkbtebtdbtgbtfaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrobiobiobjZbrpbkbbrqbkbbrrbrsbkbbrtbkbbkibruaUNbkybrvbrwbrxbrybrzbrAbrBbrCbrxbrDbrEbrFbfwbrGaXibrHblvbfwbfwbfwbfwbfwaXibrJblxbfwbfwaAMbrLbrMaAMaAMbzObehbfIbrObqcbrPcfjbrRbqcbrSbrTbuBbrVaJZburbrYbrZbsabsabvWbwfbwebvWbvWbsabsabsgbshbwgbkWbhwboIboIboIbsjboIboIboIbhwbskbfIbslbZiblCbsoblCbsmbspbspbspbspbspbspaoGaoGbsqaoGaoGaoGbsrbmBaoGaoGaoGbstaoGbsubsvbswbbfbsybszbsAbsBbqSbsCbsCbsDbqUbsEbjNbntcfkbsGbsHbsIbsJbsJbsKbsLabqaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaabuLbudbuMabqbuObuNbuQbuPbuSbuRbuTbBebuVbuUbuWbribuYbuXbvabuZbvcbvbbvebvdbvgbvfaXLbvhbvibdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrobiobthbiobiqbiobiobiqbiobipbtibtjaWDbuDbtlbtmbfGbtnbtobtpbtobtqbfGbtrbtsbttbtubtvbtwbtxbtybtzbtwbtAbtBbtwbtvbtvbtCbtvbtDbtEbtFbtGbtHbtvbtIbtJbtKbkJaKqbtMbtNbtObqcbjebjebjebjebkWbwmbtQboEboEboEbtUboEbtVbtWbtXboEboEbwnbuabAkbucbhwbwobuebufbugbuhboIbuibhwbujbfIbukboAdedbunbuobsmbupbuqbwpbusbutbuubuvbuwbuHaoGbuybuzbuAbuIbuCaoGarrbvjaoGbuEbuFbuGbqNbwHbwHbwHbwJbuJbqSbqSbuKaZobvkbvnbvmbvpbvobvrbvqbvsbvsbvvbvtbvwbvwbvwbxlbxmbvwbvwbvwbvwbvwbxlbvwbvwbvwbvwbvwbvwbxlbvwbxmbxobxnbxpbxpbxrbxqbxtbxsbxvbxubxxbxwbxzbxybxBbxAbxDbxCbzebxEbzgbzfbzjbzibzlbzkbznbzmbzpbzoaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaUNbdRaUNaUNaUNaUNaUNaUNbdRaUNaaaaWDbwLbzsbzrbfGbvAbvBbvCbvBbvDbfGbvEbvFbvGbvHbvHbvIbvJbvHbvHbvKbvLbvMbvNbvHbvHbvObvHbvHbvHbvPbvQbvRbvRbvSbvTbvUbvVbqcbyobvXbvYbqcbvZbwbcflbwcbwdboEbtQboEbypbywbwhbwibwjbwibwkbyJbyxbAbbyQbAkcfmbhwbwrbwsbwtbwubwvbhwbhwbhwbhybwwbwxbsmbwybwzbwAbsmbwBbwCbwDbwEbwFbwGbwPbwIbwRbwKbwZaKUbwNbwObxGbwQbzqbwSaoGbsubwTbwUbntbwVbwWbwXbwYbzvbxabxbbxcbxdbqUbxebxfbxgbxhbxiaWCaaaaaabxjbsNabqaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaabxkbztbsLabqbBbbzubBdbBcbBgbBfbBibBhbBnbBjbCWbBobCYbCXbDabCZbDibDcbFdbDjbFfbFeaXLbrcbFgbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNabqaaaabqaaaaUNbzwaUNbxHbxIbfebxJaUNbzwaUNaUNaWDbkybxKbxLbfGbxMbvBbxNbvBbxObfGbxPbxQbxRbxSbxTbxUbxVbxWbxXbxYbxZbyabxTbxTbxTbybbxTbycbydbxVbyebxTbxTbyfbygbyhbvVbqcbyibyjbymbylbymbynbymaLybwdbAjbAebyqbyqbyqbyrbysbytbyubyvbyqbyqbyqbBWbCcbkWbhwbyybyzcfnbyBbyCbhwcghbyEbyFbyGbwxblCbyHbyIbCdbsmbyKbyLbyMbyNbspbspaoGaoGbyOaoGaoGaoGaLCbCeaoGaoGbyRbCIaoGbyTbwTbyUbntbjNbjNbjNbjNbyVbjNbjNbyWbyXbyYbntbntbyZbzabzbbzcaaabqYbzdaaaabqaaaaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqaaaaaabxkbBabFkbGNbGMcKIbsebGSbGObrcaXLbsMbsMbsMbribribICbBkbribribrkbrkbrkaXLaXLaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNaUNbdQaUNaWDaUNbdRaUNbzxbaJbzzbzyaUNbdRaUNbzAbBpbAEbtlbtmbfGbzBbzCbtpbzCbzBbfGbzDbzEbzFbfGbzGbzHbzIbfGapfbzJapfbzKbzKbaibzMbzNbaibzKbzKbzKbzKbzKbzKdeDbzPbzQbzRbzSbzTbzUbzVbzWbzVbzXbzYbzZbAabCfbAcbAdbThbAdbAdbAfbAgbAhbyqbyqbAibyqbCkbAkbhwbAlbAmbAnbAobApbAqbhwaMDbhtbAsbbrbAtbsmbsmbsmbsmbsmbAubAvbspbspbspbAwbAxbspbAybAzbAAaoGazpbABaoGbACbADbBqbAFbAGbAHbAIbAJbAKbAKbAMbAKaNWbAObjNbAPbAQbARbASbATbAUbAVbAWbAXbsJbAYbAZabqabqabqabqabqaaaabqaaaabqaaaabqaaaabqaaaaaaaaaaaaaaaaaaabqbpraaaaaaaaaabqaaaaaaabdaZhbIEbeWbeXbeXbIFaXLbBlbDbbKjbDdbDebDfbDgbDhbBlaXLbIFbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbBrbaJbaIbBubBsbaJbaJbBvbBtbchbBwbBMbBMbBMbCsbBxbBybBzbBAbBBbBCbBDbBEbBFbBGbBBbBHbBIbBJbBKbBKbBLbBKbBKarKbCtbBNbzKbBObBPbBQbBRbBSbzKbBTbBUbzKbBTbBUbzKbzPbfIbkJbqcbBVbClbBXdaebBYbBZbCabCbbwdbAkbDrbyqboEbDVbCgboEboEbAkbChbDWcgibyqbEfbEgbhwbCmbCnbCobCpbCqbCrbDlbDkbhtbhybbrbhzbspbCubCvbCwbCxbCybCzbCAbspbCBbCCbCCbCEbCFbCGbCHaoGaoGaoGaoGaoGaoGbCIaoGbCJbCKbCLbCMbCNbCNbCNbCNbCNbCMbCMbCNbCObCPbCQbCRbCSbCTbCUbCVbCMbCMbCMabqaaaaaaaaaabqaaaabqaaaabqaaaabeaaaabeaaaaaaaaaaaaaaaaaaaaaabqabqabqabqaaaaaaaaaabdaXHbsfbKkbvhbeXbeXaXLbBlbFhbFibFjbKnbFlbFmbFnbBlaXLbeXbeXbvhbvhbvibdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbcydgxdgxbDmdgxbDobDnbDpbDpbDqbDpbDKbDsbESbEJbDtbDubDvbDwbpBbDxbDybDzbDAbDBbDCbDDbDEbDFbDGbDHbDIbDJbBKbGbbDLapdbzKbDMbDNbBQbBRbBSbzKbDObDPbzKbDObDPbzKbDQbfIbkJbqcbqcaPCbqcbqcbqcaPGaPFbsObqcbFJbtQbDXboEbwibwibDYbDZbEabEbbEcbEdbEebshbFUbEhbEibEjbEkbElbEmbEnbhwcgjbhtbEpbbrbhzbspbEqbErbCybEsbCybEtbCybEubEvbCHbaubvzbEybEzbEAbEBbECbEDbEEbEFbEGbEHaoGbEIbwTbHCbCMbEKcgkbEMbENbEObCMbEPbEQbERbGDbzLbEUbEVbEWbEXbEYbEZbFabCMabqabqabqabqabqabqabqaaaabeaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHbKpbKobKqbfbbgNaXLbBlbGPbGQbGRbMpbGTbGUbGVbBlaXLbgNbgQbMtbMrbMrbNXaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNaWDaUNbdQaUNaWDaUNaUNaUNaWDaUNaWDaWDaWDbrUbnXapfbFoapfapfbFpbFqbFpbFrbFpbFpbFpbFpbBKbBKbFsbFtbBKbBKbBKbFuaoXbzKbFvbFwbBQbFxbzKbzKbFybzKbzKbFzbzKbzKbFAbfIbkJbFBbFCbFDbFEbFFbFGbFDbFDbFHbFIbAkbHDbAdbFKbFLbFMbFNbFObFPbFQbFRbFSbyqbFTbAkbhwbFVbFWbFXbFYbFZbGabhwbKvbhtbhybbrbhzbspbGcbGdbGebGdbGfbGgbGhbGibEvbCHbvzbDSbCHbEvbGlbGmbGnbGobGpbGqbEGbCIaoGbGrbGsbGtbDTbGvbGwbGxbGybGzbCMbGAbGBbGCbLcbzLbGEbGFbGGbGHbGIbGJbGKbCMabqbGLbGLbGLbGLbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaabPHbNYbdMbeWbeXaXLbBlbIybIzbIAbPJbIBbRobIDbBlaXLbeXbeYbdMbRpbsdbPHaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaabGWbGXbGXbGYbGXbGXbGXbGZbGXbGXbHaabqaUNbHbbLEdfPapfbLNbHJbHdbFpbHebHfbHgbHhbHibHjbFpbHkbHkbHlbHmbHnbHobBKbFubHpbzKbHqbHrbBQbBRbHsbHtbFwbHubHvbHwbHxbaibzPbfIbkJbFBbEwbDUbExbExbExbExbExbHzbFIaUiaPUbkWbkWbkWbETbGkbGjbHybGubkWbkWbkWaRjaUibhwbhwbEhbhwbhwbhwbhxbhwbHKbhtbHLbHMbhzbHAbHObHObHObHPbHObHQbHObHRbEvbEvbEvbEvbEvbCHbHEbHUbHVbHWbHXbHYbEGbCIaoGbHZbGsbIacglbIcbIdbIebIfbIgbHFbIibIjbIkbIlbzLbImbInbIobIpbIqbIrbIsbHGbIubIvbIwbIxbIxbGLabqaaabFcaaabFbaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdaXHbdMbeWbeXaXLbKlbKlbKlbHNbRqbHNbKlbKlbKlaXLbeXbeYbdMaXOabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGWbIGbIHbIIbIJbIJbIKbIJbIJbIJbIKbGYbHHaUNaUNbMKbIMapfbgYaEjaUubFpbIQbHfbHgbIRbISbITbFpbIUbIVbIWbIXbBKbBKbBKbFucgmbzKbIYbIZbBQbBRbBQbBQbBQbBQbBQbJabBQbzMbJbbJcbJdbJebJfbJgbJfbJhbJfbJgbJfbJibCibJkbJjbJmbJlbJpbJnbJnbJqbKYbJrbJsbJtbJubJvbJwbJxbJobJybJzbJobJAbJBbJobJCbJDbJEbJFbwxbJGbCybJHbCybJIbCybJJbCybJKbEvbEvbCHbEvbEvbJMbHIbHUbJObECbHXbJPbEGbCIaoGbJQbJRbyUbDTbJSbIdbJTbIdbJUbJVbJWbJXbJYbJZbzLbKabKbbKcbKdbKebKfbKgbzLabqbzLbKhbIxbKibGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLbMobRrbMqbHNbRsbHNbMsbSXbMuaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKrbKsbKsbKsbKsbKsbKsbKsbKsbKsbKsbKtbKubOxbKubMKbKwapfbgYbKyanEbFpbKzbHfbHgbKAbHfbKBbFpbBKbKCbBKbHmbKDbKEbBKbFucgobzKbKFbHrbKGbKHbKIbKIbKIbKIbKIbKJbKIbKKbygbKLbKMbKNbKObKPbKObKQbSrbKSbKTbKUbKVbKWbKXbKOcnjbKZbLabLbbaybLdcpcbLebLfbLgbLhbLibLjbLkbLlbLmbLnbLobLpbLibLqbLrbLsbLtbLubLvbLwbLxbLybLybLzbLAbLwbLBbaNbbRbbQbCHbLFbCHbIhbLHbLIbLJbhabLLbLMbOyaoGbLObLPbLQbLRaUwbLTbLUbLVbLWbzLbLXbLYbLZbMabMbbMcbIobMdbMebMfbMgbMhbItbMjbMkbMlbIxbMmbGLabqaaabFcaaabFbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLbNZbOabObbHNbRqbHNbObbOabOcaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMvbMwbMxbMybMzbMzbMAbMzbMzbMzbMAbGYaUNaUNaUNbMKbMBapfbjEapfapfbFpbMDbMEbMFbHfbHfbHfbFpbMGbMHbBKcgpbBKbBKbBKbMJawebMLbFwbFwbJabMMbMNbFwbFwbFwbFwbFwbMPbaibzPbMQbMRbMSbMSbMTbMUbMVbMSbMSbMWbMWbMXbMYbMWbMZbtkbNbbvlbMZbNdbNdbvybNfbCDbNdbNhbNibNjbNkbNhbNhbHBbNmbNlbNhbNobhtbNpbNqbNrbLGbNtbNubNtbNvbNwbCybCybHRbHSbEvbDRbILbHTbILbbRbJLbINbKmbJNbNEbEGbNFaoGbNGbNHbNIbNJbNKbNLbNMbNNbNObNPbNQbNRbGIbGFbzLbMibNcbNabNcbNabNgbNebzLabqbGLbGLbGLbGLbGLabqaaabFcaaabFbaaabFcabfabeabqabeabfabfabeabeaaaaaaaaaaaaaaaaaaaaaaaaabdclHbdMbeWbeXaXLbPIbOabOabOabSZbSYbOabOabPKaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaabMvbGXbGXbGYbGXbGXbGXbGZbGXbGXbOdabqaUNbOebMKbOfapfbgYatjaqBbFpbOhbHgbOibOjbKBbHfbFpbOkbOlbBKbIUbOmbOnbBKbFucgobzKbOobOobJabBRbOpbOpbOqbOrbOsbOtbzKbzKbJbbOubOvbMSbOwbORbOzbOSbOAbOBbOCbODbOEbOFbMWbOGbOHbOIbOJbOKbNdbOLbOMbONbOObOPbNhbOQbOUbQebOTbNhbNhbNhbNhbNhbQgbhtbNpbOVbOWbspbOXbOYbHObOZbPabHObPbbspbSsbTZbEvbEvbEvbEvbEvbPdbPebPfbPgbPhbEGbNFaxhbPjbPkbPlbPmbPnbPobPpbPqbPrbPsbPtbPubPvbPwbPwbPxbPybPzbIpbPAbPBbPCbHGbIubIvbPDbPEbPEbGLabqabqbPFabqbPGabqbFcaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLbRnbTabTcbOabTebTdbUzbUybRtaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNaWDaUNbdQaUNaWDaUNaUNaUNaWDaUNaWDaWDaWDbQxbPMbPNbQybPPbPQbFpbPRbPSbOibPTbPUbPVbFpbBKbBKbBKbBKbBKbBKbBKbFucgobzKbPWbFwbJabBRbFwbFwbPYbFwbPZbQabzKbQbbzPbfIbQcbMSbQdbRubQfbRvbQhbOBbQibQjbQkbQlbNsbQnbQobQobQobQpbQqbQrbQsbQtbQsbQubNSbQwbRwbRxbQzbNTbQBbQCbQDbNhbTVbhtbQFbQGbQHbQIbQIbQIbNnbQJbQLbQMbQKbQIbQObQIbQPbQQbQRbQSbQTbEGbEGbQUbEGbEGbEGbNFbQVbQWbQXbQVbCMbCMbCMbCMbCMbQYbNObVpbRabRbbGGbRcbRdbRebRfbInbRgbRhbRibzLabqbzLbRjbRkbRlbGLabqaaabFcaaabFbaaabRmarBarBarBarBabearBarBarBaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbUAbfbbgNaXLbKlbVjbVkbOabTbbTdbVXbVlbKlaXLbgNbgQbVYaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbRzbBpbaIbRRbaIbaJbaJbRTbaJbBpbaJbRVbBpbaJbRWbRyapfbgYaoXatkbFpbRAbRBbHfbHfbHfbRCbFpbRDbREbRFbRGbRHbRIapfbFuauCbzKbRJbRKbJabRLbRMbRMbRNbFwbFwbRObzKbRPbzPbfIbOvbMSbRQbRXbRSbSibRUbOBbSjbTkbTjbRYbMWbRZbSabSbbSabScbNdbSdbSebSfbSebSgbNhbShbTEbTGbSkbNUbSmbSnbSobNhbSpbhtbSqbbrbOWbQIbVrbVsbStbSubSvbSwbSwbSxbSybQIbQIbQIbQIbQIbQIbQIbEGbSzbSAbSBbEGbSCbQVbSDbSEbSFbQVbSGbSHasJbSIbCMbSJbSKbSLbSMbSNbSObSPbSQbSRbSSbRgbSTbSUbItbMjbMkbSVbPEbSWbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbIFbKlbUxbOabOabWabVZbXCbWbbKlbIFbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNbcydgxdgxdgxdgxbTJbTHbUObTQbUSbUQbUTdfZbLCdgbbTmapfbgYauyatkbFpbHhbTnbHfbHfbTnbTobFpbTparJarLbPPbPQbRHapfbFubTrbzKbTsbTtbTubTvbFwbTwbTxbTybTzbTAbzKbTBbzPbfIbTCbMSbTDbUUbTFbVhbOBbOBbVFbTIbVPbTKbMWbRZbSabSabSabTLbNdbSdbSebTMbTNbTObNhbTPbTEbWcbTRbNhbTSbTTbTUbNhbTVbhtbTWbbrbTXaUJbUabUabUbbUcbUdbStbStbUebUfbQIbUgbUhbUibUhbUjbQIbUkbUlbUmbUnbEGbNFbQVbUobUpbUqbQVasJasJasJbUrbCMbSJbUsbUtbCNbCNbCNbUubGGbUvbGGbRgbUwbRibzLabqbGLbGLbGLbGLbGLabqaaaabeaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbIFbKlbXDbXFbXEbYQbXGcckbZObKlbIFbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNbUBbUBaUNaUNbNWaWDbQNdgRbQNdfNaWDapfbLDapfapfapfbgYauCatkbFpbTobUDbUEbHfbUEbUFbFpbUGapdapdatjbUHbXJapfbFuaoXbzKbzKbaibUIbUJbaibzKbzKbzKbzKbUKbzKbzKbULbjnbUMbMSbUNbWdbUPbWfbURbOBbWhbWBbWlbUVbMWbUWbUXbUYbUZbVabNdcgqbSebVcbVdbVebNhbVfbTEbMIbWSbQmcclcdBccmbNhcgrbhtbVnbbrbOWaUXbVtbVqbXcbYtbYsbVubVqbUebVvbQIbVwbVxbVybVzbUjbQIbVAbVBbVCbVDbVEbWTbQVbVGbVHbVIbQVbVJbVKbVLbVMbCMbVNbVObRabWUbCNbVQbSRbGGbSPbVRbVSbVTbPCbHGbIubIvbVUbVVbVWbGLabqaaabFcaaabFbaaabFcaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHbdMbeWbeXbeXaXLaXLbKlbKlcepbKlbKlaXLaXLbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaUNbXaaYgaUNdghdgjdgibBtdgkbBtdgldgmapfbXIauJbLKaoXbMCbWgbWibFpbFpbFpbFpbWjbFpbFpbFpbWkdeJdeHapdbXUbWmapfbFubWobzKcgsbWqbWrbWsbWtbWubWvbzKbWwbWxbWybzKbzPbfIbWzbMSbQdbUUbWAbXVbQdbOBbWCbWDbWEbWFbMWbWGbWHbWIbWJbWKbWLbWMbWNbWObWPbWQbNhbWRbXWbYobYabWVbWWbWXbWYbWZbYpbhtbXbbbrbOWaUXbYubXdbXdbXebXfbXgbXhbNxbXjbQIbXkbVxbXlbXmbXnbQIbXobXpbXqbXrbEGbNFbQVbQVbQVbQVbQVbXsasJasJbXtbCMbVNbVObRabYqbXvbVQbXwbInbSPbXxbRgbXybRibzLabqbzLbXzbXAbXBbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbeXbeXbeXbIFbIFceqbIFbIFbeXbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaUNbUBbUBaUNdgndgjbBtbBtdgobBtbsxdgqapfbXHavUavUavUbDLapdatkaoXaqBayBapdbYxauyauCapfapfapfapfapfbXKapfapfbFucgmbzKbXLbXMbXNbXNbWsbWtbXPbzKcgtbXRbXSbzKbDQbfIbXTbMSbQdbYUbYRbYZbXXbOBbXYbXZbZwbMWbMWbYbbYcbYdbYebYfbNdbYgbSdaVsbYibYjbNhbYkbYlbYmbYnbNUbZzbZzbZDbNhbZEbhtbYrbbrbOWbQIbYvbYEbYwbStcbacbbbUcbNzbNybNBbNAbNDbNCbUCbPObQIbEGbEGbEGbEGbEGbNFaoGbYGbUrasJasJchGchFaXPasJbCMbCMbYJbNRbWUbCNbYKbYLbGGbYMbVRbRgbYNbSUbItbMjbMkbYObVVbYPbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbeXbeXbeXbeXbeXbdObeXbeXbeXbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabredgrdgtdgsdgvdgudgxdgwdgyapfapfapfapfbWmcaeavUbYSbYTcajbYVbYVdfibYWbYVbYVbYTbYVbYVbYVcakbYVaPTcgucgobzKbZbbZccgvbZebHrbZfbZgbzKbzKbzKbzKbzKbZhbfIbOvdeEbMSbZjbZjbZjbMSbMSbMWbMWbZkbMWbMWbZlbZlbZlbZmbZlbZnbZnbZobZpbZnbZnbNhbNhbNhbNhbNhbNhbZqbZqbZqbNhbZrdeFbZsbbrbZtbZubZvbZvbZvbZvbZvbZvbZxbZybZvbZvbZvbZvbQIcaocalbWncapbXicaIasJbZFbZGaoGbVLbZHbZIasJbYHckgasJarrbCMbZJbJWbZKbCNbCNbCNbZLbGGbZMbZNbRgbUwbRibzLabqbGLbGLbGLbGLbGLabqabqbRmabqbPGabqabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbKkbvhbvhbvhbvhbvhbvhbdObvhbvhbvhbvhbvhbvhbvibdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgrdgfdgzdgzdgzdgzdgzdgAaaaabqaaabZPbZPbZQbZRbZSapfbZTapfapfapfcaJbZUbZUbZUbZUbZUbZUbZUapfcgHapfapfbzKbZYbZZcaacabbHrbWscaccadcaKayBapfcafbzPcagcahcaicaLcaMcaMcaMcaNcamcancaOcaMcaPcaqcaicaicarcascarcarcatcarcaucavcavcawcaxcaycazcaAbVgcaMcaMcaMcaCcaBcavcaEbbrcaFcgKbajcaRcaQcbncbdcbtcbpcbWcbvccsccrccvbQIcaScaTcaUcdibYycaXcdobZGcaZaoGaoGaoGaoGaoGawLbXtbCMbCMbCMcbcbJWbNRcdqcdncaDbKacbgcbhcbibVScbjbPCbHGbIubIvcbkcblcblbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHcerbMrbMrbMrbMrbMrcLLcLLcQccLLcLLbMrbMrbMrbMrbMrbNXaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgrdgJdgzdgzdgzdgzdgDdgraaaabqaaabZSbcEcdrcbobZSapdcdDbPQcbqapfcbrbZUcbscemcbuceucbwbZUcgVcgUchnapfbzKbzKbzKbzKbzKbzKbzKbzKbzKaxqaoXapfcbxbzPcbycbzbekbekbekbekbekbekbenbekcbAcbBcbCbembekbekbekbvTcbDcbEcbFbekbekbekbekbekcbGcbHbekbekbenbekbekbekbekcbIbekcbAcbJcbKcbLcbMcbNcbOcbNcbPcbPcbQcbRcbScbPcbOcbTbQIbQIbQIbQIcbUcbVasIarrbdlcbXasIcbXazpbefaoGayoaoGbCMccaccbcccccdcceccfccfccfbMcbGGbGGbGGbRgccgbRibzLabqbzLcchcciccjbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaabPHbsdbsdbsdbPHbNYbbXcUIcUMcUIbbZaXOabqaaaaaaaaaabqaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgrdgzdgzdgzdgzdgzdgzdgraaaabqabqbZSccnccoccpbZSapdccqaEjapfapfceDbZUchyccwceEcHVccxbZUapfapfapfapfavXchoccAccAccAccAchpccAccAccBbdqccCccDccEccFccGccIchschtccJccGccGccKccGbdabcXccLbcYbcXbcXbcXccMccNbcZbcYbcXbcXbcXbdbccOccPccQccQccQccRccQccQccQccSccTccOccUccVccWccXccYccZcdacdbcdccddcdecdfcdgcdhcdecePbZvcdjcdkbZvcbUcbVasIasIasIasIasIcdmcdocdocdpcfyceRcdscdtcducdvcdwcdxbGGbGGbGGbGGbGGbInbGGbRgcdybSUbItbMjbMkcdzcblcdAbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdabdabdabdabdaXHcerbzhcWjbzhbNXaXOabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgrdgrdgBdgFdgFdgFdgrdgraaaabqaaabZScdCcfEcdEbZScdFapdcdGapfcdHceNbZUcdJcdKchvchycdNbZUceTceUceVbZUchycfXchzchxaoXauyauJauCcdTcdTcdTcdTcdTcdTcdTchMchMchNchMcdUcdUcdUcdUcdVcdWcdWcdXcdYcdWcdZcdWceacebbbrceccedceecefceecegcehceeceeceibZubbgbbibbicejbZucekbZuaYxchOaYxbZvcenceocfDcdhcitcescdfcixcdhcetcgcbZvcevcewbZvcexceycezcdocdocdocdoceAceBceCchbceCceCbPmceFceGceHbGGceIbPwbPwbPwbPwbPwceJbGGbRgbUwceKbCMabqbGLbGLbGLbGLbGLabqaaabFcaaabFbaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaabsdbsdbsdbsdbsdaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgGdgHdgHdgHdgHdgHdgHdgGaaaabeaaabZSbTYceMbTYbZSapfapfapfapfbZUchPbZUceOchQchcchychSbZUcfVcfWcfVbZUbZUceZbZUbZUbZUbZUbZUbZUcdTcfachTbgHchUcfecffchMchWchVchXcdUchZchYcdUciacjdciacjjcjhciacjdciacjmcfocfpcfqcfrcOmcftcOmcfucfvcOmcftcOmcfwcfxcfxcfxcfxcfxchdbZucfzcfAcfBbajcfCcbOcdfcdhcdhcdecfDcdhcdhcdechrbZvcfFcfGbZvcbUbgJcfIceCceCceCceCceCcfJcfKcfLcfKcfKbCMcfMcfNcfOcfPcfQbInbGGbGGceIbPwcfRbSSbRgcfSbRibCMabqabqabqabqabqabqabqabqbPFabqbPGabqbRmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaaaaabTYcfTbTYaaaabqaaaaaaaaabZUceNbZUbZUbZUcfUbZUbZUbZUcjscjrcjvcjubZUchwcfYbZUcfZcgacgbchBcgdcgecgfcggcgfcgfcjwchMcjycjxcjzcdUcjBcjAcjDcjCcjFcjEckdcjGckyckxckBcjdcgwcgxcgycftcgzcgAcgBcgCcgDcgEcgFcgGckEcfxcgIcgJckGcfxcjUbZucgMcgNcgOcgPcgQcgRcgScgTbYAbYzbYCbYBbYBbYzbZAbYDbZCbZBcaVchDcbVasIciscircfKcfKcfKcfKcfKciuchechfbCMchgchhbGGbGGbSPchibIqbIqchjchkchjbIqchlchmbRibCMbCMbCMaUVaUUaUVaUUaUVaaabFcaaaabqaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeabqabqbTYceMbTYabqaaaaaaaaaaaabZUcPjbZUchqcjicivbZUckHbibckJchychycjkbZUchAciwchCciycaWcmJcizchHchIchJchKchLckKckLchMckNckMckOcdUckQckPcjDckRckUckTclEclxclLclKclOclMcgwcgxcgycibciccidciecifcigcihcihciiciicelcikcilcimcfxcinbZuciocipciqbajciZciCcjfcjfcjYcjfcjZcjfckSckucllbZvclmciAciBclqcfJaoGaoGaoGcfKciDciEciFciGciHciIciJbCMciKciLciMciNciOciPciQciRciSciTciUciVciWciXbRiciYclsciYcjacjacjacjacjbabqabeaaaabqaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaacjcaaaaaaabqaaabZUbZUbZUckvckwclQcjeclucjgclwcjeclTckAclUbZUbZUcjlclWbZUcdNcjncjocjpcdTcjqclYclXcjtclZcmachMcmccmbcmdcdUcmfcmecdUcmgcmkcmhcmhcmlcmqcmpcmTcmscjHcjIcjJcibciccicciccjKcjLcjMcjNcjOcjPceLcjRcjScjTcfxcjUbZubZubZubZubZvbZvcjVbZvbZvbZvbZvbZvbZvbZvbZvbZvbZvbZvbZvbZvcbUcjXaoGcmxclRcfKckackbckcaRQbhvckfbhHbCMckhckhckickhckjckhckickkckjckjbRickhcklckmcknbCMbCMbCMckockpcjackqckoaaabFcaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaackraaaaaacksckscktcmHclJcPjbZUbZUbZUbZUbZUbZUbZUbZUbZUbZUbZUbZUckCcmXcmXcmXcmXcmXcmXcmXcmXcmXckFcjtcnackIchMchMcnbchMcdUcndcnccnfcnecnicngcnmcnlcmqcnncnociacgwckVcgycOmckWckXckYckZclaclbclccldclecfxclfclgclhcfxclicljcljcljcljcljcmZcmScljcljcljclocljcljcljcljcljcnOclrcnPcdocltcnQclvcnRbVKcfKcnrclyclzclybiBbiUbiObCMbCMbCMcgnbzLchRbzLcgnbzLchRchRcijbzLcijbCMbCMbCMabqabqabqclHcjaaWCabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabeabqclIabqabqabqaaabZUcnSbZUcofcoecmYcjecjecmUcogcogcogcmVcmVcmVcmWcohcmXcoicokcojcmXcoicolcojcmXclVconcomcopcoocorcoqcoscdUcoucotcnfcovcowcoocoociacoxciacoycoocozckVcmmcmncmocmocmocmocoBcoAcmrbkSbkTcfxcmucmvcmwcfxcoGbkXcmzcmzcmzcmzcmAcmzcmBcmBcmBcmBcmBcmBcmBcmBcmBcmCaoGasJasJasJasJaoGasJasJcfKcmEcmFbkYclybiBbiUbkZblrabqabqcmKabqcmLabqcmKabqcmMcmNcmOabqcmOabqabqabqabqaaaaaacmPcjacmQaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBaaacmRaaaabqaaabZUbZUbZUbZUbZUbZUbZUbZUbZUcodcoDcoCcoCcoCcoCcoCcoCcoCcoCcoEcpbcoFcpBcpzcpbcpCcmXcdTcpEcpDcdTcoocpGcpFcpHcdUcpJcpIcdUcpKcpLcoocpNcpMcpPcpOcpQcoocpRcntcnucmocoHcnwcnxcnycnxcnzcmocnAcnBcnCcnDcnCcfxcfxcnEbZUcmzcnFcnGcnHcnIcnJcmBcnKcnKcnKcnLcnMcnNcnKcmBcmCaoGcoIasIcoMcoNaoGcoQcoOcfKaTJbtLbrWbvxbulbiUbobclAabqbGLcnYbzLcnYbGLcnYbzLcnYbGLcnZbzLcoabGLabqaaaabqabqabqcobcjacocabqabqabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqarBaaacjcaaaabqaaabZUcpucpvcpwcpxcpycpScpAbZUcodcFQcoCcpUcpTcpWcpVcpYcpXcoCcqacrdcqbcrfcrecrgcqbcricrhcrkcrjcrmcrlcrocrncrtcrpcrwcrucrycrxcrAcrzcrBcmqcrCcmqcrDciacgwckVcmmbWecqecqdcqfcoJcoKcoLcmocqicqmcqkcoPcmzcdNcjncqAcrvcmzcoRcoScoTcoUcoVcmBcnKcoWcoXcoYcnKcoZcpacmBcmCaoGaoGaoGaoGaoGaoGaoGaoGcfKcfKcfKclFclAclBbwMclDclAabqbGLcphcpicpjbGLcpkcplcpmbGLcpncpocppbGLabqaaaabqaaabCMcpqcprcpscptaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabeaaackrabqabqabqcmicqYcqZcracrbcpycrccdKbZUcodcjncoCcrGcrEcrHcrEcrEcrVcoCcsCcsGcsEcsIcsHcsNcsEcsPcsOcsScsQctqctgctBctActDctCctGctFctIctHctKctJctMcrCcrCcrCctPctOcgwckVcrWcmocrqcqBcrrcpdcqgcrFbyScrJcqlcrPcqncmzcqocqpcqqcsncmzcqscqtcqucqvcqwcmBcnKcnKcqxcnKcnKcqycqzcmBcmCbZUcrQcrRbZUcqCcqDcqFcqEcqHcqGbZUcsoclAcqrbArcqIclAabqbGLcqKcqLcqMbGLcqNcqOcqPbGLcqQcqRcqSbGLabqabqabqabqcptcqTcqUcqVcqWabqabeabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBaaackrabqaaaaaacmicZfcrccqZcswcpycsxbZUbZUcsyctQcoCctTctRctWctVcrEctXcoCctYcuactZcpBcuecuacukcmXcuFcuLcuKcuMcnncuNcnncuOcnncnncnncuQcuPcuScuRcuTcmqcrCcmqcuUciacgwckVcrIcmocsicqhcrLcrMcrKcrOcmoctfcticthcrScmzcrTcrUctjctEcmzcrXcrYcrZcsacsbcmBcmBcscbANbIObIOcmBbIPcmBcsgcshctlcsjbZUcskchychychycdKcslbZUbKxctucnXbyPcNmctuabqbGLcqKcsqcqKbGLcqNcsrcqNbGLcsscstcssbGLabqaaaabqaaacqWcqUcsucqUcjaaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabeabqckrabqaaaaaacmicsvcqZcZhctxcpyctyctzcdOcodcuVcoCcuXcuWcuZcuYcvbcvacoCcvccvdcvdcmXcvecvecvfcmXcvgcvicvhcvkcPycvjcjQcmjcjQcvjcvjcvjcvocvLcoocvNcvMcvRcvOcwbcoocwcckVcsTcmocmocsUcsVcsWcrNcsYcmocsZcnBcfwcfwcmzctacmzctbcmzcmzcfwctcbQvcfwcfwctectnctLctocujctScvTcuDcmBctmbZUcwdcwFbZUctpcdKchychychyctrbZUbKxctubQAbKRbQZbSlabqbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLabqabqabqabqcjacqUcqUcqUcqWabqbFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaabqaaaaaaarBaaaclIaaaaaaaaacmicmicqZcpycpycqZcqZcuJcdOcodcuVcoCcwfcwecwgcrEcrEcwhcoCcwicwjcwjcwkcwjcwlcwjcwmcwjcwocwncwqcwpcvjcnpcnqcwrcuicsXcvjcwvcwwcoocoociacwxciacwycoocwzcubcuccudcwAcufcugcuhcwscwGbWeculcumcuncuocupciccuqcurcusciccutcuucuvciccuwctecuxcuycuzcuAcuBcuCcwHcmBcmCbZUbZUcuEbZUcwBcuGchychycuHcuIcmibKxctuctucgWctuctuabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqaaaabqaaacjacqWcptbCMcptaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaabqaaaaaaabeaaacmRabqaaaaaacmicvZcqZcwacqZcqZcsxbZUbZUcodchycoCcwDcwCcxmcrEcxocxncoCcxpcxrcxqcxscxqcxucxtcxtcxtcxwcxvcxycxxcvjcxAcpZcxBcpZcpZcxDcxCcxFcxEcxHcxGcmqcxIcxJciacgwckVcvmcvncxRcvpcvqcvrcvscvtcvucvvcvwcvxcvycvzcvAcvBcvCcvDcvEcvDcvFcvGcvHcvIcvJcvKcgYcgXchacgZclScwJcszcxebZUcxfcvUcvVceuchychychycvWcvXbZUbXOcynctubYhctucspaaaaaaaaaaaaaaaabqaaaaaaaaaabqaaaaaaaaaaaaabqaaaabqaaaaaaabqaaaabqaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaabqabqaaaaaaarBaaacjcaaaaaaaaacmicxkcpycracpycxlchycxzbZUcymchycoCcoCcoCcypcyocyocyocoCcyrcvkcsJcsJcyscsJcyscsJcsJcyucytcywcyvcyycyxcyAcyzcyCcyBcyGcyDcyHcmqcyIcmqcmqcyJcmqclMcgwckVcvmcwEcyKcxNcxZcxYcwIcyabWecwKcwLcwMcwNcwOcwPcwQcwRcihcihcwScwTcwUcwVcwWcwXcwYcwZcxacxbcxccxdcybcmBcmCbZUcyccxgcxhctlcxicuHchychycxjcmictscttdbjctvdbjarAabqabebFbbFbbFbbFbbFbbFbabebFbbFcbFbbPGabqbFcabqabqabebRmbRmbRmabeabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaaaaaarBaaackraaaaaaabqcmicpycxlcpycyichycdLcyjcylcyZchyczpczrczqcztczsczsczuczpczvcxycysczxczwczAczyczBcysczEczDcAhczJcxDcAicAkcAjcAmcAlcAocAncApcApcApcApcAscArcApcAtcAvcxKcxLcmocmocmocmocmocxMcykcmocmzcmzcxOcxPcxQbYXbYIbYYcxUcxUcxUcxUcxVcxWcxXcxVcmBcmBcmBcyPcyOcyScyRcmBcmCbZUcxfcyTbZUcydcyecyfcygcygcyhbZUabqabqabqabqabqabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaabFcaaaaaaabqaaaaaaabqaaaabqabqaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBarBabqabearBaaaabearBarBabqabqabqckrabqabqabqcmicmicmibZUbZUcyUczdbZUbZUcAwczfcAxcziczhczocznczUcBlcBocBncBqcBpcBscBrcBucBtcBFcBEcBHcBGcxycCacvjcCccChcCgcCjcCicyGcCkcCmcClcClcnncCocCncnocoocCpcyLcyMcyNczVcyEczWcyQczZczYcAzcAycyVcyWcyXcyYcaYczaczbczccABczecAFcxVczgcAHcAMczjczkcmBcmBcmBcmBcmBcmBcmCbZUbZUbZUbZUbZUbZUbZUcmibZUbZUbZUaaaabqaaaaaaaaaabqabqabqabebFcbFcbFcabebFcbFcbFcabebFcbRmbFcbFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczmaaaaaaaaaabqaaaaaaaaaabqaaaaaaabqaaaclIaaaaaaabqabqaaaaaabZUbZUbZUbZUbZUcAgcodchyczpcwucCqcCtcCscATcCucCycCxcCEcyscCGcCFcCScCKcDdcysczEcDecwqcDfcDfcDfcDfcDfcDfcDgcDgcDgcDgcDhczCczCczCczCczCcDiczFczGczHczIcMYczKczLbZUczMczMczNczMczMczOczPczQcaYczRczSczTcBbcAYcBccxVczXcBjcBmcAacAbcrUcfYclPbZUcAccmYcAdbZUcAecfYbZUaaaabqaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqaaaabqaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqabqabqcAfcAfcAfcmRcAfaaaarBabqabqabqbZUcFRcFScFRbZUcDkcDjcBXcAxcCrcCdcCLcCvcCMcAUcDwcDvcDxcsJcDJcDycDPcDOcDScsJcDVcDecwqcDWcCYcCXcDmcDlcDncBvcBwcBxcBycBvcAqcEdcEecMscAuczCcnscgxcAAbZUcDocACcADcAEczMcDqcAGcDsczMcAIcAJcAKcbfcEfcANcAOcAPcAQcARcxVcAScDNcDQcAVcAWcrUcAXcDXcAZcBackDcEacAZcEbcvWcmiabqabqabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeabqcBdcBecBecBecBecBfckrcBgcBhcBhcBhcBhcBiabqabqaaaaaaabqbZUbZUbZUbZUbZUcuVcBkcFTczpczrcEicztczsczscEjczpcxpcEkcsJcsJcsJcsJcsJcsJcsJcEmcElcEOcEncEtcEccETcEucEzcBvcCwcEVcEWcBvcBzcBAcBBcBCcBDczCcEXcgxcBIcBJcBKcBJcBJcBJczMcBLcBMcAGcxScBOcBPcBQcBRcBScBTcBUcBUcBVcAQcxVcBWcDNcEAcBYcBZcrUcbmcCbbZUcmCchycEBbZUchycCebZUaaaabqaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaDaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaackraaacCfcCfcCfcCfcCfaaaarBaaaabqabqaefbZUcDcbZUcctcuVcBkckDcEYcEYcEYcFacEZcEZcEZcEYcFccEkcFdcFfcFecFhcFgcFicFdcFPcFjcFVcFUcEDcECcFZcEEcEzcGacGccGbcGdcGacCzcCAcCBcCCcCDczCcGecgxcmmcBJcCHcCIcCJcFoczMcEFcAGcEGczMcCNcCOcCPcxUcCQcCRcPCcCTcCUcCVcxVcCWcEHcEJcCZcBYcrUbZUbZUbZUctmbZUcDabZUbZUbZUbZUabqabqaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaabqaaaabqabqabqaaacDbaaaabqaaaabqaaaabqaaaarBaaaabecvQcvPclJcELcDRcELbgZcGgcIbcEYcGncGicGpcGocGOcGEcEYcxpcHbcHacHdcHccHgcHecHicHhcHlcHkcHycHmcERcEPcIdcEScEUcDYcDZcIfcIhcIgcIjcIicIkcDtcDucIlcIpcDzcDAcDBcDCcDDcDDcDEczMcDFcDFcDGczMcgCcCOcDHcxUcxUcxUcxUcxUcxUcxUcxVcxVcxVcDIcxVcxVcrUcAccmYcmYcDKbZUchycDLcDMcFpcDMckscksaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqckrabqcAfcAfcAfcAfcAfabqarBabqarBabqabqbZUcENbZUcdNchycJRcDTcEYcIrcIqcIvcGocGocIUcEYcIVcIWcFdcIYcIXcJacIZcJbcFdczEcDecwqcDWcFrcDrcFFcFwcFWcBvcJScJhcFbcDgcJUcJTcJVcEgcEhcbYcJWcgxcEocEpcEqcErcErcEsczMcFXcFYcFYczMcEvcEwcExcEycGxcGzcGycGQcGFcGUcGScGWcGVcEIcGYcEKcfZcHrchychybZUbZUcEMbZUbZUbZUbZUabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcBdcBecBecBecBecBfckrcBgcBhcBhcBhcBhcBiabqaupaaaabqaaaaaabZUbZUbZUbZUbZUbZUcEQcEYcJYcJXcKacJZcKccKbcEYcKdcKfcKecKhcKgcKjcKicKkcKeczEcDecwqcKZcKZcKZcLdcLdcLdcBvcGfcKncGhcDgcKocGjcGkcGlcGmczCcKqcFkcFlcBJcFmcCIcFncWcczMcHscFqcHtcxScFscFtcFucbZcHzcFxcFycFzcFAcFBcFCcFDcFBcFEcHBcEKbZUcFGbZUcFHcFHcFIcFJcFKcFLcFMabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcFNcALcFNabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaaclIabqcCfcCfcCfcCfcCfaaaarBaaaabqaaaaaaaaabZUcPGcNacNbbZUcGZcEYcKzcKycKDcKAcGocKHcEYcKWcKXcFdcFdcFdcKecFdcFdcFdcKYcDecwqcKZcLbcLacLdcLccLecBvcBvcLfcDgcBvczCczCczCczCczCczCcLgcGqcGrcGscGtcGucGvcGwczMcHCcHKcHDcGAcGBcGCcGDcdlcHLcGGcGHcGIcGIcGJcGKcGLcGMcGNcHNcGPcHPcGRcHQcGTcHRcHScHScHScHTcBNabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcHWcFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaabqaaaabqaaaabqaaacmRaaaabqaaaabqabqabqabqaupaaaaaaaaaaaaabqbZUcNOcNPcNQbZUcEQcEYcLhcGocLicGocGocLjcEYcxpcLvcLkcLKcLwcLWcLwcLwcLwcLYcLXcxycKZcMacLZcLdcMbcMccImcMecMdcMrcMfcIocMwcIncMLcImcMScMTczGczHcHncHocHocHpcHqczMcIecIBcIAcDpcHvcHwcHxcdMcIEcHAcIFcIKcIJcHEcHFcHGcHHcHIcHJceQcIMcHMcJdcHOcJecJucJfcJwcJvcBNabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcHUcALcHXcIOcIccALcHUabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqcHYabqcAfcAfcAfcAfcAfabqarBaaaaaaaaaaaaaaabZUcOJcOKcfbbZUcMUcEYcMWcMVcNccMXcNscNicEYcNIcNKcNJcNMcNLcNNcNKcNKcNScOqcNUcwqcKZcOIcOHcLdcOLcOUcImcPkcOYcPlcIncIocPucPwcPvcImcIscnscgxcItcBJcIucFOcIwcIucIxcIxcIxcIxcIxcIycxPcIzcEycJzcJzcJBcICcIDcKrcJFcIGcIHcIIcKscEKcKtcILcKucEycINcBNcBNcFHcBNcFHarAabqaaaaaaabqaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqabqcALcALcIQcIPcIPcIPcJCcALcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcBdcBecBecBecBecBfckrcBgcBhcBhcBhcBhcBiabqarBaaaaaaaaaaaaaaabZUbZUcfccKCcPFcPxcEYcEYcEYcEYcEYcEYcEYcEYcPycPycPycPzcPycPycPycPycPycPBcPAcPDcKZcKZcQbcLdcQfcLdcImcyqcMdcQzcIncIocQAcQCcQBcImcJgcnscgxcvmcwEcQKcJicJjcJkcJlcJmcJncJocJpcJqcCOczQdgSdgSdgSdgSdgSdgScJrcJscJtcKEcLlcKFcEKbZUcFGbZUcFHcJxcJycLqcJAaRharAarAabqabqabqabqabqabqabqaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqcKJcJDcKJcIPcJEcIPcKKcJGcFNabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaaclIaaacCfcCfcCfcCfcCfaaaaupaaaaaaaaaaaaaaaaaabZUbZUbZUbZUcJRcogcogcogcogcNTcogcogcQVcogcogcogcLzcNTcNTcRlcRocPycRpcNUcRLcREcwjcRMcwjcRMcSvcImcSBcMdcSCcIocSPcSMcTncTecImcMScEXcgxcvmcKpcTwcLAcMmcMjcMjcMjcMtcKvcJpcgCcCOcKwdgScKxcfHcfscgLdgTcYScKBcMvcMucMycEKcrUcKGceDcfYcFHcFHcFHcFHcFHcHfcKIarAabqaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqabqcALcALcLDcIPcIPcIPcLEcALcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaaaaaabqabqabqaaaaaacKLabqaaaaaaabqabqaaaaaaarBabqaaaaaaaaaaaaaaaaaaaaaaaabZUbZUbZUbZUbZUbZUbZUbZUbZUbZUbZUcoDcuVcTFchycoDcTZcjicUacUocUecUqcUpcUpcUrcUpcUFcUVcUUcVbcUWcVmcVlcVucVtcVEcVvcWkcVKcWGcWlcWHcIxcIxcMZcLmcLncLocLpcNgcLrcJpcLscLtcLucBNcKxcfHchuchuchEcLxcLycIEcKEcNqcEKcdNcLBceNchycLCbZUabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcHUcALcLFcRFcPncALcHUabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaacKLaaaaaaaaaaaaabqaaaaaaaupaaacHZcHZcHZcFvcHZcHZcHZaaaabqaaaaaaaaaabqaaaabqabqabqaaabZUcWIchychychychycNZchycDUcWUcwncXrcXlcXlcXwcXAcXycXYcImcYocYncyFcIncYIcYycYNcYLcImcMgcMhcgxcmmcIxcMicOacMkcLocLocMlcObcMncJpcMocMpcMqdgScKxcfHchuckedgTcYTcKBcOrcOccPmcEKcjnchyceNchycMxbZUabqaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcRGcFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabearBarBarBaaaaaaaaacKLaaaaaaaaaarBarBarBauparBabqcHZcIRcIScIRcITcIRcHZcHZcFvcHZcFvcHZcHZaaaaaaabqaaaaaacHZcHZcHZcHZcHZbZUcKVbZUcDUcYOcDecRLcRUcRUcRUcRUcRUcRUcRUcImcImcImcImcYWcImcImcImcImbZUcNdcgxcmmcIxcNecOacLocLpcLocNfcPEcNhckzcNjcNkcNldgVdgUdgUdgUdgUdgUcNocNncNpcQgcNrcEKchychyceNchybZUbZUbZUabqabqaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcFNcALcFNabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaarBabqcNtabqarBaaaaaaabqaaaaaaabqaaacHZcJHcJIcJJcJKcJHcGXcJMcJNcJOcJPcJQcHZaaacZmcIacIacIacLRcLTcJccLUcHZcZvcZqcZwcDUcZIcZycZQcZOcZXdeidafdaddakcRUcNRcmVcmVcmWcQhcjecmYcmYcQicNVcNWcNXcBIcIxcNYcQkcQvcQvcQvcQwcQDcOdcOecOfcOgcOhcOicOjcOkcOlcJLcOncOocOpclncQEcOscOtcmYcmYcOucOvcOwcOxbZUbZUbZUcksaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaarBaaaabqaaaarBaaaaaaabqabqabqabqabqcHZcKMcHjcKOcHucKMcKMcKQcKRcKScKTcKUcHZaaadaodaucMMcMNcMOcLVcMBcMPcMRdaydaxdaMdaLdaOdaNdaPcYCdaUdaQdbbdaVdbfcRUcOMbZUbZUbZUbZUbZUbZUbZUbZUczIcONcOOcOPcOQcORcOScOTdblcOVcOWcLpcOXclCcOZcPacPbcPccPdcPecPfcPgcPhcPicOpclNcPjbZUbZUbZUbZUbZUdenclGcQFclJcQGclJcPoabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBarBarBarBarBaaaaaaaaaaaaaaaaaaaaacHZcLGcLHcLIcLJcvScjWcLMcLNcLOcLPcLQcLRcIadbpdbucFvcFvcHZcNFcMQcNGcHZcZvdbvdbycPydbFdbCdbGcRUdbLdbHdepdbNdeqcRUcOMbZUcPHcPIcPJbZUcPKcPLcPMbZUcPNcPOcPPcIxcPQcPRcPScPTcPUcPVcLpcPWcIxcPXcPYciccPccPZcQadcdcKNcQdcQecOpchycPjbZUcQHcQJcQIbZUcQjcQLcQlbZUbZUbZUcksaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFvcMzcMAcMBcMCcMDcMEcMFcMGcMHcMIcMJcMKdcKdcKdcLcFvaaacHZcHZcHZcHZcHZdehdegbZUcPycPycPycPycRUcRUdercRUcRUcRUcRUcOMbZUcQNcQMcQTcQRcRncRkcRscRqcRDcRBcROcIxcIxcIxcIxcIxcQOcIxcQPcrUcrUcfwcQQcfwcOpcOpcOpcOpcOpcOpcOpcOpchycRPcQScRRcQUbeVcQWcQWcQXcQYcQWaaaaaaaaaaaaabqabqaaaaaaabqaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHZcNucNvcNwcNxcNyclkcNAcNBcNCcNDcNEcHZcFvcFvcFvcFvaaaaaabZUcSjcQxcQxcQycSlcyEcyEcyEcyEcyEcyEcyEdekcSncSmcRmcRmcSqcRrcSrcRtcRucRvcRwcRxcRycRycRzcRAcSXcRCcSYcmYcmYcmYcXxcmYcXGcQicRHcRIcRJcRIcvlcmYcmYcmYcmYcOtcmYcmYcmYcRNbZUcTacTocTdcQWcRQcTpcRScQWabqabqabqabqabqabqabqabqabqabqabqabqaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqcHZclpcOzcKMcOAclpcOBcODcOCcOEcOFcOGcHZaaaaaaaaaabqabqbZUbZUcRibZUbZUbZUcRjbZUbZUbZUbZUbZUbZUbZUbZUcSibZUbZUbZUbZUbZUcTqcRtcSkcRtcTscTrcTtcRtcSocSpcTvbZUbZUbZUbZUbZUbZUcEBcTNcfZbZUcSscStcSubZUcvYcwtchybZUbZUbZUbZUbZUbZUbZUbZUbZUcuEcQWcSwcSxcSycQWaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHZcPpcPqcKMcPqcPrcPscKMcKMcPtcKMcKMcHZaaaaaaaaaaaaabqcRhcSacSbcRhcSccSdcSecSfcSgcShcRhdemdelcSQcSRcSScSRcSTcSUcSOdexcTOcRtcSkcRtcTWcSZcUvcRtcTbcTccUBdeocTfcTgcThcTibZUcTjbZUbZUbZUcTkcTlcTmbZUcmicmicmibZUcVecVjcVgbZUcVocVqcVpbZUcwFcQWcTucVrcmtcQWaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHZcQmcQncKMcQocQpcPscQqcQrcQscQtcQucHZaaaaaaaaaaaaaaacRhcSIcSJcRhcSKcSLdeIcSNcRhcRhcRhdeLcTGcTHcTIcTJcTKcTLcTLcTMcVscVDcTPcTQcRtcTWcTRcUvcRtcSocSpcTWcLScTTcRtcTUcTVbZUcVYbZUabqaaacNzcTYcNzaaaaaaaaaaaabZUchychychycmycjicUbcjicUccUdcQWcOycUfcOycQWaaaabqaaaabqabqaaaaaaabqaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHZcQZcRacKMcRacQZcRbcRccRdcRecRfcRgcFvaaaaaaabqaaaaaacRhcTycTzcRhcTAcTBcTCcTDcRhcTEdeMdeNdeNdeNdeOdePcUscTHcTHcUtcNHcWfcUwcUxcUycTWcUzcUvcRtcSocUAcWBcUCcUDcUEdeQcUGbZUcTjbZUabqabqcNzcUHcNzabqaaaaaaaaabZUchychychycUJcUKchycULbZUcmicQWcOycWCcWmcWKcWKcWKcWKcWKcWKcWKcWKcWLarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqcHZcHZcFvcHZcFvcHZdeucRVcRWcRXcRYcRZcHZaaaaaaabqaaaaaacRhcUgcUhcUicUjcUkcUlcUmcRhcUncRhcSOdeUdeYdeXdfocUYcUZcVacSOcSWcUvcRtcVccVdcWDcVfcWJcUwcVhcVicWTcVkcVkcSVcTScVkbZUaefabqaaaaaacNzcVncNzaaaaaaaaaaaabZUcYmcZJcYwbZUcZNcZYcYwbZUaaaabqcOycOycOyabqaaaabqaaaaaaabqabqaaacWRarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqcSzcSAdewcKPcSDcSEcSFcSGcSHcHZaaaaaaabeabeaaacRhcTycUNcRhcUOcUPcUQcURcUScUTcRhcSOdfrcVwcVxcUXcVycVzcVAcSOcSOcUvcRtcRtcRtcTWcSZcUvcRtcVBcVCdaccTXabqabqaaaaaaabqaefabqaaacVFcVGcVHcVGcVIaaaaaaaaabZUbZUbZUbZUbZUbZUbZUbZUbZUaaaabqaaaaaaaaaabqabqabqabqabqabqaaaaaacWRarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaacTxabqdeycHZcHZcHZcHZcHZcHZcHZaaaaaaabfaaacSOcSOcSOcSOcSOcSOcSOcVQdfscSOcSOcSOcVTcVUcVVcVWcUXcUYcUZcVacVXcSOdancRtcVZcWacUudapcWbcWacWecRtdatcVkaaaabqabqabqabqabqabqabqcVGcWdcWhcWgcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaabqaaaaaacWRaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaabfaaadfvcVLcVMcSOcVNcVOcVPcVQcVRcVScSOcUXdfwcWvcWucWwcWpcWxcWwcWycWzcSOcWicTrdawcTrcTrcTrcTrcTrdawcTrdaTcTXaaaabqaaaaaaabqaaaaaaaaacVGcWAcWFcWEdeAcxTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZjaaaaaaaaaaaaaaaaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabfaaadfvcWncVMcWocWpcWpcWpcWqcWrcWscWtcWpdgcdfGcWVcWVcWWcWVcWVcWXcWYcSOcWZcXacXbcXacXacXccXacXacXdcXecXfcVkabqabqaaacVGcVGcVGcVGcVGcVGcXgcXicXhcVGcVGcVGcVGcVGcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaabqaaaaaaaaaaaaaaacVJaaaaaaabqaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabeaaaaaaaaaabeabfabeabqabeaaaaaaaaaaaaabfabqdfvcWncWMcVRcWNcWOcUXcWPcWQcZlcZkdggdhidgpcXmcUXcXncUXcXmcZxcZCcSOcXpcTXcXpcTXcTXcTXcTXcTXcXpcTXcXpcTXaaaabqabqcVGcXqcmDcXscXtcVGcXucXvcVGcVGcmGcnhcmIcXzcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqauparBaupabqabqabqabqcVJabqabqabqabqabqabearBarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqdfvcXjcVMcVRcWNcWNcXkcSOcSOcSOcSOdhjcVacXIcXJcXJcXKcXJcXJcXLcZRcVkcXMcTXcXacTXaaaaaaaaacTXcXNcTXcXacTXaaaabqaaacNzcXOcXPcXQcXRcnkcXScXTcXUcnvcXVcXWcXXcnTcNzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaaaaaaacYfaaaaaaabqaaaaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqcSOcSOcSOcXEcUXcUXcUXcXFcXGcSOcSOcSOcSOcSOdhldhldhldhldhlcSOcSOcVkcXpcTXcXpcTXaaaaaaaaacTXcXpcTXcZUcZTabqabqaaacNzcnUcYpcYqcYrcYrcYscYtcYucYucYucYucYvcnVcNzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaacYAcYAcYAcYAcYAabqcYBabqcYAcYAcYAcYAcYAaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqdfvcYgcYhcYicYjcYkcXKcYlcYmcSOdhnaaaaaacYDcYFcYFcYFcYFdahdaXcYFdaicZocYFcZodajcYFcYFcYFdaicZpcYFdcbdalcYEcYJaaacVGcYKcnWcYMdhocpdcYPcYQcYRdgXdgWcYUcYVcpecVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcYXcYYcYYcYYcYYcYZcZacZbcZccZccZccZccZdabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqcSOcSOcSOcXEcUXcUXcUXcXFddkcSOcSOcSOcSOcSOdhldhldhldhldhlcSOcSOcVkcXpcTXcXpcTXaaaaaaaaacTXcXpcTXcZUcZTabqabqaaacNzcnUcYpcYqcYrcYrcYscYtcYucYucYucYucYvcnVcNzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaacYAcYAcYAcYAcYAabqcYBabqcYAcYAcYAcYAcYAaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqdfvcYgcYhcYicYjcYkcXKcYldbccSOdhnaaaaaacYDcYFcYFcYFcYFdahdaXcYFdaicZocYFcZodajcYFcYFcYFdaicZpcYFdcbdalcYEcYJaaacVGcYKcnWcYMdhocYQcYPcZKcYRcZLdgWcYUcYVcpecVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcYXcYYcYYcYYcYYcYZcZacZbcZccZccZccZccZdabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSOdfvcSOcSOdfvdfvdfvcSOdagcSOabqabqdazdbadaAdcTdcPdaBcZedcncZBdaCcZBdaDcZBdaCdaCdaDdaCdaEcZBdaCcZBcZBdaKdaJaaacVGcZrcZrcZrcZrcTkcZscZtcZucTkcZrcZrcZrcZrcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcZAcZAcZAcZAcZAaaacYBaaacZAcZAcZAcZAcZAabqarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqabqcZFdaZcZedbkcZBddadbqdbhcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZgcYFaaacVGcZGcZHcZHcpfcZJcZKcZLcZMcZNcpgcZPcZPcZPcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaabqabqabqaaacYBaaaabqaaaabqaaaabqaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZSdbOcZedbPddccZBcZBdaJcZBcZBdbQdbYdbQdbQdbQcZBdbQdbQdbQdbYdbQcZBcZBdccdaiabqcVGcZPcZPcZPcqccZYcZZdaadabdaccqjcZPcZPcZPcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaacYAcYAcYAcYAcYAabqcYBabqcYAcYAcYAcYAcYAabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZVdaZcZedcedddcZBcZBdcFcZBcZBcYFdclcYFdcmcYFcZBcYFdcmcYFdclcYFcZBcZBcZBcYFaaacVGaOEcZPcZPcqJdapdaqdardasdatcqXcZHcZHdavcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcYXcYYcYYcYYcYYcYZcYBcZbcZccZccZccZccZdabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadalcYEdbaddmddacZBcZBdcocZBcZBdaCdcpdaCdaCdaCcZBdaCdaCdaCdcpdaCcZBcZBdcqdaiaaacVGcZrcZrcZrcZrdaFdaGdaHdaIdaFcZrcZrcZrcZrcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcZAcZAcZAcZAcZAaaacYBabqcZAcZAcZAcZAcZAaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZFdaZcZedcrcZBddccZBcZedcJcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcYFaaacVGcZGcZHcZHcrscZJdaRdaHdaSdaTcsdcZPcZPaOEcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaabqaaacYBaaaabqaaaabqabqabqabqaupaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZVdbOcZedcMdhvdcNcZBcZedcncZBdbQdbQdcQdbQdbQcZBdbQdbQdbYdbQdbQcZBcZBdcRdcoaaacVGcZPcZPcZPcsedbccZZdbddabdbecsfcZPcZPcZPcVGaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaacYAcYAcYAcYAcYAabqdbgabqcYAcYAcYAcYAcYAabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadalcYEdcGdcScYEdaXddedaWcYEdcUcYFdalcYHdaXcYFdaYcYFdcVdaXcYFdcmdcWdcWdaldbaabqcVGaOEcZPcZPcsmdbmdaqdbndbodatcsAcZHcZHdavcVGaaaaaaabqaaaaaaabqaaaaaaaaaaaaaaaaaaarBabqcYXcYYcYYcYYcYYcYZcYBcZbcZccZccZccZccZdabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZFdaZcZeddbcZEddgddfcZeddiddfddjddjcZeddnddlcZBddodaJddpddwddqcZDcZDddDdaJcVGcVGcZrcZrcZrcZrdaFdbrdaHdbsdaFcZrcZrcZrcZrcVGcVGaaaabqabqabqabqaaaaaaaaaaaaaaaaaaabqabqcZAcZAcZAcZAcZAaaadbtaaacZAcZAcZAcZAcZAaaaarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZSdbOcZeddbcZEdalddEddFddiddfddfddGcZedbwcZBcZBdbicYFddHcZEcZEcZEcZEcZDcYFcVGcZGcZHcZHcsBcZJdbzdbAdaHdaScZMdbBcsDdbDcZPcZPcVGabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaabqabqabqaaaaaacVJabqaaaaaaabqabqaaaaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZVdaZcZeddIcZEcZEddTdbhddYddfddfdevcZedeKcZBcZBcZBdaYdeTcZEcZEcZEcZEcZDcYFcVGcZPcZPcZPcsFdbIdabdabdbJdabdabdbKcsKdbMcZPcZPcVGaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabearBarBarBaaaaaaaaacVJaaaaaaaaaarBarBarBauparBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfpdbadfMcZEcZEddTcZedgedgYdgQdgZcZedbxdhadhcdhbdhedhddhfdamcZWdhgdhwdcocVGcZPcZPcZPcsLdbRdbSdbTdbUdbVdbWdbXcsMdbZcZHdavcVGaaaabqaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBabqdcaabqarBaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhhcYFddgddgcYFddxcYEcYFcYFdalddxdaXcYFcYFdalddxcYEdaXcYFcYFdalcYEddycVGcVGcVGcVGcVGdcfdcgdchdcicYRdcjdckcVGcVGcVGcVGcVGaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaaabqaaaarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaacVGdcsdctdcudcvdcwdcxdcydczdcAdcBdcCdcDdcEcVGaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBarBarBarBarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqabqcZFdaZcZedbkcZBddadbqdbhcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZgcYFaaacVGcZGcZHcZHcpfdbecZMdasdaqdbmcpgcZPcZPcZPcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaabqabqabqaaacYBaaaabqaaaabqaaaabqaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZSdbOcZedbPddccZBcZBdaJcZBcZBdbQdbYdbQdbQdbQcZBdbQdbQdbQdbYdbQcZBcZBdccdaiabqcVGcZPcZPcZPcqcdbBcZZdaadabdbIcqjcZPcZPcZPcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaacYAcYAcYAcYAcYAabqcYBabqcYAcYAcYAcYAcYAabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZVdaZcZedcedddcZBcZBdcFcZBcZBcYFdclcYFdcmcYFcZBcYFdcmcYFdclcYFcZBcZBcZBcYFaaacVGaOEcZPcZPcqJdbKdaGdardaIdbRcqXcZHcZHdavcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcYXcYYcYYcYYcYYcYZcYBcZbcZccZccZccZccZdabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadalcYEdbaddmddacZBcZBdcocZBcZBdaCdcpdaCdaCdaCcZBdaCdaCdaCdcpdaCcZBcZBdcqdaiaaacVGcZrcZrcZrcZrdaFdaRdaHdaSdaFcZrcZrcZrcZrcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcZAcZAcZAcZAcZAaaacYBabqcZAcZAcZAcZAcZAaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZFdaZcZedcrcZBddccZBcZedcJcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcZBcYFaaacVGcZGcZHcZHcrsdbedbodaHdbrdbXcsdcZPcZPaOEcVGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaabqaaacYBaaaabqaaaabqabqabqabqaupaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZVdbOcZedcMdhvdcNcZBcZedcncZBdbQdbQdcQdbQdbQcZBdbQdbQdbYdbQdbQcZBcZBdcRdcoaaacVGcZPcZPcZPcsedcfcZZdbddabdckcsfcZPcZPcZPcVGaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaacYAcYAcYAcYAcYAabqdbgabqcYAcYAcYAcYAcYAabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadalcYEdcGdcScYEdaXddedaWcYEdcUcYFdalcYHdaXcYFdaYcYFdcVdaXcYFdcmdcWdcWdaldbaabqcVGaOEcZPcZPcsmdcvdaGdbndbsdbRcsAcZHcZHdavcVGaaaaaaabqaaaaaaabqaaaaaaaaaaaaaaaaaaarBabqcYXcYYcYYcYYcYYcYZcYBcZbcZccZccZccZccZdabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZFdaZcZeddbcZEddgddfcZeddiddfddjddjcZeddnddlcZBddodaJddpddwddqcZDcZDddDdaJcVGcVGcZrcZrcZrcZrdaFdbzdaHdbAdaFcZrcZrcZrcZrcVGcVGaaaabqabqabqabqaaaaaaaaaaaaaaaaaaabqabqcZAcZAcZAcZAcZAaaadbtaaacZAcZAcZAcZAcZAaaaarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZSdbOcZeddbcZEdalddEddFddiddfddfddGcZedbwcZBcZBdbicYFddHcZEcZEcZEcZEcZDcYFcVGcZGcZHcZHcsBdbedchdcgdaHdbrdaqdcwcsDdbDcZPcZPcVGabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaabqabqabqaaaaaacVJabqaaaaaaabqabqaaaaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZVdaZcZeddIcZEcZEddTdbhddYddfddfdevcZedeKcZBcZBcZBdaYdeTcZEcZEcZEcZEcZDcYFcVGcZPcZPcZPcsFdcxdabdabdbJdabdabdcycsKdbMcZPcZPcVGaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabearBarBarBaaaaaaaaacVJaaaaaaaaaarBarBarBauparBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfpdbadfMcZEcZEddTcZedgedgYdgQdgZcZedbxdhadhcdhbdhedhddhfdamcZWdhgdhwdcocVGcZPcZPcZPcsLdczdbSdbTdbUdbVdbWdcAcsMdbZcZHdavcVGaaaabqaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBabqdcaabqarBaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhhcYFddgddgcYFddxcYEcYFcYFdalddxdaXcYFcYFdalddxcYEdaXcYFcYFdalcYEddycVGcVGcVGcVGcVGdcBdcjdcidezcYRdeBddRcVGcVGcVGcVGcVGaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaaabqaaaarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaacVGdcsdctdcuddSddWddUdejddXdetdesdcCdcDdcEcVGaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBarBarBarBarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaacVGcVGdcHcVGdcIctdcsRctNctkctUdcIcVGdcDcVGcVGabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqcVGdcHcVGcVGdcXdcYcZPdcZdcXcVGcVGdcDcVGaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaacVGdcHcVGcZPcZPdcYcZPcZPcZPddhcVGdcDcVGabqaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/MetaStation/z3.dmm b/_maps/map_files/MetaStation/z3.dmm index 47cfb412ecb..8272b4c4936 100644 --- a/_maps/map_files/MetaStation/z3.dmm +++ b/_maps/map_files/MetaStation/z3.dmm @@ -1,5 +1,26 @@ "aa" = (/turf/space,/area/space) "ab" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_z3"; name = "southwest of abandoned sat"; width = 18},/turf/space,/area/space) +"ac" = (/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plating/airless{dir = 1; icon_state = "floor"},/area/tcommsat/chamber) +"ad" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating/airless{dir = 1; icon_state = "floor"},/area/tcommsat/chamber) +"ae" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating/airless{dir = 1; icon_state = "floor"},/area/tcommsat/chamber) +"af" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating/airless{dir = 1; icon_state = "floor"},/area/tcommsat/chamber) +"ag" = (/obj/item/paper/crumpled,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating/airless{dir = 1; icon_state = "floor"},/area/tcommsat/chamber) +"ah" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating/airless{dir = 1; icon_state = "floor"},/area/tcommsat/chamber) +"ai" = (/obj/machinery/light/small,/obj/item/paper,/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plating/airless{dir = 1; icon_state = "floor"},/area/tcommsat/chamber) +"aj" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating/airless{dir = 1; icon_state = "floor"},/area/tcommsat/chamber) +"ak" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating/airless{dir = 1; icon_state = "floor"},/area/tcommsat/chamber) +"al" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/tcommsat/chamber) +"am" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/tcommsat/chamber) +"an" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/tcommsat/chamber) +"ao" = (/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/tcommsat/chamber) +"ap" = (/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/tcommsat/chamber) +"aq" = (/obj/structure/closet/emcloset,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/tcommsat/chamber) +"ar" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/tcommsat/chamber) +"as" = (/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/tcommsat/chamber) +"at" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/night,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/tcommsat/chamber) +"au" = (/obj/item/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/tcommsat/chamber) +"av" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/tcommsat/chamber) +"aw" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/tcommsat/chamber) "ay" = (/obj/structure/lattice,/turf/space,/area/space) "be" = (/obj/item/trash/cheesie,/turf/space,/area/space) "bj" = (/turf/simulated/floor/plating/airless,/area/space) @@ -111,44 +132,23 @@ "ds" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/item/stack/rods,/turf/simulated/floor/plating/airless{icon_state = "dark"},/area/tcommsat/chamber) "dt" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/space,/area/space) "du" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/space) -"dv" = (/turf/simulated/floor/plating/airless{dir = 9; icon_state = "warning"},/area/tcommsat/chamber) -"dw" = (/turf/simulated/floor/plating/airless{icon_state = "warningcorner"; dir = 4},/area/tcommsat/chamber) -"dx" = (/turf/simulated/floor/plating/airless{icon_state = "warning"; dir = 1},/area/tcommsat/chamber) -"dy" = (/turf/simulated/floor/plating/airless{dir = 5; icon_state = "warning"},/area/tcommsat/chamber) "dz" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/space,/area/space) "dA" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dB" = (/obj/item/paper/crumpled,/turf/simulated/floor/plating/airless{dir = 8; icon_state = "warning"},/area/tcommsat/chamber) "dC" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/tcommsat/chamber) -"dD" = (/turf/simulated/floor/plating/airless{dir = 4; icon_state = "warning"},/area/tcommsat/chamber) "dE" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dF" = (/turf/simulated/floor/plating/airless{dir = 10; icon_state = "warning"},/area/tcommsat/chamber) -"dG" = (/obj/machinery/light/small,/obj/item/paper,/turf/simulated/floor/plating/airless{icon_state = "warningcorner"; dir = 1},/area/tcommsat/chamber) -"dH" = (/turf/simulated/floor/plating/airless{dir = 6; icon_state = "warning"},/area/tcommsat/chamber) "dI" = (/obj/item/shard{icon_state = "medium"},/turf/space,/area/space) "dJ" = (/obj/structure/lattice,/obj/item/stack/rods,/obj/item/shard{icon_state = "medium"},/turf/space,/area/space) "dK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/tcommsat/chamber) "dM" = (/obj/structure/grille/broken,/turf/space,/area/space) "dO" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/plasteel,/area/tcommsat/chamber) -"dP" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/tcommsat/chamber) -"dQ" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/tcommsat/chamber) -"dR" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/tcommsat/chamber) -"dS" = (/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/tcommsat/chamber) "dT" = (/turf/simulated/floor/plasteel,/area/tcommsat/chamber) -"dU" = (/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 8},/area/tcommsat/chamber) "dV" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/tcommsat/chamber) "dW" = (/obj/structure/sign/vacuum,/turf/simulated/wall/r_wall,/area/tcommsat/chamber) -"dX" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/tcommsat/chamber) "dY" = (/obj/item/paper/crumpled,/turf/simulated/floor/plasteel,/area/tcommsat/chamber) "dZ" = (/obj/structure/closet/malf/suits,/turf/simulated/floor/plasteel,/area/tcommsat/chamber) "ea" = (/obj/structure/door_assembly/door_assembly_ext,/turf/simulated/floor/plating/airless,/area/tcommsat/chamber) "eb" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/tcommsat/chamber) -"ec" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/tcommsat/chamber) "ed" = (/obj/item/crowbar,/turf/simulated/floor/plating/airless,/area/space) -"ee" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/night,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/tcommsat/chamber) -"ef" = (/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/tcommsat/chamber) -"eg" = (/obj/item/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/tcommsat/chamber) -"eh" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/tcommsat/chamber) -"ei" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/tcommsat/chamber) "ej" = (/obj/structure/computerframe,/turf/simulated/floor/plating,/area/tcommsat/chamber) "ek" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating,/area/tcommsat/chamber) "el" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating,/area/tcommsat/chamber) @@ -307,20 +307,20 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayayaybjbjbjbjaablbnbnaaayaabscybUbpbIcFbIcFcFcFcFcFcFcFcFcFbIbpbscObUcococobpbnbnblaybjayayayayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayayayayayayayayayaablbnbnaaayaaaadsbUbpbIbIbIbIbIbIbIbIbIbIbIbIbIbpbscTbUaaayaabnbnblblaaayayayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablblbnbnayayaycIcYbHbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpcIcObHayayaybnboblblblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayayayayaybkblblbobnaaaaaabscOdtduccaabpdvdwbBdxdwbCdybpccccccdzcObUaaayaaboayblblblbkayayayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbjboaaaaaabsdAclckckckcGdBbIbIbIbIdCdDcGckclckckdEbUaaayaabjaybkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaybjayaaaaaaaacBcBcAcBcBbpdFdGbBbBbIbBdHbpcBcBcBdIcBaaaaayaaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayayayayaybkblblbobnaaaaaabscOdtduccaabpadacbBaeacbCafbpccccccdzcObUaaayaaboayblblblbkayayayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbjboaaaaaabsdAclckckckcGagbIbIbIbIdCahcGckclckckdEbUaaayaabjaybkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaybjayaaaaaaaacBcBcAcBcBbpajaibBbBbIbBakbpcBcBcBdIcBaaaaayaaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayayaaaaaaaaaaaaayaabpbpbpbpbpbCbqbpbpbpbpaaaaaaaaaaaaayaaaaaaaaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaaaaaaaayayayaydJdKbBbIbpbIbBbIbpbIbLcoayayayayaaaaaaaaaaaaaaaydMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbpbIbIbIbIbIbIbAbIbIbpbnaaaaaaaaaaaaaaaaaaaybjblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaybjbobnbnbnbnbnbpbpbpbpbpdObpbpbpbpbpbnbnbobjayayaaaaaaaabjboblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaabobnbnbnbnbnbnbnbnbnbpdPdQdRbpbnbnbnbjayayayaaaaaaayayaybobnbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkblbkblblblblblblblbpbpdSdTdUbpbpblblblbkaaaaaaaaaaaaaybnbnbnblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaabobnbnbnbnbnbnbnbnbnbpamalanbpbnbnbnbjayayayaaaaaaayayaybobnbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkblbkblblblblblblblbpbpaodTapbpbpblblblbkaaaaaaaaaaaaaybnbnbnblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbjbjblblbpbpdVdTdTdTdTbpbpblblaaaaaaaaaybjbjbobnbnblblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbjbjbpbpdWdXdTdTdTdTdYdZbpblbkaaaaaaaaaaayaybjbnblblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbjbjeabIebecdTdTdTdTdTdTbpblblaaaaaaaaaaaybkblblblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaedbjbjbpbpdWeeefdTdTdTdTdZbpblblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaybjbjblblbpbpegeheheheibpbpblblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbjbjbpbpdWaqdTdTdTdTdYdZbpblbkaaaaaaaaaaayaybjbnblblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbjbjeabIebardTdTdTdTdTdTbpblblaaaaaaaaaaaybkblblblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaedbjbjbpbpdWatasdTdTdTdTdZbpblblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaybjbjblblbpbpauavavavawbpbpblblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaybkbkblblblbpbpejekelbpbpblblblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkblblblbpbpbpbpbpblblblbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablblaablblblbmblblblaablblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/RandomZLevels/evil_santa.dmm b/_maps/map_files/RandomZLevels/evil_santa.dmm index 2b51f7407a5..ca6ab415c1f 100644 --- a/_maps/map_files/RandomZLevels/evil_santa.dmm +++ b/_maps/map_files/RandomZLevels/evil_santa.dmm @@ -14,7 +14,7 @@ "an" = (/obj/item/paper/journal_scrap_2,/turf/simulated/floor/carpet,/area/awaymission/challenge/main) "ao" = (/obj/structure/flora/rock/pile,/turf/simulated/floor/snow{carbon_dioxide = 21.8366; nitrogen = 0; oxygen = 82.1472; temperature = 73},/area/awaymission/challenge/main) "ap" = (/obj/structure/flora/tree/dead,/turf/simulated/floor/snow{carbon_dioxide = 21.8366; nitrogen = 0; oxygen = 82.1472; temperature = 73},/area/awaymission/challenge/main) -"aq" = (/obj/machinery/door/unpowered/shuttle,/obj/structure/fans/tiny,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/challenge/main) +"aq" = (/obj/structure/mineral_door/wood{tag = "icon-wood"; icon_state = "wood"},/obj/structure/fans/tiny,/turf/simulated/floor/plasteel,/area/awaymission/challenge/main) "ar" = (/obj/item/restraints/legcuffs/beartrap,/turf/simulated/floor/plasteel,/area/awaymission/challenge/main) "as" = (/obj/machinery/space_heater,/turf/simulated/floor/plasteel,/area/awaymission/challenge/main) "at" = (/obj/structure/table/wood,/obj/item/newton,/turf/simulated/floor/plasteel,/area/awaymission/challenge/main) @@ -42,7 +42,7 @@ "aP" = (/turf/simulated/floor/snow{carbon_dioxide = 21.8366; nitrogen = 0; oxygen = 82.1472; temperature = 73},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/awaymission/challenge/main) "aQ" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/awaymission/challenge/main) "aR" = (/turf/simulated/shuttle/wall{icon_state = "swall8"; dir = 2},/area/awaymission/challenge/main) -"aS" = (/obj/structure/mineral_door/wood{tag = "icon-wood"; icon_state = "wood"},/obj/structure/fans/tiny,/turf/simulated/floor/plasteel,/area/awaymission/challenge/main) +"aS" = (/obj/machinery/door/unpowered/shuttle,/obj/structure/fans/tiny,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/challenge/main) "aT" = (/turf/simulated/shuttle/wall{icon_state = "swall4"; dir = 2},/area/awaymission/challenge/main) "aU" = (/turf/simulated/floor/snow{carbon_dioxide = 21.8366; nitrogen = 0; oxygen = 82.1472; temperature = 73},/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/awaymission/challenge/main) "aV" = (/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/awaymission/challenge/main) @@ -78,55 +78,54 @@ "bz" = (/obj/item/clothing/head/cone,/turf/simulated/floor/snow{carbon_dioxide = 21.8366; nitrogen = 0; oxygen = 82.1472; temperature = 73},/area/awaymission/challenge/main) "bA" = (/mob/living/simple_animal/walrus,/turf/simulated/floor/snow{carbon_dioxide = 21.8366; nitrogen = 0; oxygen = 82.1472; temperature = 73},/area/awaymission/challenge/main) "bB" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/plasteel,/area/awaymission/challenge/main) -"bC" = (/obj/item/taperoll/engineering,/turf/simulated/floor/plasteel,/area/awaymission/challenge/main) -"bD" = (/obj/item/storage/toolbox/emergency,/turf/simulated/floor/plasteel,/area/awaymission/challenge/main) +"bC" = (/obj/item/storage/toolbox/emergency,/turf/simulated/floor/plasteel,/area/awaymission/challenge/main) +"bD" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/challenge/start) "bE" = (/obj/machinery/door/poddoor{id_tag = "challenge"; name = "Gateway Shutters"},/obj/structure/fans/tiny,/turf/simulated/floor/plasteel{tag = "icon-delivery (SOUTHEAST)"; icon_state = "delivery"; dir = 6},/area/awaymission/challenge/start) -"bF" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/challenge/start) -"bG" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{tag = "icon-delivery (SOUTHEAST)"; icon_state = "delivery"; dir = 6},/area/awaymission/challenge/start) -"bH" = (/obj/machinery/door/poddoor{id_tag = "challenge"; name = "Gateway Shutters"},/turf/simulated/floor/plasteel{tag = "icon-delivery (SOUTHEAST)"; icon_state = "delivery"; dir = 6},/area/awaymission/challenge/start) -"bI" = (/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) +"bF" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{tag = "icon-delivery (SOUTHEAST)"; icon_state = "delivery"; dir = 6},/area/awaymission/challenge/start) +"bG" = (/obj/machinery/door/poddoor{id_tag = "challenge"; name = "Gateway Shutters"},/turf/simulated/floor/plasteel{tag = "icon-delivery (SOUTHEAST)"; icon_state = "delivery"; dir = 6},/area/awaymission/challenge/start) +"bH" = (/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) +"bI" = (/obj/machinery/door_control{id = "challenge"; name = "Gateway Lockdown"; pixel_x = -4; pixel_y = 26; req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/challenge/start) "bJ" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/challenge/start) -"bK" = (/obj/machinery/door_control{id = "challenge"; name = "Gateway Lockdown"; pixel_x = -4; pixel_y = 26; req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/challenge/start) -"bL" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/greengrid,/area/awaymission/challenge/start) -"bM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) +"bK" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/greengrid,/area/awaymission/challenge/start) +"bL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) +"bM" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/item/paper/journal_scrap_1,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) "bN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) -"bO" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/item/paper/journal_scrap_1,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) -"bP" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor/bluegrid,/area/awaymission/challenge/start) +"bO" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor/bluegrid,/area/awaymission/challenge/start) +"bP" = (/obj/machinery/gateway{dir = 1},/turf/simulated/floor/bluegrid,/area/awaymission/challenge/start) "bQ" = (/obj/machinery/gateway{dir = 5},/turf/simulated/floor/bluegrid,/area/awaymission/challenge/start) "bR" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/challenge/main) -"bS" = (/obj/machinery/gateway{dir = 1},/turf/simulated/floor/bluegrid,/area/awaymission/challenge/start) -"bT" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) -"bU" = (/obj/structure/dispenser/oxygen{oxygentanks = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) -"bV" = (/obj/machinery/gateway{dir = 8},/turf/simulated/floor/bluegrid,/area/awaymission/challenge/start) +"bS" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) +"bT" = (/obj/structure/dispenser/oxygen{oxygentanks = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) +"bU" = (/obj/machinery/gateway{dir = 8},/turf/simulated/floor/bluegrid,/area/awaymission/challenge/start) +"bV" = (/obj/machinery/gateway/centeraway,/turf/simulated/floor/bluegrid,/area/awaymission/challenge/start) "bW" = (/obj/machinery/gateway{dir = 4},/turf/simulated/floor/bluegrid,/area/awaymission/challenge/start) "bX" = (/obj/machinery/power/smes/magical,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/awaymission/challenge/main) "bY" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc/noalarm{dir = 4; name = "Worn-out APC"; pixel_x = 24; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/challenge/main) -"bZ" = (/obj/machinery/gateway/centeraway,/turf/simulated/floor/bluegrid,/area/awaymission/challenge/start) +"bZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) "ca" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) -"cb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) -"cc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) +"cb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) +"cc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) "cd" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor/bluegrid,/area/awaymission/challenge/start) -"ce" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) +"ce" = (/obj/machinery/gateway,/turf/simulated/floor/bluegrid,/area/awaymission/challenge/start) "cf" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor/bluegrid,/area/awaymission/challenge/start) "cg" = (/turf/simulated/floor/plating,/area/awaymission/challenge/main) "ch" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/awaymission/challenge/main) -"ci" = (/obj/machinery/gateway,/turf/simulated/floor/bluegrid,/area/awaymission/challenge/start) -"cj" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/power/apc/noalarm{dir = 4; name = "Worn-out APC"; pixel_x = 24; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/challenge/start) -"ck" = (/obj/machinery/space_heater,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) -"cl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) +"ci" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/power/apc/noalarm{dir = 4; name = "Worn-out APC"; pixel_x = 24; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/challenge/start) +"cj" = (/obj/machinery/space_heater,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) +"ck" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) +"cl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) "cm" = (/obj/structure/table,/obj/item/clothing/accessory/scarf/christmas,/obj/item/clothing/accessory/scarf/christmas,/obj/item/clothing/accessory/scarf/christmas,/obj/item/clothing/accessory/scarf/christmas,/obj/item/clothing/accessory/scarf/christmas,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) -"cn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) +"cn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table,/obj/item/clothing/head/helmet/space/santahat,/obj/item/clothing/head/helmet/space/santahat,/obj/item/clothing/head/helmet/space/santahat,/obj/item/clothing/head/helmet/space/santahat,/obj/item/clothing/head/helmet/space/santahat,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) "co" = (/obj/structure/table,/obj/item/clothing/suit/furcoat,/obj/item/clothing/suit/furcoat,/obj/item/clothing/suit/furcoat,/obj/item/clothing/suit/furcoat,/obj/item/clothing/suit/furcoat,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) -"cp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table,/obj/item/clothing/head/helmet/space/santahat,/obj/item/clothing/head/helmet/space/santahat,/obj/item/clothing/head/helmet/space/santahat,/obj/item/clothing/head/helmet/space/santahat,/obj/item/clothing/head/helmet/space/santahat,/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) -"cq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) -"cr" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/challenge/start) +"cp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel,/area/awaymission/challenge/start) +"cq" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/challenge/start) +"cr" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/challenge/start) "cs" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/challenge/start) -"ct" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/challenge/start) -"cu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/challenge/start) -"cv" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/challenge/start) +"ct" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/challenge/start) +"cu" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/challenge/start) +"cv" = (/obj/machinery/atmospherics/unary/tank/air{dir = 1},/turf/simulated/floor/plating,/area/awaymission/challenge/start) "cw" = (/turf/space,/area/space) -"cx" = (/obj/machinery/atmospherics/unary/tank/air{dir = 1},/turf/simulated/floor/plating,/area/awaymission/challenge/start) -"cy" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission/challenge/start) +"cx" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission/challenge/start) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -140,7 +139,7 @@ aaabababababacababafacacacacacacacacacacacacacacacacacacacacacacababacacacacacac aaababababacacacacacacacacacacahacacacacacacacacacacacacacacacacacacacacacacacacacacacacacagagagaiajakagacacacacacacabababababaa aaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacalagamamajajajagacacacacacacacababababaa aaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacalagamamanajajagacacacacacacacacabababaa -aaabababacacacaoacacacacacacacacacacacacacacacacacacacacapacacacacacacacacacacacacacacacacaSaramamasagagacacacacacacacacabababaa +aaabababacacacaoacacacacacacacacacacacacacacacacacacacacapacacacacacacacacacacacacacacacacaqaramamasagagacacacacacacacacabababaa aaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacagagagamatauacacacacacacacacacabababaa aaabababacacacacacacacacacacacacagagagagagagagavacacacacacacacacacacacacacacacacacacacacacacawagaxayauacacacacacacacacacabababaa aaabababacadacacacacacacacacacacagazaAaBaCaDagacacacacacacacacafacacacacacacacacacacacacacacacagagagagacacacacacacacacacabababaa @@ -148,7 +147,7 @@ aaabababacacacacacacacacacacacacagamamamamamagacacacacacacacacacacacacacaoacacab aaabababacacacacacacacacacacacacauamamamamamauacacacacacacacacacacacacacacababababacacacacacacacacacacacacacacacacacacacabababaa aaabababacacacacacacalacacacacacagamamamamaEagacacacacacacacacacacacacacacabababababababacacacacacacacacacacacacacacacacabababaa aaabababacacacacacacacacacacacacagasamamamaFagacacacacacacacacacacacacacacacababababababacacacacacacacacacacacacacahacacabababaa -aaabababacacacacacafacacacacacacagagagaSagagagacacacacacacacacacacacacacacacacabababacavacacacacacacacacacacacacacacacacabababaa +aaabababacacacacacafacacacacacacagagagaqagagagacacacacacacacacacacacacacacacacabababacavacacacacacacacacacacacacacacacacabababaa aaabababacacacacacacacacacacacacacaGacacacacalacacacacacacacacacaHacacacacacacacababababacacacacacacacacacacacacacacacacabababaa aaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababacacacacacacacacacacacacacacacacacabababaa aaabababacacacacacacacacacacacacacacacacacacacacacacacaIacacacacacacacacadacacacabacacacacacacacacacacacacacacacacacacacabababaa @@ -157,15 +156,15 @@ aaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac aaabaJabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaKacacacacacacacacacacacacacacacacacacacacacacacababababaa aaabaHaLacaLacabaKacacacacacacacacacacacaKacacacacacacacacacacacacacacaKacacacacacacacacacacacacacacacaHacacacacacacabababababaa aaabababacabababababacacacacacaHacacacacaKacacacacacacacacaGacacacaGacacacacacacacacacacacacacacacacacacacacacacacacabacabababaa -aaabaMaMaNaMaOababacacacacacacacacacacacacacacacacacacaPaQaRaqaqaqaTaQaUacacacacacacacacacacacacacacacacacacacacacacacacabababaa +aaabaMaMaNaMaOababacacacacacacacacacacacacacacacacacacaPaQaRaSaSaSaTaQaUacacacacacacacacacacacacacacacacacacacacacacacacabababaa aaabaMaVaVaVaWababacacacacacacacacacacacacacacacacacacaXaYaZaYaZaYaZaYaXacacacacacacacacacapacacacacacacacacacacacababababababaa aaabaOaVbaaVaMababacacacacacacacacacacacacacacacacacaGbbaZaYaZaYaZaYaZbbaGacacacacacacacacacacacacacacacacacacacacacabababababaa -aaabaWbcbdbeaOababababacacacacacacaIacacacacacacacacacaqaYaZaYaZaYaZaYaqacacacacacacacacacacacacacacacacacacacacacacabababababaa -aaabaMaMaOaMaWabababacacacacacacacacacacacacacacacacacaqaZaYaZbfaZaYaZaqacacacacacacacacacacacacacacacacavacacacacacabababababaa -aaababababababababacacacacacacacacacacacacacacacacacacaqaYaZaYaZaYaZaYaqacacacacacacacacacacacacacacacacacacacacacacabababababaa +aaabaWbcbdbeaOababababacacacacacacaIacacacacacacacacacaSaYaZaYaZaYaZaYaSacacacacacacacacacacacacacacacacacacacacacacabababababaa +aaabaMaMaOaMaWabababacacacacacacacacacacacacacacacacacaSaZaYaZbfaZaYaZaSacacacacacacacacacacacacacacacacavacacacacacabababababaa +aaababababababababacacacacacacacacacacacacacacacacacacaSaYaZaYaZaYaZaYaSacacacacacacacacacacacacacacacacacacacacacacabababababaa aaabababababababababacacacacacacacacacacacacacacacacaGbgaZaYaZaYaZaYaZbgaGacacacacacacacacacacacaIacacacacacacacacacacababababaa aaabababacabababababacacacacacacacacacacacacacacacacacaXaYaZaYaZaYaZaYaXacacacacacacacacacacacacacacacacacacacacacacacacabababaa -aaabababacacacacacacacacacacacacacacacacacacacacacacacbhaQaRaqaqaqaTaQbiacacacaKacacacacaoacacacacacacacacacacacacacacacabababaa +aaabababacacacacacacacacacacacacacacacacacacacacacacacbhaQaRaSaSaSaTaQbiacacacaKacacacacaoacacacacacacacacacacacacacacacabababaa aaabababacacacacacacacacacacacacacacacacacacacacaHacacacacaGacacacaGacacacacacacacacacacacacacacacacacacacacacacacacacacabababaa aaabababacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaa aaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaa @@ -180,18 +179,17 @@ aaabababacacacacacbkagagagagacacacacacacacacacacacacacacabacabababacacacacacacac aaabababacacacacacagagbubvagagacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaa aaabababacacacacacagbwamambxagacacacacacacacacacacacacacacacaIacacacacacacacacafacacacacacacacacacacacacacacacacacacacacabababaa aaabababacacacacacaubyamamamagbzacacacacacbjacacacacacacacacacbAacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaa -aaabababacacacacacauasamamamaSacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaa -aaabababacacacacacagbBbCambDagbzacacacacacacacacacacacacacacacacacacacacacacacacacacacacacapacacacacacacacacacacacacacacabababaa -aaabababacacacacacagagagagagagacacacacacacacacacacacacacacbFbEbEbEbFbkacacacacacacacacacacacacacacacacacacacacacacaeacacabababaa -aaabababacacacacacalacacacacacacacacacacacacacacacacacaeacbFbGbGbGbFbjaIacacacacacacacacacacacacacacacacacacacacacacacacabababaa -aaabababacacacacacacacacacacacacacacacacacacacacbFbFbFbFbFbFbHbHbHbFbFbFbFbFbFacacacacacacacacacacacacacacacacacacacacacabababaa -aaabababacaeacacacacacacacacacacacacacacacabacabbFbIbIbIbIbKbJbJbJbKbIbIbIbIbFababacacacacacacacacacacacacacacacacacacacabababaa -aaababababacacacacacacadacacacacacacacacababababbFbIbLbLbLbIbMbObNbIbPbSbQbIbFabbjacababacacacacacacacadacacacacacacacacabababaa -aaabababababacacacacacacacacacacacacacababbRbRbRbFbIbLbLbLbIbTbUbTbIbVbZbWbIbFbRbRbRababacacacacacacacacacacacacacacacababababaa -aaabababababacabacacacacacacacacacacacababbRbXbYbFbIbLbLbLcbcacccacecdcicfbIbFcgcgbRabababacacacacacacacacacacacacacabababababaa -aaababababababababababababababababababababbRchcjbFckcbclclcncmcpcocqclclcebIbFcgcgbRabababababababababababababababababababababaa -aaababababababababababababababababababababbRcgcgbFbFcrbFbFctcscucscvbFbFcrbFbFcgcgbRabababababababababababababababababababababaa -aaababababababababababababababababababababbRcgcgcgbFcxbFcwcycwcwcwcycwbFcxbFcgcgcgbRabababababababababababababababababababababaa +aaabababacacacacacauasamamamaqacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaa +aaabababacacacacacagbBamambCagbzacacacacacacacacacacacacacacacacacacacacacacacacacacacacacapacacacacacacacacacacacacacacabababaa +aaabababacacacacacagagagagagagacacacacacacacacacacacacacacbDbEbEbEbDbkacacacacacacacacacacacacacacacacacacacacacacaeacacabababaa +aaabababacacacacacalacacacacacacacacacacacacacacacacacaeacbDbFbFbFbDbjaIacacacacacacacacacacacacacacacacacacacacacacacacabababaa +aaabababacacacacacacacacacacacacacacacacacacacacbDbDbDbDbDbDbGbGbGbDbDbDbDbDbDacacacacacacacacacacacacacacacacacacacacacabababaa +aaabababacaeacacacacacacacacacacacacacacacabacabbDbHbHbHbHbIbJbJbJbIbHbHbHbHbDababacacacacacacacacacacacacacacacacacacacabababaa +aaababababacacacacacacadacacacacacacacacababababbDbHbKbKbKbHbLbMbNbHbObPbQbHbDabbjacababacacacacacacacadacacacacacacacacabababaa +aaabababababacacacacacacacacacacacacacababbRbRbRbDbHbKbKbKbHbSbTbSbHbUbVbWbHbDbRbRbRababacacacacacacacacacacacacacacacababababaa +aaabababababacabacacacacacacacacacacacababbRbXbYbDbHbKbKbKbZcacbcacccdcecfbHbDcgcgbRabababacacacacacacacacacacacacacabababababaa +aaababababababababababababababababababababbRchcibDcjbZckckclcmcncocpckckccbHbDcgcgbRabababababababababababababababababababababaa +aaababababababababababababababababababababbRcgcgbDbDcqbDbDcrcsctcscubDbDcqbDbDcgcgbRabababababababababababababababababababababaa +aaababababababababababababababababababababbRcgcgcgbDcvbDcwcxcwcwcwcxcwbDcvbDcgcgcgbRabababababababababababababababababababababaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} - diff --git a/_maps/map_files/RandomZLevels/moonoutpost19.dmm b/_maps/map_files/RandomZLevels/moonoutpost19.dmm index 369c9363825..46fef62f780 100644 --- a/_maps/map_files/RandomZLevels/moonoutpost19.dmm +++ b/_maps/map_files/RandomZLevels/moonoutpost19.dmm @@ -2,13 +2,13 @@ "ab" = (/turf/simulated/mineral/random/labormineral,/area/awaycontent/a3{always_unpowered = 1; ambientsounds = list('sound/ambience/ambimine.ogg'); has_gravity = 1; name = "Khonsu 19"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "ac" = (/obj/structure/alien/weeds,/obj/structure/alien/resin/wall,/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "ad" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/alien/resin/wall,/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) -"ae" = (/obj/structure/alien/weeds,/obj/structure/alien/weeds{desc = "A large mottled egg."; health = 100; icon_state = "egg_hatched"; name = "egg"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) +"ae" = (/obj/structure/alien/weeds,/obj/structure/alien/weeds{desc = "A large mottled egg."; icon_state = "egg_hatched"; name = "egg"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "af" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/structure/alien/resin/wall,/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) -"ag" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/alien/weeds{desc = "A large mottled egg."; health = 100; icon_state = "egg_hatched"; name = "egg"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) +"ag" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/alien/weeds{desc = "A large mottled egg."; icon_state = "egg_hatched"; name = "egg"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "ah" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "ai" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/mob/living/simple_animal/hostile/alien,/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "aj" = (/obj/structure/alien/weeds,/obj/structure/stool/bed/nest,/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) -"ak" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/structure/alien/weeds{desc = "A large mottled egg."; health = 100; icon_state = "egg_hatched"; name = "egg"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) +"ak" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/structure/alien/weeds{desc = "A large mottled egg."; icon_state = "egg_hatched"; name = "egg"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "al" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/stool/bed/nest,/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "am" = (/obj/structure/alien/weeds/node,/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "an" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/structure/stool/bed/nest,/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) @@ -32,9 +32,9 @@ "aF" = (/obj/machinery/gateway{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "aG" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor/plasteel{dir = 1; icon_state = "vault"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "aH" = (/obj/machinery/gateway{dir = 5},/turf/simulated/floor/plasteel{dir = 4; icon_state = "vault"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) -"aI" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/alien/weeds{desc = "A large mottled egg."; health = 100; icon_state = "egg_hatched"; name = "egg"},/obj/effect/decal/cleanable/blood/gibs{color = "red"; icon_state = "gib1_flesh"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) +"aI" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/alien/weeds{desc = "A large mottled egg."; icon_state = "egg_hatched"; name = "egg"},/obj/effect/decal/cleanable/blood/gibs{color = "red"; icon_state = "gib1_flesh"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "aJ" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/effect/decal/cleanable/blood/gibs{color = "red"; icon_state = "gib2_flesh"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) -"aK" = (/obj/structure/alien/weeds,/obj/structure/alien/weeds{desc = "A large mottled egg."; health = 100; icon_state = "egg_hatched"; name = "egg"},/obj/effect/decal/cleanable/blood{color = "red"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) +"aK" = (/obj/structure/alien/weeds,/obj/structure/alien/weeds{desc = "A large mottled egg."; icon_state = "egg_hatched"; name = "egg"},/obj/effect/decal/cleanable/blood{color = "red"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "aL" = (/obj/structure/alien/weeds,/mob/living/simple_animal/hostile/alien/drone{plants_off = 1},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a5{always_unpowered = 1; has_gravity = 1; name = "The Hive"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "aM" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "aN" = (/obj/machinery/gateway/centeraway{calibrated = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) @@ -220,7 +220,7 @@ "el" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/structure/stool/bed/nest,/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 9; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "em" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; dir = 4; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "en" = (/obj/structure/alien/weeds,/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) -"eo" = (/obj/machinery/light{active_power_usage = 0; dir = 1; icon_state = "tube-broken"; status = 2},/obj/structure/alien/weeds,/obj/structure/alien/weeds{desc = "A large mottled egg."; health = 100; icon_state = "egg_hatched"; name = "egg"},/obj/machinery/camera{c_tag = "Xenobiology Containment North"; network = list("MO19X")},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) +"eo" = (/obj/machinery/light{active_power_usage = 0; dir = 1; icon_state = "tube-broken"; status = 2},/obj/structure/alien/weeds,/obj/structure/alien/weeds{desc = "A large mottled egg."; icon_state = "egg_hatched"; name = "egg"},/obj/machinery/camera{c_tag = "Xenobiology Containment North"; network = list("MO19X")},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "ep" = (/obj/machinery/sparker{desc = "A wall-mounted ignition device. This one has been applied with an acid-proof coating."; id = "awayxenobio"; name = "Acid-Proof mounted igniter"; pixel_x = 0; pixel_y = 25; unacidable = 1},/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/alien/resin/wall,/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "eq" = (/obj/structure/alien/weeds,/obj/structure/alien/resin/wall,/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "er" = (/obj/structure/alien/weeds,/obj/structure/stool/bed/nest,/obj/item/clothing/mask/facehugger{icon_state = "facehugger_impregnated"; item_state = "facehugger_impregnated"; stat = 2},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) @@ -240,7 +240,7 @@ "eF" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/structure/alien/resin/wall,/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "eG" = (/obj/structure/alien/weeds,/obj/structure/stool/bed/nest,/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "eH" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/effect/decal/cleanable/blood/tracks{color = "red"; desc = "Your instincts say you shouldn't be following these."; icon = 'icons/effects/blood.dmi'; icon_state = "tracks"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) -"eI" = (/obj/structure/alien/weeds,/obj/structure/alien/weeds{desc = "A large mottled egg."; health = 100; icon_state = "egg_hatched"; name = "egg"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) +"eI" = (/obj/structure/alien/weeds,/obj/structure/alien/weeds{desc = "A large mottled egg."; icon_state = "egg_hatched"; name = "egg"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "eJ" = (/turf/simulated/wall,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "eK" = (/turf/simulated/wall/rust,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "eL" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitehall"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) @@ -248,7 +248,7 @@ "eN" = (/obj/machinery/light/small{active_power_usage = 0; dir = 8; icon_state = "bulb-broken"; status = 2},/obj/machinery/camera{c_tag = "Xenobiology"; dir = 4; network = list("MO19","MO19R")},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitehall"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "eO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/stool/bed/chair/office/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "eP" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "Awaylab"; name = "Containment Chamber Blast Doors"; pixel_x = 4; pixel_y = -2; req_access_txt = "201"},/obj/machinery/ignition_switch{id = "awayxenobio"; pixel_x = 4; pixel_y = 8},/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) -"eQ" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/alien/weeds{desc = "A large mottled egg."; health = 100; icon_state = "egg_hatched"; name = "egg"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) +"eQ" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/alien/weeds{desc = "A large mottled egg."; icon_state = "egg_hatched"; name = "egg"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "eR" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/cleanable/blood{color = "red"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "eS" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "eT" = (/turf/simulated/wall,/area/awaycontent/a7) @@ -273,7 +273,7 @@ "fm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "fn" = (/obj/structure/closet/l3closet/scientist,/obj/structure/window/reinforced,/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "fo" = (/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/door/poddoor/preopen{desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; id_tag = "Awaylab"; name = "Acid-Proof containment chamber blast door"; unacidable = 1},/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) -"fp" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/structure/alien/weeds{desc = "A large mottled egg."; health = 100; icon_state = "egg_hatched"; name = "egg"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) +"fp" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/obj/structure/alien/weeds{desc = "A large mottled egg."; icon_state = "egg_hatched"; name = "egg"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "fq" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/stool/bed/nest,/obj/item/clothing/mask/facehugger{icon_state = "facehugger_impregnated"; item_state = "facehugger_impregnated"; stat = 2},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "fr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/awaycontent/a7) "fs" = (/obj/effect/decal/cleanable/blood/tracks{desc = "Your instincts say you shouldn't be following these."; dir = 8; icon_state = "ltrails_1"},/turf/simulated/floor/plating,/area/awaycontent/a7) diff --git a/_maps/map_files/RandomZLevels/spacehotel.dmm b/_maps/map_files/RandomZLevels/spacehotel.dmm index 9a66c57d6ba..f40c2033dfd 100644 --- a/_maps/map_files/RandomZLevels/spacehotel.dmm +++ b/_maps/map_files/RandomZLevels/spacehotel.dmm @@ -409,7 +409,7 @@ "hS" = (/turf/unsimulated/floor{icon_state = "whiteyellow"; dir = 4},/area/awaymission/spacehotel) "hT" = (/obj/effect/view_portal{id = "hotel_12"},/turf/unsimulated/floor{icon_state = "rampbottom"; dir = 4},/area/awaymission/spacehotel) "hU" = (/obj/effect/view_portal/visual{dir = 4; dist = 0; id = "hotel_22"; opacity = 0; radius = 0},/turf/unsimulated/floor,/area/awaymission/spacehotel) -"hV" = (/obj/machinery/door/airlock/public/glass{icon_state = "door_locked"; locked = 1; name = "Employees Only"; req_access_txt = "150"},/obj/item/tape/police{icon_state = "police_door"; layer = 3.2},/turf/unsimulated/floor{dir = 8; icon_state = "whitered"},/area/awaymission/spacehotel) +"hV" = (/obj/machinery/door/airlock/public/glass{icon_state = "door_locked"; locked = 1; name = "Employees Only"; req_access_txt = "150"},/turf/unsimulated/floor{dir = 8; icon_state = "whitered"},/area/awaymission/spacehotel) "hW" = (/obj/effect/decal/cleanable/blood/old,/turf/unsimulated/floor{icon_state = "white"},/area/awaymission/spacehotel) "hX" = (/obj/effect/view_portal/visual{dir = 8; dist = 0; id = "hotel_13"; radius = 0},/turf/unsimulated/floor,/area/awaymission/spacehotel) "hY" = (/obj/effect/view_portal{id = "hotel_23"},/turf/unsimulated/floor{icon_state = "ramptop"; dir = 4},/area/awaymission/spacehotel) @@ -485,7 +485,7 @@ "jq" = (/obj/item/toy/spinningtoy,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "jr" = (/obj/item/grown/bananapeel,/obj/item/toy/spinningtoy,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "js" = (/obj/structure/barricade/wooden,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) -"jt" = (/obj/machinery/door/airlock/public/glass,/obj/item/tape/engineering{icon_state = "engineering_door"; layer = 3.2},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) +"jt" = (/obj/machinery/door/airlock/public/glass,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "ju" = (/obj/machinery/gateway{dir = 10},/turf/unsimulated/floor{icon_state = "warning"; dir = 10},/area/awaymission/spacehotel) "jv" = (/obj/machinery/gateway,/turf/unsimulated/floor{icon_state = "warning"},/area/awaymission/spacehotel) "jw" = (/obj/machinery/gateway{dir = 6},/turf/unsimulated/floor{icon_state = "warning"; dir = 6},/area/awaymission/spacehotel) diff --git a/_maps/map_files/RandomZLevels/terrorspiders.dmm b/_maps/map_files/RandomZLevels/terrorspiders.dmm index 0b6817624ba..d21991c7ca5 100644 --- a/_maps/map_files/RandomZLevels/terrorspiders.dmm +++ b/_maps/map_files/RandomZLevels/terrorspiders.dmm @@ -5,7 +5,7 @@ "ae" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) "af" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 7; tag = "icon-manifold-b-f (WEST)"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) "ag" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) -"ah" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "weld"; id_tag = "UO71_waste_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0; welded = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) +"ah" = (/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = null},/obj/machinery/camera{c_tag = "Gateway Ready Room"; dir = 2; network = list("UO71")},/obj/structure/table,/obj/machinery/computer/id_upgrader{light_color = "#00ffff"; light_power = 4; light_range = 2},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/gateway) "ai" = (/obj/structure/spider/cocoon{icon_state = "cocoon_large1"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) "aj" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/plaza) "ak" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/plaza) @@ -465,17 +465,16 @@ "iW" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/sign/deathsposal{desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/centralhall) "iX" = (/obj/structure/closet/secure_closet{icon_state = "secure"; locked = 0; name = "kitchen Cabinet"; req_access_txt = "271"},/obj/item/reagent_containers/food/condiment/flour,/obj/item/reagent_containers/food/condiment/flour,/obj/item/reagent_containers/food/condiment/sugar,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaymission/UO71/centralhall) "iY" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/awaymission/UO71/centralhall) -"iZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; icon_state = "weld"; on = 1; welded = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) +"iZ" = (/obj/effect/decal/cleanable/blood/gibs{color = "red"; icon_state = "gib2_flesh"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) "ja" = (/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/obj/machinery/camera{c_tag = "Gateway Chamber"; dir = 4; network = list("UO71")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/gateway) -"jb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/blood/gibs{color = "red"; icon_state = "gib2_flesh"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) -"jc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) -"jd" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/awaymission/UO71/gateway) -"je" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/stool,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) -"jf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/gateway) +"jb" = (/obj/structure/stool,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) +"jc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/gateway) +"jd" = (/obj/machinery/door/poddoor{id_tag = "UO71_Start"; name = "UO71 Sealed Facility"},/obj/machinery/door/airlock/research{name = "Gateway Observation"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/gateway) +"je" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 7; tag = "icon-manifold-b-f (WEST)"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutral"},/area/awaymission/UO71/centralhall) +"jf" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 10; icon_state = "neutral"},/area/awaymission/UO71/centralhall) "jg" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/awaymission/UO71/mother) -"jh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/gateway) +"jh" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 7; tag = "icon-manifold-b-f (WEST)"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/awaymission/UO71/centralhall) "ji" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/awaymission/UO71/science) -"jj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/poddoor{id_tag = "UO71_Start"; name = "UO71 Sealed Facility"},/obj/machinery/door/airlock/research{name = "Gateway Observation"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/UO71/gateway) "jk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/gateway) "jl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/mineral/random/labormineral,/area/awaymission/UO71/outside) "jm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 2},/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/awaymission/UO71/outside) @@ -596,7 +595,6 @@ "lx" = (/obj/structure/table,/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/multitool,/obj/structure/sign/nosmoking_2{pixel_x = -32},/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warndark"; tag = "icon-warndark (EAST)"},/area/awaymission/UO71/gateway) "ly" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) "lz" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) -"lA" = (/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = null},/obj/machinery/camera{c_tag = "Gateway Ready Room"; dir = 2; network = list("UO71")},/obj/structure/table,/obj/machinery/computer/id_upgrader,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaymission/UO71/gateway) "lB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) "lC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/UO71/gateway) "lD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/gateway) @@ -782,8 +780,6 @@ "pb" = (/obj/structure/closet/secure_closet{icon_broken = "secbroken"; icon_closed = "sec"; icon_locked = "sec1"; icon_off = "secoff"; icon_opened = "secopen"; icon_state = "sec1"; locked = 1; name = "security officer's locker"; req_access_txt = "271"},/obj/item/flash,/obj/item/reagent_containers/spray/pepper,/obj/item/restraints/handcuffs,/turf/simulated/floor/plasteel{dir = 10; icon_state = "red"},/area/awaymission/UO71/science) "pc" = (/obj/machinery/door/airlock/security/glass{name = "Security Office"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/science) "pd" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 6; icon_state = "red"},/area/awaymission/UO71/science) -"pe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall) -"pf" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutral"},/area/awaymission/UO71/centralhall) "pg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/awaymission/UO71/centralhall) "ph" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; initialize_directions = 14; tag = "icon-manifold-b-f (NORTH)"},/turf/simulated/floor/plasteel,/area/awaymission/UO71/centralhall) "pi" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/public/glass{name = "Central Access"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/awaymission/UO71/centralhall) @@ -836,9 +832,7 @@ "qd" = (/obj/machinery/door/poddoor{id_tag = "UO71_SciStorage"; name = "SciStorage Door"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/UO71/loot) "qe" = (/obj/structure/grille,/obj/structure/window/full/basic,/turf/simulated/floor/plating,/area/awaymission/UO71/medical) "qf" = (/obj/machinery/door/airlock/medical/glass{id_tag = null; name = "Medical Storage"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/UO71/medical) -"qg" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 10; icon_state = "neutral"},/area/awaymission/UO71/centralhall) "qh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/wall,/area/awaymission/UO71/centralhall) -"qi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/awaymission/UO71/centralhall) "qj" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "neutral"},/area/awaymission/UO71/centralhall) "qk" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "neutral"},/area/awaymission/UO71/centralhall) "ql" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/door_control{id = "awaydorm4"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/awaymission/UO71/centralhall) @@ -1331,7 +1325,6 @@ "zF" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) "zG" = (/obj/machinery/door/poddoor{id_tag = "UO71_Caves"; name = "Caves Lockdown Door"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) "zH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 7; tag = "icon-manifold-r-f (WEST)"},/turf/simulated/wall,/area/awaymission/UO71/science) -"zI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 7; tag = "icon-manifold-b-f (WEST)"},/obj/structure/spider/terrorweb,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) "zJ" = (/obj/structure/spider/terrorweb,/obj/structure/spider/terrorweb,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) "zK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/spider/terrorweb,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) "zL" = (/obj/structure/table,/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/UO71/queen) @@ -1417,19 +1410,19 @@ aaaaaaaaaaaaaaabababababfLghgQgSgRghgsgVgTfMgWgYgXfLgagpgpgpgUhWgpgpgafNgZhbhahd aaaaaaaaaaaaaaabababababfLghhuhwhvghgshyhxfMhzhBhAfLgagpgpgpgphWgpgpgafOhCighFhdhHhIfNabzcfPhDgegdgegdgdhEfPzcabfbhJfFfbabababababfbhKhLgEhNhMgEgEhOfehPgOhQgkhRfbgbfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababfMhThShYhXhSgshyhZfLfLiafLfLgahUgphVgpmimhmxgafOibihicijiiikfNabzcidiegdifgdgdmygefPzcabfbhJfTfbabababababfbilhhgEhNimgEgEioiniqipgkgkirfeisfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababfMiuitiwiviziyiGiEixiHiJiAiBiCiDgagaiOiOgaiFgafNiPiQgAfOfNfNfOabzciIfPfPfPiRiRiKiLiLjmiMiNiSfTfeabababababfbiTgEiohjhMgEgEiUfbiWiVgkfUiXfbiYfhabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababfMjaiZjcjbjejdjfjfjjjhjkfMababababjgjnjnjgjifOfOjojpgzfOababababzcyXzczcyYjqjqyYzczczcabfejsjrfefeababababfejtjugEiohMjyjvjAfbfbjBjwjwjxjxjCjzabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababfMjamliwiZjbgsghghjdjcjkfMababababjgjnjnjgjifOfOjojpgzfOababababzcyXzczcyYjqjqyYzczczcabfejsjrfefeababababfejtjugEiohMjyjvjAfbfbjBjwjwjxjxjCjzabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababfLjEjDiwjFjHfLfLfMfMjIjJfMababababjGjKjKjGjifOfOjLjNjMfOabababababjlababjGjOjOjGababababfbjPfRjQfefbfbfbfefejRjShhjThjhjgEgEjUjWjVjYjXkajZkbfeabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababfMfLfMkdkcfLfLkkkifMklkqfLfOfOfOfOkekfkgkekhfNkrkjktksfOfOfOfOfOfOkmfOfOknkokpkefOfOfNfOfOkufRfRkvfRfFfRfRjrgEgEgEkwiogEkxkykykAkzfbkBkDkCfefbabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababfLkEiwkFlAkGkRkHixkSkUkTkIkJkKkLkMkJkNkOkPkQlckVleldkJkWkNkJkJkXkYkZlalblglflhfOljlilkfOlmlllllllnlllplojrgEiogElrlqlqlqlulslwlvfbfbfefefeababababababababababababababltltltltltabababababababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababfLkEiwkFahkGkRkHixkSkUkTkIkJkKkLkMkJkNkOkPkQlckVleldkJkWkNkJkJkXkYkZlalblglflhfOljlilkfOlmlllllllnlllplojrgEiogElrlqlqlqlulslwlvfbfbfefefeababababababababababababababltltltltltabababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaababababababfLlxlzlylElylClBmMlDlGlFlHlHlIlHlJlHlLlKlNlMlPlOlRlQlTlSlVlUlXlWlXlXlXlYgAlflhlZgAgAgAlZmbmafFmcfbfefbfbfefefbfbfbmdmehhmffbjsmgfeababababababababababababababababababltnBmzmjltabababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaababababababfMmkmmmliwjHjHmnfLmompfMfNfOfOfOfNfOfOmqfOfOmsmrfOfOfOmtfOfOfOfNmumumumumvlflhfOokmwqDtDqKfEmBmAfbmCmDmCfemEmGmFfefefbfbfefbmImHfeababababababababababababababababababltmKmJmjltabababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaababababababfLmLmlmNmPmOmSmQfMfLfLfLabfOgAgAmTfOmVmUmTfNmRmWfOmXmZmYnbnancfOnendnfmumvlbfOfOmRfOfOfNnhngfefefbninknjfbnlnnnmfenonsnqntfbnumHfbabababababababababababababababababnpltltnvnrnrnpababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaababababababfLfLfMfMfLfLfMfMfLababababfOgAgAgAfOnwmUnxfOmRnyfOnzojnAnDnanafNnFnEnGmumvnCfNnHzDnInInKnMnLnOnNfbfXnPfbfefXnQfbfbnRfFnSnVnUnZnWfbabababababababababababababababababnToaobobobocnpababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababfOnXnYgAodgAoeoffOkmogfOohojoiooonopfNoroqosmumvlbfNogzHolomomouotowovoyoxoAozoCoBoAoDoFoEoHoGoJoIoNoMfbabababababababababababababababababnToOoQoPoQoOnpnpnpnpabababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababfOoKoLgAfOoSoRoTfOkmoUfOoVojoWoYoXoZfNpbpapdpcmvlbfOnymRfbfbfbpfpellpgpiphpkpjplphpnpmpppopkpqprfbptpsfeabababababababababababababababababnppwpypxpApznppupvnpabababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababfOfOfOfOfOfOfOfOfNpDpCfOpEpFnapGnaoXfOfOpBkmfOmvlafNpHmRfbfbfbpJpIfRpKfbpLfbfhfepMfbfbfepNfbfbpOfbpRmHfbabababababababababababababababababnppSpYpUpYpZnTpPpQnpabababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNqbjifOfOfOqcfOpTqdpTpTpVpWpXqfqeqaogkmfbfbfbqiqgqkqjfeqlqmqhqoqnfeqpqtqqqwfeqxfehJmHfbababababababababnTnTnpnpnTababababnpqyqyqzqyqynpqrqsnpnpnpabababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOqAkhquqvmuqBqCpTqFzOpTpVqHqGqJqIqaogmRfbfbfbqEzPzQzQzPqLqMfbqOqNfbfbfbqPqQfeqRfbhJmHfbababababababababnTqTqSqSnpnTnTnTnpnpqUqWqVqYqXrcqZrerdrfnpabababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababfOoKoLgAfOoSoRoTfOkmoUfOoVojoWoYoXoZfNpbpapdpcmvlbfOnymRfOfOfbjellllpgpiphpkpjplphpnpmpppopkpqprfbptpsfeabababababababababababababababababnppwpypxpApznppupvnpabababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababfOfOfOfOfOfOfOfOfNpDpCfOpEpFnapGnaoXfOfOpBkmfOmvlafNpHmRfOfOfbpJpIfRpKfbpLfbfhfepMfbfbfepNfbfbpOfbpRmHfbabababababababababababababababababnppSpYpUpYpZnTpPpQnpabababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNqbjifOfOfOqcfOpTqdpTpTpVpWpXqfqeqaogkmfOfOfbjhjfqkqjfeqlqmqhqoqnfeqpqtqqqwfeqxfehJmHfbababababababababnTnTnpnpnTababababnpqyqyqzqyqynpqrqsnpnpnpabababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOqAkhquqvmuqBqCpTqFzOpTpVqHqGqJqIqaogmRfOfOfbqEzPzQzQzPqLqMfbqOqNfbfbfbqPqQfeqRfbhJmHfbababababababababnTqTqSqSnpnTnTnTnpnpqUqWqVqYqXrcqZrerdrfnpabababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababababababababababfOrgjirarbrjrirkpTqFqFpTrhroqJqJrpqarqrlrmrmrmrnrmrsrrsartmCfbrvrufbrwrxqqryfbrzfbrBrAfbfbfbfbfefbfbfbfbnprDrCrFrEnTrHrJrIrGrKrMrLrOrNrNrPrSrRrfnpnpnTnTababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNrTkhqurQmurUrVpTrXrWpTpVrZrYscsbqasdmRsasgsfshsesirrsafefefefbfefbfefesjfbfbskfesmslsosnsqspsrsnstsssvsusxswszsysBsAsDsCsFsEsHsGsJsIsOsOsPsPsQsKsLsMnTababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababababababababababfNrgkhfOfOfOfNfNpTpTsNpTpVsSsRsUsTqaogmRsarrrrsVsarrsWsaabababababfbsXsYqqsZferzfejPtanUtbtctbtdtbtftethtgtititktjtmtltotnsFtptrtqtttstvtutAtztBtwtxtynpababababababababababaaaaaaaaaaaaaa @@ -1471,7 +1464,7 @@ aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababab aaaaaaaaaaaaaaabababababababababababababababababababuWababababababababababababababababababababababababababuWuWuWuWababababababababababababuWuWuWzyzdzyzzzBzyzyzyzyzgzgzdzguWuWabababuWuWuWabababuWuWuWuWuWuWuWuWuWabuWuWuWuWuWabababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababuWuWabababababababababababababababababababababababababuWuWuWababababababababababababababuWuWzyzdzyzzagzFzCzAzyzyzyzdzguWabababababuWababababuWabababuWuWuWabuWuWuWuWuWuWuWabababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaababababababababababababababababababababuWuWabababababababababababababababababababababababuWuWzrabababababababababababababababuWuWzBagzGzqaiagagzAzAzyzyzdzguWababuWabuWuWabababababababuWuWuWababababuWuWuWuWuWuWababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababuWuWuWababababababababababababababababababababuWuWuWabababababababababababababababababuWzyzdzyzIaeahagzAzJzyzyzdzguWababuWabuWabababababababuWuWuWababababababuWuWuWuWzrababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababuWuWuWababababababababababababababababababababuWuWuWabababababababababababababababababuWzyzdzyzKagagagzAzJzyzyzdzguWababuWabuWabababababababuWuWuWababababababuWuWuWuWzrababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaababababababababababababababababababababababuWuWuWababababababababuWuWuWuWuWabababababuWuWuWabababababababababababababababababababzyzdzyzKzAagagaizAzyzyzdzyuWababuWuWuWababuWababababuWuWabababababababuWuWuWuWuWababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaababababababababababababababababababababababababuWuWababababababuWuWuWuWuWuWuWuWabababuWuWzrabababababababababababababababababababzyzdzyzMzAzAagagagagzyzdzyuWababuWuWabababuWababababuWuWabababababababzruWuWuWuWababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababababababababuWuWuWuWuWuWuWuWababababababuWuWuWabuWuWababababababababababababababababababababzyzdzyzMzAzCagagagagzyzdzyuWabababababababuWuWababuWuWababababababababuWuWuWuWuWababababababababaaaaaaaaaaaaaa @@ -1487,7 +1480,7 @@ aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababab aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWzyzdzyzqzAagzgzgagagzyzdzyuWuWuWababuWuWababuWuWuWababuWababuWuWuWuWuWabababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWababababzyzdzgzqagzAzgagzAaizGagzBuWuWababababuWabababuWuWababuWuWabuWuWuWuWuWabababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWabababzyzdzgzqagaizFagagagzyzdzyabuWababuWabuWuWababuWuWabababuWuWuWuWuWuWuWabababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWabababuWuWuWuWabababzyzdzgafaeahagaiagagzyzdzyabuWuWuWuWababuWababuWuWuWababuWuWuWuWuWuWababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWabababuWuWuWuWabababzyzdzgzqagagagaiagagzyzdzyabuWuWuWuWababuWababuWuWuWababuWuWuWuWuWuWababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWabababababuWuWuWababzyzdzgzMagagagagagzgzyzdzyabababababababuWabababuWuWabuWuWuWabuWuWuWababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWabababababababuWuWuWabzyzdzyzMzgagagagzgzgzyzdzyababababababuWuWababababuWuWuWuWabuWuWuWabababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababuWuWuWuWuWuWabababababababababuWuWabzgzdzdzezdzRzRzRzdzdzdzdzgababuWuWuWuWuWabababuWuWuWuWabuWuWuWuWababababababababababababababababaaaaaaaaaaaaaa diff --git a/_maps/map_files/RandomZLevels/wildwest.dmm b/_maps/map_files/RandomZLevels/wildwest.dmm index 52dae9cef94..5f8aa9e293a 100644 --- a/_maps/map_files/RandomZLevels/wildwest.dmm +++ b/_maps/map_files/RandomZLevels/wildwest.dmm @@ -156,7 +156,7 @@ "cZ" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1"; icon_state = "ironsand1"},/area/awaymission/wwgov) "da" = (/obj/effect/landmark/corpse/syndicatecommando{mobname = "Syndicate Commando"},/turf/simulated/floor/carpet,/area/awaymission/wwgov) "db" = (/obj/machinery/mineral/mint,/turf/simulated/floor/plating,/area/awaymission/wwrefine) -"dc" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"dc" = (/obj/structure/window/reinforced{dir = 5; max_integrity = 1e+007},/turf/simulated/floor/wood,/area/awaymission/wwmines) "dd" = (/obj/structure/mineral_door/wood,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1"; icon_state = "ironsand1"},/area/awaymission/wwmines) "de" = (/obj/structure/mineral_door/wood,/obj/effect/decal/cleanable/blood/tracks,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1"; icon_state = "ironsand1"},/area/awaymission/wwmines) "df" = (/obj/structure/window/reinforced{dir = 4},/turf/space,/area/space) diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 91ff38abb2c..3bd5b206524 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -1976,8 +1976,8 @@ "aLZ" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/bookcase,/obj/item/book/manual/sop_engineering,/obj/item/book/manual/sop_medical,/obj/item/book/manual/sop_science{pixel_y = -14},/obj/item/book/manual/sop_security,/obj/item/book/manual/sop_service,/obj/item/book/manual/sop_supply,/obj/item/book/manual/sop_general,/obj/item/book/manual/sop_legal,/obj/item/book/manual/sop_command,/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) "aMa" = (/obj/structure/table,/obj/machinery/computer/mob_healer_terminal,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"}) "aMb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"}) -"aMc" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aMd" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aMc" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; layer = 3.3; master_tag = "sol_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "0"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"aMd" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "aMe" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"}) "aMf" = (/obj/machinery/door/airlock/external{frequency = 1450; icon_state = "door_locked"; id_tag = "bar_maint_inner"; locked = 1; name = "External Access"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aMg" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) @@ -2001,10 +2001,10 @@ "aMy" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "aMz" = (/turf/simulated/wall/rust,/area/maintenance/fsmaint2) "aMA" = (/turf/simulated/wall,/area/maintenance/fpmaint) -"aMB" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aMB" = (/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/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "aMC" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green,/turf/simulated/floor/wood,/area/mimeoffice) -"aMD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aME" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aMD" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = -32},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"aME" = (/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "aMF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/fsmaint) "aMG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/landmark{name = "JoinLateCryo"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/sleep) "aMH" = (/obj/machinery/requests_console{department = "Crew Quarters"; name = "Crew Quarters Requests Console"; pixel_y = 30},/obj/machinery/vending/cigarette,/obj/machinery/camera{c_tag = "Dormitories North"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) @@ -2233,7 +2233,7 @@ "aQW" = (/obj/structure/table,/obj/item/camera_assembly,/obj/item/camera_assembly,/obj/item/assembly/prox_sensor{pixel_x = -5; pixel_y = 5},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plating,/area/maintenance/electrical) "aQX" = (/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 11; id = "trade_dock"; name = "port bay 4 at Cyberiad"; width = 5},/turf/space,/area/space) "aQY" = (/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/electrical) -"aQZ" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) +"aQZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "aRa" = (/obj/item/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Arrivals Escape Pods"; dir = 2},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "aRb" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "sol_outer"; locked = 1; name = "Arrivals External Access"; req_access = null; req_access_txt = "0"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; layer = 3.3; master_tag = "sol_airlock"; name = "exterior access button"; pixel_x = -13; pixel_y = -23; req_access_txt = "0"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aRc" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry) @@ -2286,19 +2286,19 @@ "aRX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/maintenance/electrical) "aRY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plating,/area/maintenance/electrical) "aRZ" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating,/area/maintenance/electrical) -"aSa" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; layer = 3.3; master_tag = "sol_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) +"aSa" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "aSb" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "sol_inner"; locked = 1; name = "Arrivals External Access"; req_access = null; req_access_txt = "0"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"aSc" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) +"aSc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "aSd" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"aSe" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) +"aSe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/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/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "aSf" = (/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) -"aSg" = (/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry) -"aSh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 2},/area/hallway/secondary/entry) +"aSg" = (/obj/machinery/camera/motion{c_tag = "EVA North-West"; dir = 2; network = list("SS13")},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) +"aSh" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aSi" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "aSj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) -"aSk" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) -"aSl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry) -"aSm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/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/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) +"aSk" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) +"aSl" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) +"aSm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aSn" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry) "aSo" = (/obj/structure/closet/wardrobe/white,/obj/item/clothing/shoes/jackboots,/obj/item/reagent_containers/blood/OMinus,/obj/item/reagent_containers/food/drinks/cans/badminbrew,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "aSp" = (/obj/structure/table/glass,/obj/item/hemostat,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) @@ -2315,13 +2315,13 @@ "aSA" = (/turf/simulated/wall/r_wall,/area/gateway) "aSB" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) "aSC" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) -"aSD" = (/obj/machinery/camera/motion{c_tag = "EVA North-West"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aSD" = (/obj/machinery/camera{c_tag = "EVA North-East"; dir = 2; network = list("SS13")},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aSE" = (/obj/machinery/door/airlock/command/glass{name = "Softsuits"; req_access_txt = "18"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) "aSF" = (/obj/machinery/camera{c_tag = "Starboard Primary Hallway 3"; dir = 1; network = list("SS13")},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/west) "aSG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j1s"; name = "Botany"; sortType = 21; tag = "icon-pipe-j1s (EAST)"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aSH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/west) "aSI" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) -"aSJ" = (/obj/machinery/camera{c_tag = "EVA North-East"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aSJ" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aSK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) "aSL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command/glass{name = "Softsuits"; req_access_txt = "18"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) "aSM" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) @@ -2352,11 +2352,11 @@ "aTl" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/electrical) "aTm" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plating,/area/maintenance/electrical) "aTn" = (/obj/machinery/power/terminal,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/electrical) -"aTo" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry) -"aTp" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/entry) -"aTq" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry) -"aTr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) -"aTs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry) +"aTo" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"aTp" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"aTq" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"aTr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"aTs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "aTt" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry) "aTu" = (/turf/simulated/wall,/area/hallway/secondary/construction{name = "\improper Garden"}) "aTv" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/gateway) @@ -2365,12 +2365,12 @@ "aTy" = (/obj/machinery/gateway{dir = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/gateway) "aTz" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/ai_monitored/storage/eva) "aTA" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/gateway) -"aTB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/table/reinforced,/obj/item/clothing/head/welding,/obj/item/storage/belt/utility,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aTB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/table/reinforced,/obj/item/clothing/head/welding,/obj/item/storage/belt/utility,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aTC" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aTD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) "aTE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aTF" = (/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"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) -"aTG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/table/reinforced,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aTG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/table/reinforced,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aTH" = (/obj/structure/disposalpipe/segment,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) "aTI" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aTJ" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/fore) @@ -2400,11 +2400,11 @@ "aUh" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/computer/monitor{name = "Backup Power Monitoring Console"},/turf/simulated/floor/plating,/area/maintenance/electrical) "aUi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/wall,/area/maintenance/electrical) "aUj" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes{charge = 0},/turf/simulated/floor/plating,/area/maintenance/electrical) -"aUk" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry) -"aUl" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry) -"aUm" = (/obj/machinery/camera{c_tag = "Arrivals North"; dir = 1},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) -"aUn" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry) -"aUo" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) +"aUk" = (/obj/structure/closet/emcloset,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"aUl" = (/obj/structure/closet/emcloset,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"aUm" = (/obj/machinery/vending/coffee,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"aUn" = (/obj/machinery/camera{c_tag = "Arrivals North"; dir = 1},/obj/effect/landmark/start{name = "Civilian"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"aUo" = (/obj/machinery/door/firedoor,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "aUp" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry) "aUq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) "aUr" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) @@ -2422,11 +2422,11 @@ "aUD" = (/obj/machinery/gateway{dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/gateway) "aUE" = (/turf/simulated/wall/r_wall,/area/security/nuke_storage) "aUF" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/gateway) -"aUG" = (/obj/machinery/requests_console{department = "EVA"; name = "EVA Requests Console"; pixel_x = -32; pixel_y = 0},/obj/structure/table/reinforced,/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/multitool,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aUG" = (/obj/machinery/requests_console{department = "EVA"; name = "EVA Requests Console"; pixel_x = -32; pixel_y = 0},/obj/structure/table/reinforced,/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/multitool,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aUH" = (/obj/machinery/gateway/centerstation,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/gateway) "aUI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) "aUJ" = (/turf/simulated/wall,/area/ai_monitored/storage/eva) -"aUK" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table/reinforced,/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aUK" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table/reinforced,/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aUL" = (/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aUM" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/fore) "aUN" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plasteel,/area/hallway/primary/central/ne) @@ -2437,7 +2437,7 @@ "aUS" = (/turf/simulated/wall,/area/crew_quarters/bar) "aUT" = (/obj/structure/closet,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aUU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) -"aUV" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry) +"aUV" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "aUW" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aUX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry) "aUY" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/maintenance/electrical) @@ -2461,9 +2461,9 @@ "aVq" = (/obj/machinery/gateway{dir = 6},/obj/effect/landmark{name = "JoinLateGateway"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/gateway) "aVr" = (/obj/machinery/gateway{density = 0},/obj/structure/cable{d2 = 2; icon_state = "0-2"},/obj/effect/landmark{name = "JoinLateGateway"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/gateway) "aVs" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/tank/jetpack/carbondioxide,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) -"aVt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/camera/motion{c_tag = "EVA West"; dir = 4; network = list("SS13")},/obj/structure/table/reinforced,/obj/item/assembly/signaler,/obj/item/assembly/signaler,/obj/item/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aVt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/camera/motion{c_tag = "EVA West"; dir = 4; network = list("SS13")},/obj/structure/table/reinforced,/obj/item/assembly/signaler,/obj/item/assembly/signaler,/obj/item/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aVu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) -"aVv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/camera{c_tag = "EVA East"; dir = 8; network = list("SS13")},/obj/structure/table/reinforced,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aVv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/camera{c_tag = "EVA East"; dir = 8; network = list("SS13")},/obj/structure/table/reinforced,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aVw" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aVx" = (/obj/item/twohanded/required/kirbyplants,/obj/machinery/light{dir = 1; in_use = 1},/obj/structure/closet/walllocker/emerglocker/north,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHEAST)"; icon_state = "whiteblue"; dir = 5},/area/medical/reception) "aVy" = (/obj/structure/table/glass,/obj/item/hand_labeler,/obj/item/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "imnotmakingyoulubepissoff"; name = "Chemistry Privacy Shutter Control"; normaldoorcontrol = 0; pixel_x = 0; pixel_y = 26; range = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteyellow"},/area/medical/chemistry) @@ -2523,10 +2523,10 @@ "aWA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/gateway) "aWB" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/gateway) "aWC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/gateway) -"aWD" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aWD" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aWE" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command/glass{name = "External EVA Storage"; req_access_txt = "18"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) "aWF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) -"aWG" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aWG" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aWH" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) "aWI" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteyellow"},/area/medical/chemistry) "aWJ" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/fore) @@ -2555,8 +2555,8 @@ "aXg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Chapel Maintenance"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aXh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aXi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) -"aXj" = (/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/machinery/atmospherics/unary/vent_pump,/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/chapel/main) -"aXk" = (/obj/machinery/mass_driver{dir = 4; id_tag = "chapelgun"},/obj/machinery/door/window{dir = 8; name = "Mass Driver"; req_access_txt = "22"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/chapel/main) +"aXj" = (/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/machinery/atmospherics/unary/vent_pump,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/chapel/main) +"aXk" = (/obj/machinery/mass_driver{dir = 4; id_tag = "chapelgun"},/obj/machinery/door/window{dir = 8; name = "Mass Driver"; req_access_txt = "22"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/chapel/main) "aXl" = (/obj/machinery/door/poddoor{id_tag = "chapelgun"; name = "Chapel Launcher Door"; protected = 0},/obj/structure/fans/tiny,/turf/simulated/floor/plating,/area/chapel/main) "aXm" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/arrival/station) "aXn" = (/obj/structure/shuttle/engine/propulsion{dir = 4; icon_state = "burst_r"},/turf/space,/area/shuttle/arrival/station) @@ -2596,10 +2596,10 @@ "aXV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/gateway) "aXW" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots{pixel_y = -5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) "aXX" = (/obj/structure/table,/obj/item/paper/pamphlet,/turf/simulated/floor/plasteel,/area/gateway) -"aXY" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aXY" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aXZ" = (/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"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) "aYa" = (/obj/structure/sign/biohazard{pixel_x = 32},/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/plasteel,/area/gateway) -"aYb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/table/reinforced,/obj/item/book/manual/evaguide,/obj/item/stack/tape_roll,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aYb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/table/reinforced,/obj/item/book/manual/evaguide,/obj/item/stack/tape_roll,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aYc" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "aYd" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/bar) "aYe" = (/obj/structure/disposalpipe/segment{dir = 4},/mob/living/carbon/human/monkey/punpun,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/bar) @@ -2613,7 +2613,7 @@ "aYm" = (/obj/structure/rack,/obj/item/storage/box/seccarts{pixel_x = 3; pixel_y = 2},/obj/item/storage/box/handcuffs,/obj/item/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/obj/item/storage/box/handcuffs,/obj/effect/decal/warning_stripes/red/hollow,/obj/item/storage/box/teargas{pixel_x = -3; pixel_y = -3},/obj/machinery/light{dir = 8},/obj/machinery/light_switch{pixel_x = -22; pixel_y = 9},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/armoury) "aYn" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aYo" = (/obj/machinery/requests_console{department = "Morgue"; departmentType = 5; name = "Morgue Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/camera{c_tag = "Medbay Coroner"; network = list("SS13")},/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"aYp" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/computer/card/minor/rd,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) +"aYp" = (/obj/item/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = -28},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aYq" = (/obj/structure/closet/wardrobe/coroner,/obj/item/reagent_containers/glass/bottle/reagent/formaldehyde,/obj/item/reagent_containers/dropper,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "aYr" = (/obj/item/radio/intercom{pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "aYs" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) @@ -2671,8 +2671,8 @@ "aZs" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel,/area/gateway) "aZt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/gateway) "aZu" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel,/area/gateway) -"aZv" = (/obj/item/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aZw" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = 28},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aZv" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = 28},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) +"aZw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aZx" = (/obj/machinery/door/airlock/public/glass{name = "Central Access"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "aZy" = (/obj/structure/stool,/turf/simulated/floor/plasteel,/area/gateway) "aZz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) @@ -2692,7 +2692,7 @@ "aZN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aZO" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/twohanded/required/kirbyplants,/obj/structure/sign/bobross{pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/captain) "aZP" = (/obj/effect/spawner/window/reinforced,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"aZQ" = (/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/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) +"aZQ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "aZR" = (/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/bar) "aZS" = (/obj/machinery/cryopod/robot,/turf/simulated/floor/plasteel,/area/assembly/chargebay) "aZT" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) @@ -2871,10 +2871,10 @@ "bdk" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor/plasteel,/area/storage/primary) "bdl" = (/obj/item/clothing/suit/space/eva/clown,/obj/item/clothing/head/helmet/space/eva/clown,/obj/structure/rack{dir = 8; layer = 2.9},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) "bdm" = (/obj/item/clothing/suit/space/eva/mime,/obj/item/clothing/head/helmet/space/eva/mime,/obj/structure/rack{dir = 8; layer = 2.9},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) -"bdn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) +"bdn" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "bdo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/camera{c_tag = "EVA Sout-West"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "bdp" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) -"bdq" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) +"bdq" = (/obj/machinery/light{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor,/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/hallway/primary/port) "bdr" = (/obj/machinery/light{dir = 4},/obj/effect/decal/warning_stripes/southwest,/obj/structure/closet/secure_closet/exile,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel,/area/gateway) "bds" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/camera{c_tag = "EVA South-East"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "bdt" = (/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Central Hallway North"; dir = 2; network = list("SS13")},/obj/machinery/alarm{pixel_y = 23},/obj/item/flag/nt,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/hallway/primary/central/north) @@ -3021,7 +3021,7 @@ "bge" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/arrival/station) "bgf" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "bgg" = (/obj/machinery/light/small,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main) -"bgh" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry) +"bgh" = (/obj/machinery/camera{c_tag = "Port Hallway 2"; dir = 2},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/primary/port) "bgi" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/escapepodbay) "bgj" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/snacks/chips,/obj/item/reagent_containers/food/drinks/cans/cola,/turf/simulated/floor/carpet,/area/hallway/secondary/entry) "bgk" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/item/tank/emergency_oxygen,/obj/item/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/machinery/atmospherics/unary/vent_pump,/obj/effect/decal/warning_stripes/yellow/hollow,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/escapepodbay) @@ -3040,15 +3040,15 @@ "bgx" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/hallway/primary/central/nw) "bgy" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bgz" = (/turf/simulated/floor/plasteel,/area/hallway/primary/port) -"bgA" = (/obj/machinery/light{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 8},/area/hallway/primary/port) -"bgB" = (/obj/machinery/camera{c_tag = "Port Hallway 2"; dir = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/primary/port) -"bgC" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/primary/port) +"bgA" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/primary/port) +"bgB" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/primary/port) +"bgC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/primary/port) "bgD" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/port) -"bgE" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/primary/port) +"bgE" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/hallway/primary/port) "bgF" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/port) "bgG" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) -"bgH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/primary/port) -"bgI" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/hallway/primary/port) +"bgH" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/radio/intercom{dir = 0; name = "station intercom (General)"; pixel_x = -28},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"bgI" = (/obj/item/radio/beacon,/obj/machinery/camera{c_tag = "Arrivals South"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "bgJ" = (/obj/machinery/light{dir = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel,/area/hallway/primary/port) "bgK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/hallway/primary/port) "bgL" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 30},/turf/simulated/floor/plasteel,/area/hallway/primary/central/nw) @@ -3121,7 +3121,7 @@ "bia" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "bib" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Escape Pod Bay"},/turf/simulated/floor/plasteel,/area/escapepodbay) "bic" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape) -"bid" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/radio/intercom{dir = 0; name = "station intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry) +"bid" = (/obj/machinery/vending/snack,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "bie" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "bif" = (/turf/simulated/floor/plasteel{desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of a meteor and a spaceman. The spaceman is laughing. The meteor is exploding."; dir = 4; icon_state = "plaque"; name = "Comemmorative Plaque"},/area/hallway/secondary/entry) "big" = (/turf/simulated/wall,/area/escapepodbay) @@ -3214,11 +3214,11 @@ "bjP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/hallway/primary/port) "bjQ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/hallway/secondary/entry) "bjR" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"bjS" = (/obj/item/radio/beacon,/obj/machinery/camera{c_tag = "Arrivals South"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) -"bjT" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry) -"bjU" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry) -"bjV" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) -"bjW" = (/obj/machinery/camera{c_tag = "Arrivals Center"; dir = 4; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry) +"bjS" = (/obj/structure/closet/emcloset,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"bjT" = (/obj/structure/closet/emcloset,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"bjU" = (/obj/machinery/camera{c_tag = "Arrivals Center"; dir = 4; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = -24},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"bjV" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"bjW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "bjX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = -25},/obj/structure/closet/wardrobe/pjs,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutral"},/area/crew_quarters/fitness) "bjY" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/port) "bjZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/hallway/primary/port) @@ -3298,13 +3298,13 @@ "blv" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape) "blw" = (/obj/structure/sign/poster/official/random{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "blx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) -"bly" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry) +"bly" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "blz" = (/obj/effect/decal/warning_stripes/east,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "blA" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) -"blB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry) +"blB" = (/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/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "blC" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) "blD" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "16"},/turf/simulated/floor/plating,/area/shuttle/escape) -"blE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) +"blE" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "blF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "blG" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) "blH" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/crew_quarters/locker) @@ -3370,10 +3370,10 @@ "bmP" = (/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "bmQ" = (/obj/machinery/door/airlock/security/glass{name = "Escape Shuttle Cell"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/shuttle/escape) "bmR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main) -"bmS" = (/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/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) +"bmS" = (/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "bmT" = (/obj/machinery/light/small,/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/radio/intercom/locked/confessional{pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "bmU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/chapel/main) -"bmV" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) +"bmV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "bmW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bmX" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor4,/area/shuttle/escape) "bmY" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor4,/area/shuttle/escape) @@ -3381,11 +3381,11 @@ "bna" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "bnb" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "8"},/turf/simulated/floor/plating,/area/shuttle/escape) "bnc" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) -"bnd" = (/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry) -"bne" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 8},/area/hallway/secondary/entry) -"bnf" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) -"bng" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry) -"bnh" = (/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/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) +"bnd" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"bne" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"bnf" = (/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/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"bng" = (/obj/item/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/obj/machinery/hologram/holopad,/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/crew_quarters/locker) +"bnh" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "bni" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "bnj" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutralcorner"; dir = 4},/area/hallway/secondary/entry) "bnk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) @@ -3814,11 +3814,11 @@ "bvr" = (/obj/machinery/atmospherics/binary/valve,/turf/simulated/floor/plating,/area/maintenance/port) "bvs" = (/turf/simulated/wall,/area/crew_quarters/locker/locker_toilet) "bvt" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/crew_quarters/locker) -"bvu" = (/obj/item/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 2},/area/crew_quarters/locker) +"bvu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "bvv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/crew_quarters/locker) -"bvw" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/crew_quarters/locker) +"bvw" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "bvx" = (/obj/structure/closet/secure_closet/personal,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) -"bvy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/crew_quarters/locker) +"bvy" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/tank/air{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/port) "bvz" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/turf/simulated/floor/plating,/area/maintenance/port) "bvA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/port) "bvB" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/maintenance/port) @@ -3882,11 +3882,11 @@ "bwH" = (/obj/structure/closet/crate,/turf/simulated/shuttle/floor,/area/shuttle/transport) "bwI" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport) "bwJ" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/light/spot,/turf/simulated/shuttle/floor,/area/shuttle/transport) -"bwK" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry) +"bwK" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4; initialize_directions = 11; level = 2},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating,/area/maintenance/port) "bwL" = (/obj/machinery/door/airlock/public/glass{name = "Vacant Office"},/turf/simulated/floor/wood,/area/security/vacantoffice) "bwM" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/wood,/area/security/vacantoffice) -"bwN" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/tank/air{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/port) -"bwO" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4; initialize_directions = 11; level = 2},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/maintenance/port) +"bwN" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/crew_quarters/locker) +"bwO" = (/obj/structure/closet/emcloset,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "bwP" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bwQ" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bwR" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) @@ -3897,7 +3897,7 @@ "bwW" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/crew_quarters/locker) "bwX" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/crew_quarters/locker) "bwY" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable,/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/plasteel,/area/crew_quarters/locker) -"bwZ" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/crew_quarters/locker) +"bwZ" = (/obj/machinery/atmospherics/unary/tank/air{dir = 4},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/port) "bxa" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/port) "bxb" = (/turf/simulated/wall,/area/quartermaster/storage) "bxc" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Warehouse Maintenance"; req_access_txt = "31"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/port) @@ -3954,14 +3954,14 @@ "byb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "byc" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "byd" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/transport) -"bye" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry) +"bye" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating,/area/maintenance/port) "byf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "byg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table/wood,/turf/simulated/floor/wood,/area/security/vacantoffice) "byh" = (/obj/item/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/turf/simulated/floor/wood,/area/security/vacantoffice) "byi" = (/obj/structure/table/wood,/obj/machinery/firealarm{dir = 2; pixel_y = -24},/turf/simulated/floor/wood,/area/security/vacantoffice) "byj" = (/obj/machinery/camera{c_tag = "Vacant Office"; dir = 1},/obj/structure/table/wood,/obj/item/folder/blue,/turf/simulated/floor/wood,/area/security/vacantoffice) -"byk" = (/obj/machinery/atmospherics/unary/tank/air{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/port) -"byl" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/port) +"byk" = (/obj/structure/stool,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/quartermaster/office) +"byl" = (/obj/machinery/conveyor_switch/oneway{id = "packageSort2"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/quartermaster/office) "bym" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/crew_quarters/locker/locker_toilet) "byn" = (/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "byo" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) @@ -3973,10 +3973,10 @@ "byu" = (/obj/machinery/hologram/holopad,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) "byv" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) "byw" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/apc_electronics,/obj/item/stock_parts/cell{maxcharge = 2000},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"byx" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/quartermaster/office) +"byx" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/quartermaster/office) "byy" = (/obj/machinery/conveyor{dir = 1; id = "packageSort1"},/turf/simulated/floor/plating,/area/quartermaster/office) -"byz" = (/obj/machinery/conveyor_switch/oneway{id = "packageSort2"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/quartermaster/office) -"byA" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/quartermaster/office) +"byz" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/office) +"byA" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "byB" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/quartermaster/office) "byC" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/quartermaster/office) "byD" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/central/west) @@ -4034,7 +4034,7 @@ "bzD" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) "bzE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/quartermaster/office) "bzF" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/quartermaster/office) -"bzG" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/quartermaster/office) +"bzG" = (/obj/machinery/conveyor_switch/oneway{id = "packageSort1"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/office) "bzH" = (/obj/structure/table,/obj/machinery/requests_console{department = "Cargo Bay"; name = "Cargo Requests Console"; departmentType = 2; pixel_y = 30},/obj/item/stack/tape_roll,/obj/item/destTagger{pixel_x = 4; pixel_y = 3},/obj/item/destTagger{pixel_x = 4; pixel_y = 3},/turf/simulated/floor/plasteel{icon_state = "arrival"; dir = 1},/area/quartermaster/office) "bzI" = (/obj/item/storage/box,/obj/structure/table,/obj/item/storage/box,/obj/item/storage/box,/obj/item/radio/intercom{broadcasting = 0; listening = 1; name = "station intercom (General)"; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "arrival"; dir = 1},/area/quartermaster/office) "bzJ" = (/turf/simulated/wall,/area/quartermaster/office) @@ -4112,13 +4112,13 @@ "bBd" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bBe" = (/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/crew_quarters/locker) "bBf" = (/obj/machinery/camera{c_tag = "Locker Room South"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) -"bBg" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/crew_quarters/locker) +"bBg" = (/obj/structure/closet/emcloset,/obj/machinery/camera{c_tag = "Arrivals Auxiliary Docking South"; dir = 4; network = list("SS13")},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "bBh" = (/obj/item/cigbutt,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) "bBi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) "bBj" = (/obj/item/radio/intercom{dir = 0; name = "station intercom (General)"; pixel_x = -28},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) "bBk" = (/obj/structure/closet/crate/freezer,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) "bBl" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"bBm" = (/obj/machinery/conveyor_switch/oneway{id = "packageSort1"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/quartermaster/office) +"bBm" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/assembly/chargebay) "bBn" = (/turf/simulated/floor/plasteel,/area/quartermaster/office) "bBo" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/quartermaster/office) "bBp" = (/obj/structure/table,/obj/machinery/light{dir = 4},/obj/machinery/recharger,/turf/simulated/floor/plasteel{icon_state = "arrival"; dir = 4},/area/quartermaster/office) @@ -4365,9 +4365,9 @@ "bFW" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) "bFX" = (/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "bFY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/assembly/chargebay) -"bFZ" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/assembly/chargebay) +"bFZ" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/assembly/chargebay) "bGa" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) -"bGb" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/assembly/chargebay) +"bGb" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bGc" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) "bGd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/reception) "bGe" = (/obj/structure/table,/obj/item/storage/box/syringes,/obj/item/storage/box/syringes{pixel_x = 4; pixel_y = 4},/obj/machinery/camera{c_tag = "Medbay Lobby Reception"; dir = 4; network = list("SS13")},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0; step_size = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/reception) @@ -4376,9 +4376,9 @@ "bGh" = (/obj/machinery/light,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "bGi" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception) "bGj" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"bGk" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/rack,/obj/item/circuitboard/aicore{pixel_x = -2; pixel_y = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) -"bGl" = (/obj/structure/rack,/obj/item/aicard,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) -"bGm" = (/obj/structure/rack,/obj/item/taperecorder{pixel_x = -3},/obj/item/paicard{pixel_x = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/crew_quarters/hor) +"bGk" = (/obj/machinery/camera{c_tag = "Research Access"; dir = 2; network = list("Research","SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"bGl" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"bGm" = (/obj/machinery/light/small{dir = 1},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "bGn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "bGo" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 4},/turf/space,/area/space) "bGp" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 6},/turf/simulated/wall/r_wall,/area/maintenance/asmaint2) @@ -4409,7 +4409,7 @@ "bGO" = (/obj/machinery/sleeper{tag = "icon-sleeper (NORTH)"; icon_state = "sleeper"; dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) "bGP" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "burst_r"},/turf/space,/area/shuttle/specops) "bGQ" = (/obj/machinery/mineral/stacking_unit_console{machinedir = 8},/turf/simulated/wall,/area/maintenance/disposal) -"bGR" = (/obj/structure/closet/emcloset,/obj/machinery/camera{c_tag = "Arrivals Auxiliary Docking South"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry) +"bGR" = (/obj/structure/closet/firecloset,/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bGS" = (/obj/effect/decal/cleanable/generic,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/port) "bGT" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/port) "bGU" = (/obj/structure/reagent_dispensers/watertank,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) @@ -4476,7 +4476,7 @@ "bId" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) "bIe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) "bIf" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel,/area/assembly/chargebay) -"bIg" = (/obj/machinery/door_control{dir = 2; id = "mechbay"; name = "Mech Bay Door Control"; pixel_x = 6; pixel_y = 24; req_access_txt = "29"},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/assembly/chargebay) +"bIg" = (/obj/machinery/door_control{dir = 2; id = "mechbay"; name = "Mech Bay Door Control"; pixel_x = 6; pixel_y = 24; req_access_txt = "29"},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/assembly/chargebay) "bIh" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "Medical Reception"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/paramedic) "bIi" = (/turf/simulated/wall,/area/medical/research{name = "Research Division"}) "bIj" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/closet/wardrobe/medic_white,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/paramedic) @@ -4587,8 +4587,8 @@ "bKk" = (/obj/machinery/ai_status_display{pixel_x = 32; pixel_y = 0},/obj/structure/table,/obj/item/flash/synthetic,/obj/item/flash/synthetic,/obj/item/flash/synthetic,/obj/item/flash/synthetic,/obj/item/flash/synthetic,/obj/item/book/manual/sop_science{pixel_y = -14},/obj/item/flash/synthetic,/obj/item/flash/synthetic,/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) "bKl" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bKm" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/escape) -"bKn" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/research{name = "Research Division"}) -"bKo" = (/obj/machinery/camera{c_tag = "Research Access"; dir = 2; network = list("Research","SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/medical/research{name = "Research Division"}) +"bKn" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"bKo" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/machinery/r_n_d/destructive_analyzer,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/toxins/lab) "bKp" = (/obj/machinery/door/airlock/external{id_tag = "admin_home"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bKq" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "bKr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) @@ -4597,8 +4597,8 @@ "bKu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bKv" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/port) "bKw" = (/turf/simulated/wall/r_wall,/area/maintenance/port) -"bKx" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry) -"bKy" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry) +"bKx" = (/obj/machinery/r_n_d/protolathe,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/toxins/lab) +"bKy" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/lab) "bKz" = (/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bKA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bKB" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/storage) @@ -4675,19 +4675,19 @@ "bLU" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) "bLV" = (/obj/item/storage/firstaid/o2{pixel_x = 5; pixel_y = 5},/obj/item/storage/firstaid/o2,/obj/structure/table,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/item/radio/intercom{broadcasting = 0; listening = 1; name = "station intercom (General)"; pixel_y = 25},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/biostorage) "bLW" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) -"bLX" = (/obj/structure/closet/firecloset,/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/research{name = "Research Division"}) -"bLY" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/research{name = "Research Division"}) -"bLZ" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/machinery/r_n_d/destructive_analyzer,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/lab) -"bMa" = (/obj/machinery/r_n_d/protolathe,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/lab) -"bMb" = (/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) -"bMc" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) -"bMd" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) +"bLX" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"bLY" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"bLZ" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"bMa" = (/obj/effect/landmark/start{name = "Civilian"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"bMb" = (/obj/machinery/light,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"bMc" = (/obj/machinery/hologram/holopad,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) +"bMd" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/status_display/supply_display{pixel_y = 32},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bMe" = (/obj/machinery/mass_driver{id_tag = "trash"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bMf" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/lab) +"bMf" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bMg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "bMh" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/structure/sign/poster/contraband/random{pixel_x = 32},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"bMi" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry) -"bMj" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry) +"bMi" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"bMj" = (/obj/machinery/light{dir = 8},/obj/machinery/computer/rdconsole/core,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/toxins/lab) "bMk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) "bMl" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "garbage"; name = "disposal coveyor"},/turf/simulated/floor/plating,/area/maintenance/disposal) "bMm" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable,/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/structure/closet,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/maintenance/disposal) @@ -4697,7 +4697,7 @@ "bMq" = (/obj/machinery/light{dir = 1},/obj/machinery/firealarm{pixel_y = 27},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bMr" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/shuttle/supply) "bMs" = (/obj/structure/closet/emcloset,/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 30},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"bMt" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/status_display/supply_display{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/quartermaster/storage) +"bMt" = (/obj/machinery/r_n_d/circuit_imprinter{pixel_x = 3; pixel_y = 5},/obj/item/reagent_containers/glass/beaker/sulphuric,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/toxins/lab) "bMu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bMv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bMw" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) @@ -4771,11 +4771,11 @@ "bNM" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/biostorage) "bNN" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) "bNO" = (/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) -"bNP" = (/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/toxins/lab) -"bNQ" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/research{name = "Research Division"}) -"bNR" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/research{name = "Research Division"}) -"bNS" = (/obj/machinery/light{dir = 8},/obj/machinery/computer/rdconsole/core,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/lab) -"bNT" = (/obj/machinery/r_n_d/circuit_imprinter{pixel_x = 3; pixel_y = 5},/obj/item/reagent_containers/glass/beaker/sulphuric,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/lab) +"bNP" = (/obj/effect/landmark/start{name = "Scientist"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/lab) +"bNQ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bNR" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bNS" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/quartermaster/storage) +"bNT" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bNU" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera{c_tag = "Research Research and Development Lab"; dir = 8; network = list("Research","SS13")},/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/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "bNV" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bNW" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) @@ -4788,7 +4788,7 @@ "bOd" = (/obj/machinery/door/poddoor{id_tag = "trash"; name = "disposal bay door"; protected = 0},/obj/structure/fans/tiny,/turf/simulated/floor/plating,/area/maintenance/disposal) "bOe" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/supply) "bOf" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/supply) -"bOg" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/quartermaster/storage) +"bOg" = (/obj/machinery/camera{c_tag = "Cargo Recieving Dock"; dir = 4},/obj/machinery/door_control{id = "QMLoaddoor"; layer = 4; name = "Loading Doors"; pixel_x = -24; pixel_y = -8; req_access_txt = "0"},/obj/machinery/door_control{id = "QMLoaddoor2"; layer = 4; name = "Loading Doors"; pixel_x = -24; pixel_y = 8; req_access_txt = "0"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bOh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bOi" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bOj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage) @@ -4880,7 +4880,7 @@ "bPR" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/administration) "bPS" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/office) "bPT" = (/obj/effect/spawner/window/reinforced,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bPU" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/quartermaster/storage) +"bPU" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/medical/glass{id_tag = "MedbayFoyer"; name = "Medbay Emergency Entrance"; req_access_txt = "5"},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) "bPV" = (/obj/effect/landmark/start{name = "Cargo Technician"},/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/office) "bPW" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/quartermaster/office) "bPX" = (/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/quartermaster/office) @@ -4982,7 +4982,7 @@ "bRP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/office) "bRQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/office) "bRR" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"bRS" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage) +"bRS" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/light,/obj/item/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/quartermaster/storage) "bRT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bRU" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/quartermaster/storage) "bRV" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central/sw) @@ -5062,7 +5062,7 @@ "bTr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/external{id_tag = "supply_home"; name = "Cargo Docking Hatch"; req_access_txt = "31"},/turf/simulated/floor/plating,/area/quartermaster/storage) "bTs" = (/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/quartermaster/storage) "bTt" = (/obj/machinery/door/airlock/external{id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; req_access_txt = "31"},/turf/simulated/shuttle/floor,/area/shuttle/supply) -"bTu" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/quartermaster/storage) +"bTu" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/status_display/supply_display{pixel_y = -32},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/quartermaster/storage) "bTv" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor/plasteel,/area/quartermaster/office) "bTw" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bTx" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 8; location = "QM #1"},/mob/living/simple_animal/bot/mulebot{home_destination = "QM #1"; suffix = "#1"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) @@ -5100,7 +5100,7 @@ "bUd" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 1},/area/medical/genetics) "bUe" = (/turf/simulated/floor/plasteel{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "bUf" = (/obj/machinery/door/window/southright{dir = 2; name = "Primate Pen"; req_access_txt = "9"},/turf/simulated/floor/plasteel{dir = 1},/area/medical/genetics) -"bUg" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/medical/glass{id_tag = "MedbayFoyer"; name = "Medbay Emergency Entrance"; req_access_txt = "5"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/hallway/primary/central/se) +"bUg" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/quartermaster/storage) "bUh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/warning_stripes/east,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) "bUi" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2) "bUj" = (/obj/effect/decal/warning_stripes/blue,/obj/effect/decal/warning_stripes/west,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) @@ -5136,7 +5136,7 @@ "bUN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bUO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/noticeboard{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bUP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bUQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/medical/glass{id_tag = "MedbayFoyer"; name = "Medbay Emergency Entrance"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/hallway/primary/central/se) +"bUQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/medical/glass{id_tag = "MedbayFoyer"; name = "Medbay Emergency Entrance"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) "bUR" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/effect/decal/warning_stripes/east,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) "bUS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2) "bUT" = (/obj/effect/decal/warning_stripes/blue,/obj/effect/decal/warning_stripes/west,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) @@ -5160,7 +5160,7 @@ "bVl" = (/obj/machinery/door/airlock/centcom{id_tag = "adminshuttle"; name = "Workshop"; opacity = 1; req_access_txt = "105"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "bVm" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/supply) "bVn" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/obj/machinery/door_control{id = "QMLoaddoor2"; layer = 3; name = "Loading Doors"; pixel_x = 24; pixel_y = 8; req_access_txt = "0"},/obj/machinery/door_control{id = "QMLoaddoor"; layer = 3; name = "Loading Doors"; pixel_x = 24; pixel_y = -8; req_access_txt = "0"},/turf/simulated/shuttle/floor,/area/shuttle/supply) -"bVo" = (/obj/machinery/camera{c_tag = "Cargo Recieving Dock"; dir = 4},/obj/machinery/door_control{id = "QMLoaddoor"; layer = 4; name = "Loading Doors"; pixel_x = -24; pixel_y = -8; req_access_txt = "0"},/obj/machinery/door_control{id = "QMLoaddoor2"; layer = 4; name = "Loading Doors"; pixel_x = -24; pixel_y = 8; req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/quartermaster/storage) +"bVo" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/rack,/obj/item/circuitboard/aicore{pixel_x = -2; pixel_y = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "bVp" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 8; location = "QM #2"},/mob/living/simple_animal/bot/mulebot{home_destination = "QM #2"; suffix = "#2"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) "bVq" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/office) "bVr" = (/obj/structure/table,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/folder/yellow,/obj/item/eftpos,/obj/item/book/manual/sop_supply,/turf/simulated/floor/plasteel,/area/quartermaster/office) @@ -5327,9 +5327,9 @@ "bYw" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/quartermaster/storage) "bYx" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/structure/plasticflaps/mining,/turf/simulated/shuttle/plating,/area/shuttle/supply) "bYy" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/poddoor{id_tag = "QMLoaddoor"; name = "supply dock loading door"},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bYz" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/light,/obj/item/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage) -"bYA" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/status_display/supply_display{pixel_y = -32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage) -"bYB" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage) +"bYz" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/computer/card/minor/rd,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) +"bYA" = (/obj/structure/rack,/obj/item/aicard,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) +"bYB" = (/obj/structure/lamarr,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "bYC" = (/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 8; icon_state = "loadingarea"},/area/quartermaster/storage) "bYD" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bYE" = (/obj/machinery/camera{c_tag = "Cargo Bay South"; dir = 1},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor/plasteel,/area/quartermaster/storage) @@ -5478,7 +5478,7 @@ "cbr" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Research Director"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "cbs" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "cbt" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 4; location = "Medbay"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor/plating,/area/medical/sleeper) -"cbu" = (/obj/structure/lamarr,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) +"cbu" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "cbv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cbw" = (/obj/structure/table,/obj/item/roller,/obj/item/soap/nanotrasen,/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/sleeper) "cbx" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) @@ -5570,9 +5570,9 @@ "cdf" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/hor) "cdg" = (/obj/machinery/computer/mecha,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "cdh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) -"cdi" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) +"cdi" = (/obj/structure/rack,/obj/item/taperecorder{pixel_x = -3},/obj/item/paicard{pixel_x = 4},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "cdj" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel,/area/janitor) -"cdk" = (/obj/item/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = 28},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/crew_quarters/hor) +"cdk" = (/obj/item/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = 28},/obj/structure/filingcabinet/chestdrawer,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "cdl" = (/obj/machinery/dna_scannernew/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration) "cdm" = (/obj/machinery/computer/cloning,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration) "cdn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2) @@ -5837,8 +5837,8 @@ "cim" = (/turf/simulated/shuttle/floor,/area/shuttle/mining) "cin" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/mining) "cio" = (/obj/machinery/door/window/brigdoor/westleft{color = "#d70000"; req_access_txt = "104"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) -"cip" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/quartermaster/miningdock) -"ciq" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/obj/item/ore/iron,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/quartermaster/miningdock) +"cip" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) +"ciq" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/obj/item/ore/iron,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "cir" = (/obj/effect/landmark/start{name = "Shaft Miner"},/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "cis" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "cit" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/quartermaster/miningdock) @@ -6013,10 +6013,10 @@ "clG" = (/obj/structure/table,/obj/item/storage/lockbox/mindshield,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "clH" = (/obj/machinery/camera{c_tag = "Research Toxins Test Chamber North"; network = list("Toxins","Research","SS13")},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel/airless,/area/toxins/test_area) "clI" = (/obj/structure/table,/obj/item/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/storage/box/trackimp,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) -"clJ" = (/obj/item/ore/silver,/obj/item/ore/silver,/obj/structure/closet/crate,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/quartermaster/miningdock) +"clJ" = (/obj/item/ore/silver,/obj/item/ore/silver,/obj/structure/closet/crate,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "clK" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/wall,/area/quartermaster/miningdock) "clL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) -"clM" = (/obj/machinery/camera{c_tag = "Mining Dock External"; dir = 8},/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/quartermaster/miningdock) +"clM" = (/obj/machinery/camera{c_tag = "Mining Dock External"; dir = 8},/obj/structure/closet/emcloset,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "clN" = (/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j1s"; name = "QM Office"; sortType = 3},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "clO" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "clP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/apmaint) @@ -6081,7 +6081,7 @@ "cmW" = (/obj/structure/closet/wardrobe/toxins_white,/obj/item/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_y = 25},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitepurple"},/area/toxins/mixing) "cmX" = (/obj/structure/rack,/obj/item/extinguisher,/obj/item/clothing/mask/gas,/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/mixing) "cmY" = (/obj/structure/closet/wardrobe/toxins_white,/obj/machinery/camera{c_tag = "Research Toxins Mixing West"; dir = 2; network = list("Research","SS13"); pixel_x = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/mixing) -"cmZ" = (/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) +"cmZ" = (/obj/machinery/alarm{pixel_y = 25},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cna" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 5},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cnb" = (/obj/structure/rack,/obj/structure/window/plasmareinforced{dir = 4},/obj/item/extinguisher,/obj/item/clothing/mask/gas,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitepurple"},/area/toxins/mixing) "cnc" = (/obj/structure/grille,/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/window/plasmareinforced,/obj/structure/window/plasmareinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/insulated,/obj/machinery/meter,/turf/simulated/floor/plating,/area/toxins/mixing) @@ -6250,7 +6250,7 @@ "cqj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cqk" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cql" = (/obj/structure/closet/bombcloset,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/mixing) -"cqm" = (/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhitecorner"; tag = "icon-warnwhitecorner (EAST)"},/area/toxins/mixing) +"cqm" = (/obj/effect/decal/warning_stripes/northwestcorner,/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cqn" = (/obj/structure/closet/l3closet/scientist,/obj/structure/window/plasmareinforced{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/toxins/mixing) "cqo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cqp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) @@ -6312,9 +6312,9 @@ "crt" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreencorner"},/area/medical/virology) "cru" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel{tag = "icon-whitegreen (EAST)"; icon_state = "whitegreen"; dir = 4},/area/medical/virology) "crv" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/machinery/door_control{id = "viroshutters"; name = "Privacy Shutters Control"; pixel_x = 6; pixel_y = 39},/obj/effect/landmark/start{name = "Virologist"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) -"crw" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) -"crx" = (/obj/machinery/camera{c_tag = "Virology Airlock"; network = list("SS13")},/obj/machinery/shower{pixel_y = 20},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 10; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/medical/virology) -"cry" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/virology) +"crw" = (/obj/machinery/hologram/holopad,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/launch{name = "Toxins Launch Room"}) +"crx" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) +"cry" = (/obj/machinery/camera{c_tag = "Virology Airlock"; network = list("SS13")},/obj/machinery/shower{pixel_y = 20},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 10; pixel_y = 0},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "crz" = (/obj/structure/sign/poster/contraband/smoke{pixel_x = -32},/obj/effect/spawner/random_spawners/blood_maybe,/turf/simulated/floor/plating,/area/maintenance/asmaint) "crA" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2) "crB" = (/obj/effect/decal/warning_stripes/west,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2) @@ -6355,10 +6355,10 @@ "csk" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/apmaint) "csl" = (/obj/structure/table,/obj/item/flashlight/lamp,/turf/simulated/floor/plating,/area/maintenance/apmaint) "csm" = (/obj/structure/curtain/open/shower,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/maintenance/apmaint) -"csn" = (/obj/machinery/disposal,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -30; pixel_y = 0},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/toxins/launch{name = "Toxins Launch Room"}) +"csn" = (/obj/machinery/disposal,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -30; pixel_y = 0},/obj/structure/disposalpipe/trunk,/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/toxins/launch{name = "Toxins Launch Room"}) "cso" = (/obj/machinery/light/small{dir = 1},/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/apmaint) "csp" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/apmaint) -"csq" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching the test chamber."; layer = 4; name = "Test Chamber Telescreen"; network = list("Toxins"); pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/toxins/launch{name = "Toxins Launch Room"}) +"csq" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching the test chamber."; layer = 4; name = "Test Chamber Telescreen"; network = list("Toxins"); pixel_x = 32; pixel_y = 0},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/toxins/launch{name = "Toxins Launch Room"}) "csr" = (/obj/structure/grille,/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/window/plasmareinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/launch{name = "Toxins Launch Room"}) "css" = (/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "warning"},/area/toxins/test_area) "cst" = (/turf/simulated/floor/plasteel/airless{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/toxins/test_area) @@ -6374,15 +6374,15 @@ "csD" = (/turf/simulated/wall,/area/engine/controlroom) "csE" = (/obj/machinery/camera{c_tag = "NT Representative's Office"; dir = 1; network = list("SS13")},/obj/structure/table/wood,/obj/machinery/photocopier/faxmachine/longrange{department = "NT Representative's Office"},/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/wood,/area/ntrep) "csF" = (/obj/item/flashlight,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/genetics) -"csG" = (/obj/structure/closet/firecloset,/obj/item/taperoll/engineering,/turf/simulated/floor/plasteel,/area/engine/controlroom) +"csG" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel,/area/engine/controlroom) "csH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "csI" = (/obj/structure/disposalpipe/segment,/obj/item/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/obj/machinery/camera{c_tag = "Aft Primary Hallway 1"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) "csJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/engine/controlroom) "csK" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/asmaint) "csL" = (/turf/simulated/floor/plating,/area/maintenance/asmaint) "csM" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/genetics) -"csN" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/closet/firecloset,/obj/item/taperoll/engineering,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/engine/controlroom) -"csO" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/obj/structure/closet/firecloset,/obj/item/taperoll/engineering,/turf/simulated/floor/plasteel,/area/engine/controlroom) +"csN" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/closet/firecloset,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/engine/controlroom) +"csO" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel,/area/engine/controlroom) "csP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/maintenance/genetics) "csQ" = (/obj/structure/cable,/obj/machinery/computer/monitor{name = "Grid Power Monitoring Computer"},/turf/simulated/floor/plasteel{icon_state = "caution"; dir = 5},/area/engine/controlroom) "csR" = (/obj/structure/rack{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/genetics) @@ -6398,9 +6398,9 @@ "ctb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "ctc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "ctd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) -"cte" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) +"cte" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "ctf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "viro_lab_airlock_interior"; locked = 1; name = "Virology Lab Internal Airlock"; req_access_txt = "39"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "viro_lab_airlock_control"; name = "Virology Lab Access Button"; pixel_x = -10; pixel_y = -20; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) -"ctg" = (/obj/machinery/light{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) +"ctg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "cth" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "cti" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2) "ctj" = (/obj/effect/decal/warning_stripes/northwestcorner,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{tag = "icon-whitebluecorner (WEST)"; icon_state = "whitebluecorner"; dir = 8},/area/medical/medbay2) @@ -6462,9 +6462,9 @@ "cun" = (/obj/structure/table/glass,/obj/item/storage/belt/medical,/obj/item/clothing/gloves/color/latex,/obj/item/healthanalyzer{pixel_x = 2; pixel_y = 2},/obj/item/clothing/glasses/hud/health,/obj/machinery/embedded_controller/radio/airlock/access_controller{id_tag = "viro_lab_airlock_control"; name = "Virology Lab Access Console"; pixel_x = 24; pixel_y = 0; req_one_access_txt = "39"; tag_exterior_door = "viro_lab_airlock_exterior"; tag_interior_door = "viro_lab_airlock_interior"},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "cuo" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2) "cup" = (/obj/structure/table/glass,/obj/item/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/storage/box/syringes,/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"cuq" = (/obj/item/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/obj/structure/closet/l3closet,/obj/item/clothing/mask/gas,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) -"cur" = (/obj/structure/closet/l3closet,/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) -"cus" = (/obj/structure/closet/emcloset,/obj/structure/sign/biohazard{pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) +"cuq" = (/obj/machinery/light{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) +"cur" = (/obj/item/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/obj/structure/closet/l3closet,/obj/item/clothing/mask/gas,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) +"cus" = (/obj/structure/closet/l3closet,/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "cut" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "open"; id_tag = "psychoffice"; name = "Privacy Shutters"; opacity = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/medical/psych) "cuu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Psych Office"; req_access_txt = "64"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/medical/psych) "cuv" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2) @@ -6501,7 +6501,7 @@ "cva" = (/obj/machinery/atmospherics/binary/valve{dir = 4},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cvb" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cvc" = (/obj/item/assembly/prox_sensor{pixel_x = -5; pixel_y = -5},/obj/item/assembly/prox_sensor{pixel_x = -4; pixel_y = 4},/obj/item/assembly/prox_sensor{pixel_x = 5; pixel_y = 5},/obj/structure/table,/obj/item/assembly/prox_sensor,/obj/item/assembly/prox_sensor{pixel_x = -5; pixel_y = -5},/obj/item/assembly/prox_sensor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) -"cvd" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/toxins/launch{name = "Toxins Launch Room"}) +"cvd" = (/obj/structure/closet/emcloset,/obj/structure/sign/biohazard{pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "cve" = (/obj/item/assembly/timer,/obj/item/assembly/timer{pixel_x = 6},/obj/item/assembly/timer{pixel_x = -5; pixel_y = 6},/obj/structure/table,/obj/item/assembly/timer{pixel_x = -3; pixel_y = -4},/obj/item/assembly/timer{pixel_x = 8; pixel_y = 8},/obj/item/assembly/timer,/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/light,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cvf" = (/obj/machinery/atmospherics/trinary/mixer{density = 0; dir = 8; req_access = null},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cvg" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/item/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) @@ -6789,8 +6789,8 @@ "cAC" = (/turf/simulated/floor/plasteel{icon_state = "caution"; dir = 4},/area/maintenance/asmaint) "cAD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/spawner/random_spawners/blood_maybe,/turf/simulated/floor/plating,/area/maintenance/asmaint) "cAE" = (/obj/structure/closet,/obj/item/card/id,/turf/simulated/floor/plating,/area/maintenance/genetics) -"cAF" = (/obj/item/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/obj/structure/closet/secure_closet/atmos_personal,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/atmos/control) -"cAG" = (/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/machinery/light,/obj/structure/closet/secure_closet/atmos_personal,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/atmos/control) +"cAF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/apmaint) +"cAG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/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/machinery/mecha_part_fabricator/spacepod,/obj/effect/decal/warning_stripes/yellow/hollow,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/mechanic_workshop) "cAH" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/atmos/control) "cAI" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cAJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/maintenance/asmaint) @@ -6957,7 +6957,7 @@ "cDO" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/structure/sign/poster/contraband/random{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "cDP" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/insulated,/area/maintenance/incinerator) "cDQ" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/plating,/area/maintenance/apmaint) -"cDR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/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/machinery/mecha_part_fabricator/spacepod,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/mechanic_workshop) +"cDR" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/computer/podtracker,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/mechanic_workshop) "cDS" = (/obj/machinery/light,/turf/simulated/floor/plating,/area/maintenance/consarea) "cDT" = (/obj/item/stack/rods{amount = 8},/turf/simulated/floor/plating,/area/maintenance/consarea) "cDU" = (/obj/machinery/atmospherics/binary/pump{dir = 4; on = 1},/obj/structure/sign/fire{pixel_y = -32},/turf/simulated/floor/engine/insulated,/area/maintenance/incinerator) @@ -6966,7 +6966,7 @@ "cDX" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "cDY" = (/obj/machinery/vending/assist,/turf/simulated/floor/plating,/area/storage/tech) "cDZ" = (/obj/item/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/obj/machinery/atmospherics/binary/pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"cEa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/apmaint) +"cEa" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/mechanic_workshop) "cEb" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/consarea) "cEc" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/plasteel,/area/engine/controlroom) "cEd" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 5},/obj/machinery/status_display{layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/storage/tech) @@ -7079,7 +7079,7 @@ "cGg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/camera{c_tag = "Mechanic's Workshop West"; dir = 2; network = list("SS13")},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) "cGh" = (/obj/structure/rack{dir = 1},/obj/item/extinguisher,/obj/item/storage/belt/utility,/obj/item/storage/toolbox/electrical,/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/radio{pixel_y = 6},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel,/area/engine/mechanic_workshop) "cGi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "mechpod"; name = "Mechanic's Workshop Inner Door"; opacity = 0},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) -"cGj" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/computer/podtracker,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/mechanic_workshop) +"cGj" = (/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/mechanic_workshop) "cGk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/machinery/requests_console{department = "Mechanic"; departmentType = 2; name = "Mechanic's Workshop Requests Console"; pixel_y = 30},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor/plasteel,/area/engine/mechanic_workshop) "cGl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/camera{c_tag = "Mechanic's Workshop East"; dir = 2; network = list("SS13")},/obj/machinery/space_heater,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/engine/mechanic_workshop) "cGm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/reagent_dispensers/fueltank,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/engine/mechanic_workshop) @@ -7148,9 +7148,9 @@ "cHx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) "cHy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) "cHz" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/mechanic_workshop) -"cHA" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/mechanic_workshop) +"cHA" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/item/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cHB" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "mechpod"; name = "Mechanic's Workshop Inner Door"; opacity = 0},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) -"cHC" = (/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/mechanic_workshop) +"cHC" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Xenobiology Access"; dir = 2; network = list("Research","SS13"); pixel_x = 0},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cHD" = (/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cHE" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/engine/mechanic_workshop) "cHF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering/glass{name = "Mechanic Workshop"; req_access_txt = "70"; req_one_access_txt = "0"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/mechanic_workshop) @@ -7171,6 +7171,7 @@ "cHU" = (/obj/structure/sign/securearea,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/wall,/area/engine/break_room) "cHV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/atmos/control) "cHW" = (/turf/simulated/floor/plasteel{tag = "icon-whitegreen (WEST)"; icon_state = "whitegreen"; dir = 8},/area/medical/virology/lab{name = "\improper Virology Lobby"}) +"cHX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cHY" = (/obj/machinery/computer/general_air_control{frequency = 1441; name = "Tank Monitor"; sensors = list("n2_sensor" = "Nitrogen", "o2_sensor" = "Oxygen", "co2_sensor" = "Carbon Dioxide", "tox_sensor" = "Toxins", "n2o_sensor" = "Nitrous Oxide", "waste_sensor" = "Gas Mix Tank")},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel,/area/atmos/control) "cHZ" = (/obj/machinery/kitchen_machine/grill,/turf/simulated/floor/plating,/area/maintenance/asmaint) "cIa" = (/obj/machinery/cooker/deepfryer,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -7198,9 +7199,9 @@ "cIw" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/engine/chiefs_office) "cIx" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command/glass{name = "Chief Engineer"; req_access_txt = "56"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/engine/chiefs_office) "cIy" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 0; d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/engine/chiefs_office) -"cIz" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/item/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology) -"cIA" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Xenobiology Access"; dir = 2; network = list("Research","SS13"); pixel_x = 0},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/toxins/xenobiology) -"cIB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology) +"cIz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/engine/mechanic_workshop) +"cIA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/engine/mechanic_workshop) +"cIB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/mechanic_workshop) "cIC" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/closet/firecloset,/obj/machinery/camera{c_tag = "Research Test Chamber East"; dir = 4; network = list("Research","SS13"); pixel_y = -22},/obj/structure/sign/fire{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) "cID" = (/obj/machinery/light,/obj/machinery/computer/security/telescreen{desc = "Used for watching the horrors within the test chamber."; name = "Research Monitor"; network = list("TestChamber"); pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) "cIE" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) @@ -7213,13 +7214,13 @@ "cIL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) "cIM" = (/obj/machinery/door_control{desc = "A remote control-switch for the pod doors."; id = "mechpodbayouter"; name = "Pod Door Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "70"},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) "cIN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) -"cIO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/engine/mechanic_workshop) -"cIP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/engine/mechanic_workshop) +"cIO" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) +"cIP" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cIQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/mechanic_workshop) "cIR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/mechanic_workshop) "cIS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Mechanic"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/mechanic_workshop) "cIT" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "mechpod"; name = "Mechanic's Workshop Inner Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) -"cIU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/engine/mechanic_workshop) +"cIU" = (/obj/machinery/disposal,/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/trunk{dir = 8},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) "cIV" = (/obj/machinery/door/firedoor,/obj/structure/table/reinforced,/obj/machinery/door/window/westright{name = "Mechanic's Desk"; req_access = null; req_access_txt = "70"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/cell_charger,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/mechanic_workshop) "cIW" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) "cIX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) @@ -7235,9 +7236,14 @@ "cJh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/table,/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) "cJi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cJj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/engine/break_room) +"cJk" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) +"cJl" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) +"cJm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) +"cJn" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/maintenance/aft) "cJo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/engine/break_room) "cJp" = (/obj/machinery/computer/atmoscontrol,/turf/simulated/floor/plasteel,/area/atmos/control) "cJq" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/asmaint) +"cJr" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen"; req_access_txt = "55"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) "cJs" = (/turf/simulated/floor/wood{tag = "icon-wood-broken6"; icon_state = "wood-broken6"},/area/maintenance/asmaint) "cJt" = (/turf/simulated/floor/carpet,/area/maintenance/asmaint) "cJu" = (/obj/effect/spawner/random_spawners/blood_maybe,/turf/simulated/floor/carpet,/area/maintenance/asmaint) @@ -7255,10 +7261,10 @@ "cJG" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/asmaint) "cJH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) "cJI" = (/obj/machinery/light_switch{pixel_x = -27},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/engine/engineering) -"cJJ" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology) +"cJJ" = (/obj/structure/table/reinforced,/obj/machinery/door_control{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; tag = ""},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) "cJK" = (/turf/simulated/floor/engine,/area/toxins/xenobiology) "cJL" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/engine,/area/toxins/xenobiology) -"cJM" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology) +"cJM" = (/obj/structure/sign/atmosplaque{pixel_x = 0; pixel_y = -32},/obj/structure/closet/secure_closet/atmos_personal,/obj/machinery/light_switch{pixel_x = -25},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/atmos/control) "cJN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cJO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "RnDChem"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research/glass{name = "Test Chamber"; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab) "cJP" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/toxins/misc_lab) @@ -7274,6 +7280,7 @@ "cJZ" = (/turf/simulated/wall,/area/hallway/primary/aft) "cKa" = (/obj/machinery/door/airlock/maintenance{name = "Mechanic Workshop Maintenance"; req_access = null; req_access_txt = "70"},/turf/simulated/floor/plating,/area/maintenance/aft) "cKb" = (/turf/simulated/wall,/area/assembly/assembly_line) +"cKc" = (/obj/item/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/obj/structure/closet/secure_closet/atmos_personal,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/atmos/control) "cKd" = (/obj/structure/table,/obj/item/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/folder/yellow,/obj/item/pen,/obj/item/book/manual/sop_engineering,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/mechanic_workshop) "cKe" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/assembly/assembly_line) "cKf" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/assembly/assembly_line) @@ -7285,9 +7292,11 @@ "cKl" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cKm" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; name = "Eng Atmospherics"; sortType = 6},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cKn" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/engine/break_room) +"cKo" = (/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/machinery/light,/obj/structure/closet/secure_closet/atmos_personal,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/atmos/control) +"cKp" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light{dir = 8},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) "cKq" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/hallway/primary/aft) "cKr" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel,/area/atmos/control) -"cKs" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable/yellow{d1 = 0; d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) +"cKs" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door_control{id = "xenobio7"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) "cKt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cKu" = (/obj/structure/table/wood/fancy,/obj/item/candle,/turf/simulated/floor/carpet,/area/maintenance/asmaint) "cKv" = (/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (EAST)"; icon_state = "wooden_chair_wings"; dir = 4},/turf/simulated/floor/wood,/area/maintenance/asmaint) @@ -7314,19 +7323,19 @@ "cKQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cKR" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cKS" = (/turf/simulated/floor/wood{tag = "icon-wood-broken3"; icon_state = "wood-broken3"},/area/maintenance/asmaint) -"cKT" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/engineering,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/engineering,/obj/machinery/power/apc{dir = 1; name = "north bump Engineering"; pixel_x = 0; pixel_y = 24; shock_proof = 1},/obj/structure/cable/yellow{d1 = 0; d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/storage/secure) +"cKT" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) "cKU" = (/obj/machinery/camera{c_tag = "Engineering West"; dir = 4; network = list("SS13")},/obj/structure/dispenser,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/engine/engineering) -"cKV" = (/obj/machinery/disposal,/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/xenobiology) +"cKV" = (/obj/machinery/door/window/southright{name = "Containment Pen"; req_access_txt = "55"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) "cKW" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "xenobio3"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology) "cKX" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cKY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/newscaster{pixel_y = 34},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cKZ" = (/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cLa" = (/obj/structure/disposalpipe/segment,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cLb" = (/turf/simulated/wall/r_wall,/area/toxins/test_chamber) -"cLc" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology) -"cLd" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology) +"cLc" = (/obj/machinery/disposal,/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/trunk{dir = 8},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) +"cLd" = (/obj/machinery/conveyor{dir = 4; id = "Skynet_heavy"},/obj/machinery/ai_status_display{pixel_y = -32},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/assembly/assembly_line) "cLe" = (/turf/simulated/floor/engine,/area/toxins/test_chamber) -"cLf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology) +"cLf" = (/obj/machinery/conveyor{dir = 4; id = "Skynet_heavy"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/assembly/assembly_line) "cLg" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/toxins/test_chamber) "cLh" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "cLi" = (/turf/simulated/wall,/area/maintenance/aft) @@ -7334,13 +7343,15 @@ "cLk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/engine{icon_state = "stage_stairs"; name = "reinforced stairs"},/area/toxins/test_chamber) "cLl" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1443; icon_state = "on"; id = "air_in"; on = 1},/turf/simulated/floor/engine,/area/toxins/test_chamber) "cLm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft) -"cLn" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/maintenance/aft) +"cLn" = (/obj/machinery/conveyor{dir = 4; id = "Skynet_heavy"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/assembly/assembly_line) "cLo" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft) "cLp" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft) +"cLq" = (/obj/structure/table,/obj/structure/sign/poster/contraband/random{pixel_x = -32},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/assembly_line) "cLr" = (/obj/machinery/door_control{id = "mechpod"; name = "Mechanic's Inner Door Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "70"},/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/sheet/mineral/plasma{amount = 30},/turf/simulated/floor/plasteel,/area/engine/mechanic_workshop) "cLs" = (/obj/machinery/light_switch{name = "light switch "; dir = 2; pixel_x = 0; pixel_y = -22},/turf/simulated/floor/plasteel{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/engine/mechanic_workshop) "cLt" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/window/reinforced{dir = 8},/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/mechanic_workshop) "cLu" = (/obj/item/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/obj/machinery/computer/rdconsole/mechanics,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/mechanic_workshop) +"cLv" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/assembly_line) "cLw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft) "cLx" = (/obj/item/camera_assembly,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "cLy" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/aft) @@ -7360,7 +7371,12 @@ "cLM" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/engine/break_room) "cLN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cLO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/engine/break_room) +"cLP" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/assembly_line) +"cLQ" = (/obj/structure/table/reinforced,/obj/machinery/door_control{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; tag = ""},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) +"cLR" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/light{dir = 8},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) +"cLS" = (/obj/machinery/computer/security/engineering,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/atmos) "cLT" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "arrival"; dir = 4},/area/hallway/primary/aft) +"cLU" = (/obj/machinery/camera{c_tag = "Xenobiology Module South"; dir = 4; network = list("Research","SS13"); pixel_x = 0},/obj/structure/table/reinforced,/obj/machinery/door_control{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/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) "cLV" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos) "cLW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/atmos/control) "cLX" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/atmos/control) @@ -7374,7 +7390,8 @@ "cMf" = (/obj/machinery/door/airlock/maintenance,/turf/simulated/floor/plating,/area/maintenance/asmaint) "cMg" = (/obj/effect/landmark{name = "revenantspawn"},/mob/living/carbon/slime,/turf/simulated/floor/engine,/area/toxins/xenobiology) "cMh" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/genetics) -"cMj" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) +"cMi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/computer/atmos_alert,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/atmos) +"cMj" = (/obj/machinery/light{dir = 8},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/item/radio/intercom{pixel_x = -28},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) "cMk" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/engine,/area/toxins/xenobiology) "cMl" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "xenobio3"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cMm" = (/mob/living/carbon/human/monkey,/turf/simulated/floor/engine,/area/toxins/test_chamber) @@ -7399,12 +7416,15 @@ "cMF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cMG" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft) "cMH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) +"cMI" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) +"cMJ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door_control{id = "xenobio4"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) "cMK" = (/obj/machinery/alarm{pixel_y = 26},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/west) "cML" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{icon_state = "arrival"; dir = 4},/area/hallway/primary/aft) "cMM" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/secure) "cMN" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/plasteel,/area/atmos/control) "cMO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/secure) "cMP" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/storage/hazardvest,/obj/item/tank/emergency_oxygen/engi,/obj/item/clothing/suit/storage/hazardvest,/obj/item/tank/emergency_oxygen/engi,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/machinery/power/apc{dir = 8; name = "west bump Engineering"; pixel_x = -24; shock_proof = 1},/turf/simulated/floor/plasteel,/area/engine/break_room) +"cMQ" = (/obj/machinery/door/window/southright{dir = 1; name = "Containment Pen"; req_access_txt = "55"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) "cMR" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/door/airlock/atmos{name = "Atmospherics"; req_access_txt = "24"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/atmos/control) "cMS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/secure) "cMT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/secure) @@ -7414,18 +7434,18 @@ "cMX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cMY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) "cMZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) -"cNa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) -"cNb" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101; on = 1; pressure_checks = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) -"cNc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/machinery/camera{c_tag = "Engineering Particle Accelerator"; dir = 2; pixel_x = 23; network = list("Singularity","SS13")},/obj/machinery/light{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) +"cNa" = (/obj/machinery/light,/obj/structure/reagent_dispensers/watertank,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) +"cNb" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/door_control{id = "xenobio5"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) +"cNc" = (/obj/machinery/light,/obj/structure/closet,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) "cNd" = (/obj/structure/barricade/wooden,/turf/simulated/floor/plating,/area/maintenance/asmaint) -"cNe" = (/obj/structure/disposalpipe/segment,/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"cNf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/plating,/area/maintenance/asmaint) +"cNe" = (/obj/structure/disposalpipe/segment,/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; max_integrity = 1e+007},/turf/simulated/floor/plating,/area/maintenance/asmaint) +"cNf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; max_integrity = 1e+007},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cNg" = (/obj/structure/sign/barsign,/turf/simulated/wall,/area/maintenance/asmaint) "cNh" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/floor/plating,/area/maintenance/genetics) "cNi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/engine/engineering) "cNj" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) "cNk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/engine/engineering) -"cNl" = (/obj/structure/table/reinforced,/obj/machinery/door_control{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; tag = ""},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/xenobiology) +"cNl" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door_control{id = "xenobio6"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) "cNm" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "xenobio3"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology) "cNn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cNo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) @@ -7461,13 +7481,13 @@ "cNS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cNT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 7},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/tank/emergency_oxygen/engi,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/tank/emergency_oxygen/engi,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/turf/simulated/floor/plasteel,/area/engine/break_room) "cNU" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel,/area/engine/break_room) -"cNV" = (/obj/structure/sign/atmosplaque{pixel_x = 0; pixel_y = -32},/obj/structure/closet/secure_closet/atmos_personal,/obj/machinery/light_switch{pixel_x = -25},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/atmos/control) +"cNV" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/smes/engineering,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/engine/engineering) "cNW" = (/obj/effect/decal/warning_stripes/east,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) -"cNX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) +"cNX" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable/yellow{d1 = 0; d2 = 8; icon_state = "0-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) "cNY" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor/plating,/area/maintenance/asmaint) "cNZ" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Singularity Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) "cOa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) -"cOb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) +"cOb" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/smes/engineering,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering) "cOc" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/engine/engineering) "cOd" = (/obj/effect/decal/warning_stripes/west,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) "cOe" = (/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{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/engine/engineering) @@ -7476,16 +7496,16 @@ "cOh" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) "cOi" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) "cOj" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"cOk" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) +"cOk" = (/obj/machinery/camera{c_tag = "Atmospherics East"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/binary/valve/digital{color = ""; dir = 4; name = "Plasma Outlet Valve"},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/atmos) "cOl" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cOm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cOn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cOo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cOp" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) -"cOq" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door_control{id = "xenobio7"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology) -"cOr" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/xenobiology) +"cOq" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/engineering,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/engineering,/obj/machinery/power/apc{dir = 1; name = "north bump Engineering"; pixel_x = 0; pixel_y = 24; shock_proof = 1},/obj/structure/cable/yellow{d1 = 0; d2 = 2; icon_state = "0-2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/storage/secure) +"cOr" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/storage/secure) "cOs" = (/obj/machinery/atmospherics/unary/vent_scrubber,/turf/simulated/floor/engine,/area/toxins/test_chamber) -"cOt" = (/obj/machinery/door/window/southright{name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology) +"cOt" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/engineering,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/engineering,/obj/machinery/alarm{pixel_x = 0; pixel_y = 24},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/storage/secure) "cOu" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/engine,/area/toxins/test_chamber) "cOv" = (/obj/machinery/light{dir = 8},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/item/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_y = -28},/turf/simulated/floor/engine,/area/toxins/test_chamber) "cOw" = (/obj/effect/spawner/window/reinforced,/turf/simulated/wall,/area/maintenance/aft) @@ -7524,12 +7544,12 @@ "cPd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/asmaint) "cPe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/spawner/random_spawners/grille_often,/turf/simulated/floor/plating,/area/maintenance/genetics) "cPf" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/genetics) -"cPg" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "engineering_west_airlock"; name = "interior access button"; pixel_x = -20; pixel_y = -20; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) +"cPg" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/smes/engineering,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/engine/engineering) "cPh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"cPi" = (/obj/item/clothing/glasses/meson,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) +"cPi" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "tox_in"; name = "Toxin Supply Control"; output_tag = "tox_out"; sensors = list("tox_sensor" = "Tank")},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/atmos) "cPj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) -"cPk" = (/obj/machinery/door_control{id = "Singularity"; name = "Singularity Blast Doors"; pixel_x = 25; pixel_y = 0; req_access_txt = "10"},/obj/effect/decal/warning_stripes/northeastcorner,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) -"cPl" = (/obj/machinery/disposal,/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) +"cPk" = (/obj/machinery/floodlight,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/storage/secure) +"cPl" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/machinery/hologram/holopad,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/engine/engineering) "cPm" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "xenobio2"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology) "cPn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cPo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) @@ -7547,9 +7567,9 @@ "cPA" = (/obj/structure/table/reinforced,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor/engine,/area/toxins/test_chamber) "cPB" = (/obj/effect/spawner/lootdrop/maintenance,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "cPC" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/assembly/assembly_line) -"cPD" = (/obj/machinery/conveyor{dir = 4; id = "Skynet_heavy"},/obj/machinery/ai_status_display{pixel_y = -32},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/assembly/assembly_line) -"cPE" = (/obj/machinery/conveyor{dir = 4; id = "Skynet_heavy"},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/assembly/assembly_line) -"cPF" = (/obj/machinery/conveyor{dir = 4; id = "Skynet_heavy"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/assembly/assembly_line) +"cPD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) +"cPE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101; on = 1; pressure_checks = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) +"cPF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/engine/engineering) "cPG" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/assembly/assembly_line) "cPH" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Assembly Line East"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "cPI" = (/obj/structure/table,/obj/item/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) @@ -7566,20 +7586,20 @@ "cPT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/atmos) "cPU" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/atmos) "cPV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/obj/structure/table,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/storage/toolbox/mechanical,/obj/item/t_scanner,/turf/simulated/floor/plasteel,/area/engine/break_room) -"cPW" = (/obj/structure/stool,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) -"cPX" = (/obj/machinery/door_control{id = "Singularity"; name = "Singularity Blast Doors"; pixel_x = -25; pixel_y = 0; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) +"cPW" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/machinery/camera{c_tag = "Engineering Particle Accelerator"; dir = 2; pixel_x = 23; network = list("Singularity","SS13")},/obj/machinery/light{dir = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) +"cPX" = (/obj/machinery/camera{c_tag = "Engineering SMES"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) "cPY" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/vending/cigarette,/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel,/area/engine/break_room) "cPZ" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/atmos/distribution) "cQa" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellowcorner"},/turf/simulated/floor/plasteel{tag = "icon-siding8 (NORTH)"; icon_state = "siding8"; dir = 1},/area/atmos) "cQb" = (/obj/machinery/particle_accelerator/control_box,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/engine/engineering) -"cQc" = (/obj/machinery/door_control{id = "Singularity"; name = "Singularity Blast Doors"; pixel_x = -25; pixel_y = 0; req_access_txt = "10"},/obj/effect/decal/warning_stripes/northwestcorner,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) +"cQc" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet/firecloset,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/engine/engineering) "cQd" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/pipedispenser,/turf/simulated/floor/plasteel,/area/atmos) -"cQe" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) +"cQe" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 4; level = 2},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/atmos) "cQf" = (/obj/machinery/light{dir = 1},/obj/machinery/meter{frequency = 1443; id = "wloop_atm_meter"; name = "Waste Loop"},/obj/machinery/light_switch{pixel_y = 27},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 8},/turf/simulated/floor/plasteel,/area/atmos/distribution) "cQg" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/turf/simulated/floor/plasteel,/area/atmos/distribution) "cQh" = (/obj/machinery/meter{frequency = 1443; id = "dloop_atm_meter"; name = "Distribution Loop"},/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/turf/simulated/floor/plasteel,/area/atmos/distribution) "cQi" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10; initialize_directions = 10; level = 2},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel,/area/atmos/distribution) -"cQj" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "engineering_east_airlock"; name = "interior access button"; pixel_x = -20; pixel_y = -20; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/engine/engineering) +"cQj" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/storage/secure) "cQk" = (/turf/simulated/wall/r_wall,/area/medical/virology) "cQl" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/asmaint) "cQm" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4; level = 2},/turf/simulated/floor/plating,/area/atmos/distribution) @@ -7601,10 +7621,11 @@ "cQC" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "cQD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/aft) "cQE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/hallway/primary/aft) -"cQF" = (/obj/structure/table,/obj/structure/sign/poster/contraband/random{pixel_x = -32},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/assembly/assembly_line) -"cQG" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/assembly/assembly_line) -"cQH" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/assembly/assembly_line) +"cQF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering) +"cQG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) +"cQH" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) "cQI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft) +"cQJ" = (/obj/machinery/field/generator,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/storage/secure) "cQK" = (/obj/structure/sign/securearea,/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/equipmentstorage) "cQL" = (/obj/machinery/light{dir = 8},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/warning_stripes/blue/hollow,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/atmos) "cQM" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/warning_stripes/blue/hollow,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/atmos) @@ -7615,6 +7636,7 @@ "cQR" = (/obj/machinery/door/airlock/maintenance,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cQS" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/equipmentstorage) "cQT" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/atmos/distribution) +"cQU" = (/obj/machinery/light_switch{pixel_x = 27},/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101; on = 1; pressure_checks = 1},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating,/area/storage/secure) "cQV" = (/turf/simulated/floor/plasteel,/turf/simulated/floor/plasteel{tag = "icon-siding8 (NORTH)"; icon_state = "siding8"; dir = 1},/area/atmos) "cQW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plating,/area/maintenance/genetics) "cQX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/maintenance/genetics) @@ -7626,7 +7648,7 @@ "cRd" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Mix to Gas Turbine"},/turf/simulated/floor/plasteel,/area/atmos/distribution) "cRe" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk3"; icon_state = "catwalk3"},/area/space) "cRf" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Singularity Blast Doors"; opacity = 0},/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/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering) -"cRg" = (/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/crowbar,/obj/machinery/light_switch{pixel_x = -27},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) +"cRg" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) "cRh" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "engineering_east_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering) "cRi" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) "cRj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/spawner/random_spawners/grille_often,/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -7637,12 +7659,12 @@ "cRo" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering) "cRp" = (/obj/machinery/power/rad_collector{anchored = 1},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/engine/engineering) "cRq" = (/obj/machinery/power/rad_collector{anchored = 1},/obj/item/tank/plasma,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/engine/engineering) -"cRr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) +"cRr" = (/obj/machinery/light,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) "cRs" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering) "cRt" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cRu" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cRv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) -"cRw" = (/obj/structure/table/reinforced,/obj/machinery/door_control{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; tag = ""},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) +"cRw" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "engineering_west_airlock"; name = "interior access button"; pixel_x = -20; pixel_y = -20; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) "cRx" = (/obj/machinery/processor{name = "Slime Processor"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cRy" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 1},/turf/simulated/floor/plating/airless,/area/toxins/test_chamber) "cRz" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/portsolar) @@ -7691,11 +7713,11 @@ "cSq" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4; level = 2},/obj/machinery/atmospherics/pipe/simple/visible/cyan{level = 2},/turf/simulated/floor/plating,/area/atmos/distribution) "cSr" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/turf/simulated/floor/plasteel{dir = 5; icon_state = "green"},/area/atmos/distribution) "cSs" = (/obj/machinery/camera{c_tag = "Atmospherics Waste Tank"; network = list("SS13")},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/atmos) -"cSt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/engine/engineering) +"cSt" = (/obj/item/clothing/glasses/meson,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) "cSu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "waste_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/atmos) -"cSv" = (/obj/item/wirecutters,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) +"cSv" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) "cSw" = (/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/atmos) -"cSx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) +"cSx" = (/obj/machinery/door_control{id = "Singularity"; name = "Singularity Blast Doors"; pixel_x = 25; pixel_y = 0; req_access_txt = "10"},/obj/effect/decal/warning_stripes/northeastcorner,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) "cSy" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "engineering_east_pump"; tag_exterior_door = "engineering_east_outer"; frequency = 1379; id_tag = "engineering_east_airlock"; tag_interior_door = "engineering_east_inner"; pixel_x = -25; req_access_txt = "10;13"; tag_chamber_sensor = "engineering_east_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "engineering_east_sensor"; pixel_x = -25; pixel_y = 12},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering) "cSz" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "engineering_west_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering) "cSA" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering) @@ -7711,7 +7733,7 @@ "cSK" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 8},/turf/simulated/floor/plating/airless,/area/toxins/xenobiology) "cSL" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "cSM" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/space) -"cSN" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) +"cSN" = (/obj/structure/stool,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) "cSO" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/stack/sheet/mineral/plasma{pixel_x = -2; pixel_y = -2},/obj/item/stack/sheet/mineral/plasma,/obj/item/stack/sheet/mineral/plasma{pixel_x = 2; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cSP" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cSQ" = (/turf/simulated/floor/plating/airless,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk3"; icon_state = "catwalk3"},/area/solar/port) @@ -7803,6 +7825,7 @@ "cUy" = (/obj/machinery/computer/atmos_alert,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cUz" = (/obj/effect/landmark{name = "lightsout"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) "cUA" = (/obj/structure/table,/obj/machinery/requests_console{department = "Engineering"; departmentType = 3; name = "Engineering Requests Console"; pixel_x = 30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) +"cUB" = (/obj/machinery/door_control{id = "Singularity"; name = "Singularity Blast Doors"; pixel_x = -25; pixel_y = 0; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering) "cUC" = (/turf/simulated/floor/plasteel,/turf/simulated/floor/plasteel{tag = "icon-siding1 (NORTH)"; icon_state = "siding1"; dir = 1},/area/atmos) "cUD" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/engine/engineering) "cUE" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/engine/engineering) @@ -7829,6 +7852,7 @@ "cUZ" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cVa" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/engine/engineering) "cVb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; name = "Engineering Main"; sortType = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) +"cVc" = (/obj/machinery/door_control{id = "Singularity"; name = "Singularity Blast Doors"; pixel_x = 25; pixel_y = 0; req_access_txt = "10"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) "cVd" = (/turf/simulated/floor/plating,/area/maintenance/portsolar) "cVe" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "xenobio1"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cVf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) @@ -7841,28 +7865,50 @@ "cVm" = (/obj/machinery/camera{c_tag = "Aft Port Solar Control"; dir = 1; network = list("SS13")},/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "south bump Engineering"; pixel_y = -24; shock_proof = 1},/turf/simulated/floor/plating,/area/maintenance/portsolar) "cVn" = (/obj/structure/closet/wardrobe/black,/obj/machinery/camera{c_tag = "Aft Port Solar Access"; dir = 1; network = list("SS13")},/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/maintenance/aft) "cVo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft) +"cVp" = (/obj/machinery/door_control{id = "Singularity"; name = "Singularity Blast Doors"; pixel_x = -25; pixel_y = 0; req_access_txt = "10"},/obj/effect/decal/warning_stripes/northwestcorner,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) +"cVq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) +"cVr" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/engine/engineering) "cVs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) "cVt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) +"cVu" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "engineering_east_airlock"; name = "interior access button"; pixel_x = -20; pixel_y = -20; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) +"cVv" = (/obj/machinery/light/small{dir = 4},/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/storage/secure) +"cVw" = (/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/crowbar,/obj/machinery/light_switch{pixel_x = -27},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering) "cVx" = (/obj/structure/table,/obj/item/airlock_electronics,/obj/item/airlock_electronics,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/stack/tape_roll,/obj/item/stack/tape_roll,/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) +"cVy" = (/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/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) +"cVz" = (/obj/machinery/pipedispenser,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/storage/secure) +"cVA" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/closet/crate/internals,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/storage/secure) +"cVB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering) +"cVC" = (/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/airlock_electronics,/obj/item/airlock_electronics,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/storage/secure) "cVD" = (/obj/structure/table,/obj/item/radio{pixel_y = 6},/obj/item/radio{pixel_x = 6; pixel_y = 4},/obj/item/radio{pixel_x = -6; pixel_y = 4},/obj/item/radio,/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) "cVE" = (/turf/simulated/wall,/area/atmos/distribution) "cVF" = (/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/item/stack/rods{amount = 50},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) -"cVG" = (/obj/machinery/computer/security/engineering,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/atmos) +"cVG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/engine/engineering) "cVH" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/extinguisher,/obj/item/extinguisher,/obj/item/extinguisher,/obj/item/extinguisher,/obj/item/extinguisher,/obj/item/extinguisher,/turf/simulated/floor/plasteel{icon_state = "red"},/area/atmos) "cVI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/atmos) "cVJ" = (/obj/machinery/door_control{id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = 24; pixel_y = 4; req_access_txt = "24"},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plasteel,/area/atmos) "cVK" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/plating,/area/atmos/distribution) "cVL" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 6; initialize_directions = 6; level = 2},/obj/structure/sign/nosmoking_2,/turf/simulated/floor/plating,/area/atmos/distribution) "cVM" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/plating,/area/atmos/distribution) +"cVN" = (/obj/item/wirecutters,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) "cVO" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/turf/simulated/floor/plating,/area/atmos/distribution) "cVP" = (/obj/machinery/atmospherics/pipe/simple/visible/green{level = 2},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; level = 2},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/atmos/distribution) "cVQ" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/atmos/distribution) "cVR" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 4; initialize_directions = 11; level = 2},/turf/simulated/floor/plating,/area/atmos/distribution) +"cVS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) +"cVT" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/engine/engineering) "cVU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) "cVV" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=HOP2"; location = "Stbd"},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) +"cVW" = (/obj/machinery/shieldgen,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/storage/secure) +"cVX" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/circuitboard/solar_control,/obj/item/tracker_electronics,/obj/item/paper/solar,/obj/machinery/light/small{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/storage/secure) +"cVY" = (/obj/machinery/the_singularitygen{anchored = 0},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/storage/secure) +"cVZ" = (/obj/machinery/power/port_gen/pacman,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/storage/secure) +"cWa" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/storage/secure) +"cWb" = (/obj/machinery/power/emitter,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/storage/secure) +"cWc" = (/obj/machinery/light/small{dir = 4},/obj/structure/closet/firecloset,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/storage/secure) +"cWd" = (/obj/structure/closet/firecloset,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/storage/secure) +"cWe" = (/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/engine/engineering) "cWf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cWg" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) -"cWh" = (/obj/machinery/camera{c_tag = "Xenobiology Module South"; dir = 4; network = list("Research","SS13"); pixel_x = 0},/obj/structure/table/reinforced,/obj/machinery/door_control{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/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) "cWi" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "xenobio1"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology) "cWj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cWk" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/maintenance/aft) @@ -7894,7 +7940,6 @@ "cWN" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/atmos) "cWO" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 4},/turf/simulated/floor/plasteel,/area/atmos) "cWP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) -"cWQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/computer/atmos_alert,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/atmos) "cWR" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{level = 2},/obj/machinery/meter,/turf/simulated/floor/plasteel,/area/atmos) "cWS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/atmos) "cWT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/binary/volume_pump/on{dir = 4; name = "External to Filter"},/turf/simulated/floor/plasteel,/area/atmos) @@ -7912,7 +7957,6 @@ "cXm" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/xenobiology) "cXq" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/central/west) "cXr" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"cXs" = (/obj/machinery/light{dir = 8},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/item/radio/intercom{pixel_x = -28},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) "cXt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cXu" = (/turf/simulated/wall,/area/maintenance/engi_shuttle) "cXv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) @@ -7953,15 +7997,8 @@ "cYi" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint) "cYj" = (/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/asmaint) "cYl" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"cYq" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/xenobiology) -"cYr" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door_control{id = "xenobio4"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/xenobiology) -"cYs" = (/obj/machinery/door/window/southright{dir = 1; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/xenobiology) "cYt" = (/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cYu" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) -"cYv" = (/obj/machinery/light,/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/xenobiology) -"cYw" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/door_control{id = "xenobio5"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/xenobiology) -"cYx" = (/obj/machinery/light,/obj/structure/closet,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/xenobiology) -"cYy" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door_control{id = "xenobio6"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/xenobiology) "cYz" = (/obj/docking_port/stationary{dir = 2; dwidth = 2; height = 18; id = "skipjack_se"; name = "southeast of SS13"; width = 19},/turf/space,/area/space) "cYA" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cYB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) @@ -8020,7 +8057,6 @@ "cZR" = (/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel,/area/engine/engineering) "cZS" = (/turf/simulated/wall/r_wall,/area/atmos) "cZU" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 8},/turf/simulated/floor/plasteel,/area/atmos) -"cZV" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/smes/engineering,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/engine/engineering) "cZW" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/atmospherics/binary/valve,/turf/simulated/floor/plasteel,/area/atmos) "cZX" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/turf/simulated/floor/plasteel,/area/atmos) "cZY" = (/obj/machinery/atmospherics/binary/valve,/turf/simulated/floor/plasteel,/area/atmos) @@ -8057,14 +8093,12 @@ "daP" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plasteel,/area/atmos) "daQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/hallway/primary/central/west) "daR" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/door/airlock/engineering/glass{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor/plasteel,/area/engine/engineering) -"daS" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/smes/engineering,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) "daT" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/atmos,/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/atmos) "daU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/atmos) "daV" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 8; icon_state = "freezer_0"; tag = ""},/turf/simulated/floor/plasteel,/area/atmos) "daW" = (/obj/machinery/atmospherics/pipe/simple/visible/green{level = 2},/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Plasma to Pure"; on = 0},/turf/simulated/floor/plasteel,/area/atmos) "daX" = (/obj/structure/closet/crate,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/asmaint) "daY" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8; level = 2},/turf/simulated/floor/plasteel,/area/atmos) -"daZ" = (/obj/machinery/camera{c_tag = "Atmospherics East"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/binary/valve/digital{color = ""; dir = 4; name = "Plasma Outlet Valve"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/atmos) "dba" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4; level = 2},/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction,/turf/space,/area/space) "dbb" = (/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos) "dbc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "tox_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos) @@ -8080,8 +8114,6 @@ "dbs" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/plasteel,/area/engine/engineering) "dbt" = (/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "Engineering Secure Storage North"; dir = 4; network = list("SS13")},/obj/machinery/floodlight,/turf/simulated/floor/plating,/area/storage/secure) "dbu" = (/obj/machinery/power/emitter{anchored = 1; dir = 4; state = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/camera/emp_proof{c_tag = "Engineering Singularity West"; dir = 4; network = list("Singularity","SS13")},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"dbv" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/storage/secure) -"dbw" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/engineering,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/engineering,/obj/machinery/alarm{pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/storage/secure) "dby" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Singularity Shutters"; opacity = 0},/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/engine/engineering) "dbz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/engine/engineering) "dbA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/engine/engineering) @@ -8091,14 +8123,12 @@ "dbE" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Singularity Shutters"; opacity = 0},/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engine/engineering) "dbF" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Singularity Shutters"; opacity = 0},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/engine/engineering) "dbG" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Singularity Shutters"; opacity = 0},/obj/effect/spawner/window/reinforced,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plating,/area/engine/engineering) -"dbH" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/smes/engineering,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/engine/engineering) "dbI" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/space,/area/space) "dbJ" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/wall/r_wall,/area/engine/engineering) "dbK" = (/obj/machinery/camera{c_tag = "Atmospherics West"; dir = 4; network = list("SS13")},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/atmos) "dbL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/reagent_dispensers/watertank/high,/turf/simulated/floor/plasteel,/area/atmos) "dbM" = (/obj/effect/spawner/window,/turf/simulated/floor/plating,/area/maintenance/asmaint) "dbN" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4; initialize_directions = 11; level = 2},/turf/simulated/floor/plasteel,/area/atmos) -"dbO" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "tox_in"; name = "Toxin Supply Control"; output_tag = "tox_out"; sensors = list("tox_sensor" = "Tank")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/atmos) "dbQ" = (/obj/machinery/power/emitter{anchored = 1; dir = 8; state = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/camera/emp_proof{c_tag = "Engineering Singularity East"; dir = 8; network = list("Singularity","SS13")},/turf/simulated/floor/plating/airless,/area/engine/engineering) "dbR" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/engine,/area/toxins/xenobiology) "dbS" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "tox_sensor"},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos) @@ -8107,7 +8137,6 @@ "dbV" = (/obj/machinery/computer/shuttle/engineering,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "dbW" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos) "dbY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel,/area/hallway/primary/central/west) -"dcc" = (/obj/machinery/floodlight,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure) "dcd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/table,/obj/machinery/cell_charger,/obj/machinery/camera{c_tag = "Engineering Foyer"; network = list("SS13")},/obj/structure/noticeboard{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "caution"; dir = 5},/area/engine/break_room) "dcf" = (/obj/machinery/power/tesla_coil{anchored = 1},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating/airless,/area/space) "dcg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/engine/break_room) @@ -8117,15 +8146,10 @@ "dcl" = (/obj/structure/closet/radiation,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/engine/engineering) "dcm" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/engine/engineering) "dcn" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/engine/engineering) -"dco" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/engine/engineering) -"dcr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/engine/engineering) "dcs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/fungus,/turf/simulated/wall/r_wall,/area/engine/engineering) "dct" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel,/area/atmos) "dcv" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plasteel,/area/atmos) "dcw" = (/obj/structure/closet/radiation,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/light/small{dir = 8},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel{dir = 9; icon_state = "yellow"},/area/engine/engineering) -"dcx" = (/obj/machinery/camera{c_tag = "Engineering SMES"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/engine/engineering) -"dcy" = (/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/engine/engineering) -"dcz" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/engine/engineering) "dcA" = (/turf/simulated/floor/plating{icon_state = "platingdmg3"},/area/maintenance/asmaint) "dcB" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/obj/effect/landmark/start{name = "Life Support Specialist"},/turf/simulated/floor/plasteel,/area/engine/break_room) "dcC" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/medical/virology) @@ -8140,16 +8164,13 @@ "dcO" = (/obj/machinery/atmospherics/trinary/filter{density = 0; dir = 1; name = "Gas filter (Toxins tank)"; on = 1},/turf/simulated/floor/plasteel,/area/atmos) "dcP" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/secure) "dcQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/secure) -"dcR" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 4; level = 2},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/atmos) "dcS" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 4; level = 2},/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/space,/area/space) "dcT" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 8; frequency = 1441; icon_state = "on"; id = "tox_in"; on = 1; pixel_y = 1},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos) "dcU" = (/obj/machinery/door/airlock/external{id_tag = "engineering_home"; name = "Engineering Dock Airlock"; req_access_txt = "0"; req_one_access_txt = "10;24"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) -"dcV" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure) "dcW" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{id_tag = "Secure Storage"; name = "Secure Storage Blast Doors"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/secure) "dcX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel,/area/engine/engineering) "ddb" = (/obj/structure/particle_accelerator/end_cap,/turf/simulated/floor/plating,/area/engine/engineering) "ddm" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor/plasteel,/area/atmos) -"ddp" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) "ddr" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/obj/machinery/door/airlock/external{name = "Engineering Escape Pod"; req_access = null; req_access_txt = "10"},/turf/simulated/floor/plating,/area/engine/engineering) "dds" = (/obj/machinery/portable_atmospherics/pump,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/atmos) "ddt" = (/obj/machinery/atmospherics/binary/pump{dir = 0; name = "Port to Filter"; on = 0},/turf/simulated/floor/plasteel,/area/atmos) @@ -8164,17 +8185,10 @@ "ddJ" = (/obj/structure/table,/obj/item/paper_bin,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "ddK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "ddL" = (/obj/structure/lattice,/obj/docking_port/stationary{dir = 8; dwidth = 3; height = 5; id = "sit_engshuttle"; name = "Cyberiad Eng Shuttle"; width = 11},/turf/space,/area/space) -"ddM" = (/obj/machinery/field/generator,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure) -"ddN" = (/obj/machinery/light_switch{pixel_x = 27},/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)"; icon_state = "warnplate"; dir = 9},/area/storage/secure) -"ddO" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) -"ddP" = (/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) "ddS" = (/obj/structure/particle_accelerator/fuel_chamber,/turf/simulated/floor/plating,/area/engine/engineering) -"ddU" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) -"ddY" = (/obj/machinery/door_control{id = "Singularity"; name = "Singularity Blast Doors"; pixel_x = 25; pixel_y = 0; req_access_txt = "10"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) "ddZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering) "dea" = (/obj/machinery/space_heater,/turf/simulated/floor/plasteel,/area/atmos) "dec" = (/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor/plasteel,/area/atmos) -"def" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/engine/engineering) "deh" = (/obj/machinery/space_heater,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/atmos) "dei" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 8; icon_state = "freezer_0"; tag = ""},/turf/simulated/floor/plasteel,/area/atmos) "dej" = (/obj/machinery/atmospherics/pipe/simple/visible/green{level = 2},/obj/machinery/atmospherics/binary/pump{dir = 8; name = "CO2 to Pure"; on = 0},/turf/simulated/floor/plasteel,/area/atmos) @@ -8185,7 +8199,6 @@ "der" = (/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/asmaint) "des" = (/obj/machinery/light/small{dir = 8},/obj/machinery/field/generator,/turf/simulated/floor/plating,/area/storage/secure) "deu" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/engine/engineering) -"dez" = (/obj/machinery/light/small{dir = 4},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/storage/secure) "deA" = (/obj/structure/stool,/turf/simulated/floor/plasteel,/area/engine/engineering) "deB" = (/obj/structure/particle_accelerator/power_box,/turf/simulated/floor/plating,/area/engine/engineering) "deC" = (/obj/item/screwdriver,/turf/simulated/floor/plasteel,/area/engine/engineering) @@ -8194,7 +8207,6 @@ "deI" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/turf/simulated/floor/plasteel,/area/atmos) "deJ" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plasteel,/area/atmos) "deK" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/simulated/floor/plasteel,/area/atmos) -"deM" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) "deO" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/obj/machinery/power/apc{dir = 8; name = "west bump Engineering"; pixel_x = -24; shock_proof = 1},/turf/simulated/floor/plasteel,/area/atmos) "deP" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plasteel,/area/atmos) "deQ" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 6; initialize_directions = 6; level = 2},/turf/simulated/floor/plasteel,/area/atmos) @@ -8216,12 +8228,10 @@ "dfi" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "dfk" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/engine/engineering) "dfo" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/engine/engineering) -"dfp" = (/obj/machinery/pipedispenser,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure) "dfq" = (/obj/structure/particle_accelerator/particle_emitter/left,/turf/simulated/floor/plating,/area/engine/engineering) "dfr" = (/obj/structure/particle_accelerator/particle_emitter/center,/turf/simulated/floor/plating,/area/engine/engineering) "dfs" = (/obj/structure/particle_accelerator/particle_emitter/right,/turf/simulated/floor/plating,/area/engine/engineering) "dft" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/engine/engineering) -"dfu" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/closet/crate/internals,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/storage/secure) "dfv" = (/obj/machinery/light/small{dir = 4},/obj/structure/closet/walllocker/emerglocker/north,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/engine/engineering) "dfw" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "engineering_west_pump"},/obj/structure/closet/walllocker/emerglocker/north,/turf/simulated/floor/plating,/area/engine/engineering) "dfx" = (/obj/structure/table,/obj/item/wrench,/obj/item/t_scanner,/obj/item/storage/belt/utility,/obj/item/storage/belt/utility,/turf/simulated/floor/plasteel,/area/atmos) @@ -8248,10 +8258,8 @@ "dfY" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/constructionsite) "dfZ" = (/obj/machinery/door/airlock/external{id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/docking_port/mobile{dir = 2; dwidth = 3; height = 5; id = "engineering"; name = "engineering shuttle"; rebuildable = 1; roundstart_move = "engineering_away"; width = 7},/obj/docking_port/stationary{dir = 2; dwidth = 3; height = 5; id = "engineering_home"; name = "engineering dock"; width = 7},/turf/simulated/floor/plating,/area/shuttle/constructionsite) "dga" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/shuttle/constructionsite) -"dgb" = (/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/airlock_electronics,/obj/item/airlock_electronics,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/storage/secure) "dgg" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{level = 2},/turf/simulated/floor/plasteel,/area/atmos) "dgh" = (/obj/machinery/atmospherics/unary/portables_connector,/turf/simulated/floor/plasteel,/area/atmos) -"dgi" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/engine/engineering) "dgj" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel,/area/atmos) "dgk" = (/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/asmaint) "dgl" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "engineering_east_pump"},/turf/simulated/floor/plating,/area/engine/engineering) @@ -8273,8 +8281,6 @@ "dgD" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/area/shuttle/constructionsite) "dgE" = (/obj/machinery/power/grounding_rod{anchored = 1},/turf/simulated/floor/plating/airless,/area/space) "dgF" = (/turf/simulated/shuttle/wall{icon_state = "swall1"; dir = 2},/area/shuttle/constructionsite) -"dgG" = (/obj/machinery/shieldgen,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure) -"dgH" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/circuitboard/solar_control,/obj/item/tracker_electronics,/obj/item/paper/solar,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/storage/secure) "dgJ" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating/airless,/area/space) "dgM" = (/obj/item/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/floor/plasteel,/area/atmos) "dgN" = (/obj/machinery/atmospherics/trinary/filter{density = 0; dir = 4; filter_type = 2; name = "Gas filter (N2 tank)"; on = 1},/turf/simulated/floor/plasteel,/area/atmos) @@ -8300,8 +8306,6 @@ "dhi" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk9"; icon_state = "catwalk9"},/area/space) "dhj" = (/obj/machinery/door/airlock/atmos{name = "Turbine Access"; req_access_txt = "12;24"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/turbine) "dhk" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/obj/item/toy/minimeteor,/obj/item/poster/random_contraband,/turf/simulated/floor/plating,/area/maintenance/asmaint) -"dhl" = (/obj/machinery/the_singularitygen{anchored = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure) -"dhm" = (/obj/machinery/power/port_gen/pacman,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/storage/secure) "dho" = (/obj/machinery/camera/emp_proof{c_tag = "Engineering Singularity North-West"; dir = 2; network = list("Singularity","SS13"); pixel_x = 20; pixel_y = 0},/obj/machinery/power/grounding_rod{anchored = 1},/turf/simulated/floor/plating/airless,/area/engine/engineering) "dhs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering) "dhv" = (/obj/machinery/camera/emp_proof{c_tag = "Engineering Singularity North-East"; dir = 2; network = list("Singularity","SS13")},/obj/machinery/power/grounding_rod{anchored = 1},/turf/simulated/floor/plating/airless,/area/engine/engineering) @@ -8339,7 +8343,6 @@ "did" = (/obj/structure/stool,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "die" = (/obj/machinery/door/airlock/maintenance,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "dif" = (/turf/simulated/shuttle/wall{tag = "icon-swall2"; icon_state = "swall2"; dir = 2},/area/shuttle/constructionsite) -"dig" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/storage/secure) "dij" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 9},/turf/simulated/floor/plating,/area/atmos) "dik" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 6},/turf/simulated/floor/plating,/area/atmos) "dil" = (/obj/machinery/atmospherics/pipe/manifold4w/visible,/obj/machinery/meter,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) @@ -8389,10 +8392,8 @@ "djd" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/structure/lattice,/turf/space,/area/space) "dje" = (/obj/machinery/atmospherics/unary/tank/toxins{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "djf" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"djg" = (/obj/machinery/power/emitter,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure) "djh" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/mob/living/simple_animal/mouse,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "dji" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"djj" = (/obj/machinery/light/small{dir = 4},/obj/structure/closet/firecloset,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/storage/secure) "djk" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister,/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "djl" = (/obj/structure/table,/obj/item/cartridge/medical,/turf/simulated/floor/plating,/area/maintenance/asmaint) "djm" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -8408,7 +8409,6 @@ "djA" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; tag = ""},/obj/structure/window/reinforced/tinted{dir = 1},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/obj/structure/window/reinforced/tinted,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "djB" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/grille,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/atmos) "djC" = (/obj/machinery/camera{c_tag = "Aft Starboard Solar Access"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"djD" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/storage/secure) "djE" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/space,/area/space) "djF" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/structure/sign/nosmoking_2{pixel_x = -32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "djG" = (/obj/machinery/atmospherics/binary/valve,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) @@ -8934,47 +8934,47 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaNraNtaNsaMsaNuaNyaNvaNwaNxaHSaNzaNCaNAaMyaNBaHSaGnaGnaGnaGnaGnaGnaGnaLsaGnaNDafOaNGaGnaNEaNFaNHaHSaNBaGnaNAaNIaKeaKgaIIaaaaaaaaaaaaaaaaNKaNJaNMaNLaNOaNNaNPaMAaiWaLAaJraNQaIVaLAaJsaIlaJuaJtaJwaLTaHgaNWaJzaJxaKiaJAaKlaKjaKoaJiaFyaFFaFGaEjaFMaLPaOjaKpaLNaLPaLUaMVaMNaMNaMNaMVaMVaMVaMVaMVaMTaOoaMUaMUaOsaMVaSQaMVaMVaRRaMVaPvaRVaKQaKQaKQaKQaKQaRVaTbaTdaTcaXiaTeaOCaGYaMzaOFaGYaOEaOGaOGaOGaOGaOHaOGaOIaGYaGYaGYaGYaGYaGYaGYaGYaMzaGVaMqaOKaOLaOLaMqaOMaOJaONaMqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaOPaOQaORaMsaOPaOQaORaNwaKaaHSaOSaHSaHSaHSaHSaHSaGnaOTaOOaOVaOUaOWaGnaLsaGnafOaOXaNDaOYaPaaOZaGnaPcaGnaGnaGnaGnaPcaLsaIIaaaaHQaHQaHQaHQaPdaNJaPeaPbaPfaPhaPiaPjaMAaLAaLAaLAaLAaLAaJsaIlaIlaIlaIlaIlaIlaKzaKAaIoaIoaIoaIoaIoaIoaIoaPraFFaPwaEjaFMaLPaOnaKpaLNaLPaKuaMNaMWaMWaMXaMNaMVaMVaMYaMVaNaaMZaNdaNdaNeaMVaSQaMVaMVaMVaMVaKCaODaKQaKQaKQaKQaKQaODaPLaPMaKOaGYaVJaMzaMzaMzaHPaHPaGXaGXaGXaMzaMzaMzaGXaPNaPKaGXaMzaMzaGXaMzaMzaGXaGXaPPaPOaPRaPQaPTaPSaPUaOKaPWaMqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPVaSdaSdaLdaMsaPZaQaaLdaMsaPZaQaaLdaGnaLkaGnaGnaGnaGnaGnaHSaGnaHSaQbaPXaHSaHSaGnaLsaGnaPYaabaPYaGnaJYaOZaGnaQeaQcaGnaNAaKaaGnaLsaMAaMAaQgaQgaQgaQgaQgaQgaQgaQgaQgaPiaPiaPjaQhaQiaQjaQkaQlaQdaKEaKDaKFaKFaKFaKFaKFaKGaKIaKHaKFaKFaKFaKKaKKaKLaLzaKNaLBaEjaHBaLPaQzaKpaLNaLPaKuaMNaMWaNRaNSaMNaMVaMVaMVaMVaNTaMZaNdaNdaNeaMVaSQaMVaMVaMVaMVaKCaODaKQaKQaKQaKQaKQaODaQHaPMaKOaGYaVJaGYaQBaMzaQCaHOaQLaQJaHbaGXaOFaHbaGXaQKaGYaGXaQMaGYaGXaQOaQNaQPaOGaQQaOGaQSaQRaQUaQTaQVaQYaQWaMqaMraMrafOafOaMraMraMraMraabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaRbaoOaSbaSaaQZaQZaRaaQZaQZaQZaRdaRcaReaReaReaReaRfaGnaHSaGnaRhaRgaRiaHSaRjaPcaLsaGnaGnaGnaGnaGnaGnaPcaGnaHSaRiaLkaHSaHSaHSaRkaRmaRlaRnaRnaRnaRnaRoaRnaRnaRpaRqaRlaRsaRraRraRraRraRraRraRraRtaRwaRwaRwaRwaRxaRwaRwaLDaRwaRwaRxaRwaRwaRwaRwaRzaLFaLKaLGaLLaLPaRDaLMaLWaLOaNVaMNaNYaNXaOeaMNaMVaMVaMVaMVaMTaRMaOpaOpaRGaMVaVLaVKaMVaMVaMVaPvaRVaKQaKQaKQaKQaKQaRVaVMaYwaVObfQaZzbafbafbafbafbbYaOGaOGaOGaOGaOGaOGaOGaKSaGYaGYaGYaGYaMnaGYaGYaMkaGYaRTaRSaRXaRWaRYaOLaOLaOLaRZaMqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZPaSdaSdaZQaSfaScaSgaSiaSjaShaSkaSjaSmaSlaSjaSjaSnaGnaHSaGnaSoaHSaHSaSpaSqaGnaNIaKgaHSaHSaHSaHSaHSaHSaPcaSsaHSaGnaNxaNxaGnaSraMAaSuaSwaSvaSvaSvaSxaSvaSvaSvaSyaSuaSzaSAaSAaSAaSAaSAaSAaSAaPiaRwaSBaSCaSEaSDaMdaMcaMDaMBaMEaSJaSLaSCaSMaRwaSNaFFaSOaEjaMFaLPaSRaMGaSTaSSaOqaWHaOyaOraOraPkaPBbhiaPCbgsbhhbhibhibhibhibhibhjaMVaMVaMVaMVaThaODaKQaKQaKQaKQaKQaKOaKOaKOaKOaHbaMzaMzaIEaGXaGXbBOaMzaGXaTgaMzaGXaIEaGXaMkaQIaMzaGXaIEaGXaGYaQIaMkaGYaTiaMqaTjaQRaTlaTkaTmaQRaTnaMqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaMsaSdaRUaSdaToaSfaSfaTpaSdaRUaSdaTqaTraTsaTtaGnaHSaPcaPcaGnaGnaGnaTuaTuaTuaIfaTuaTuaTuaTuaTuaHSaGnaGnaGnaGnaGnaGnaGnaSraKbaStaaaaabaaaaabaaaaabaaaaabaaaaSuaSzaSAaTwaTvaTyaTxaTAaSAaPiaRwaTzaTzaTCaTBaTEaTDaTFaTDaMKaTGaTIaTzaTzaRwatcaFFaTJaEjaMFaLPaOnaKpaLNaLPaPDbhkbhtbhpaPFaPEaQAbhzbitbisbiTbiubjkbjcbjXbjMbkKbkIaQEaOvaOwaKOaODaKQaKQaKQaKQaKQaKOaTXaUaaMzaGXaMzaLcaGYaGXaLcbBOaGXaTZaGYaGXaUbaGYaMzaUdaUcaGXaUeaGYaMzaIEaIEaMkaIEaUfaMqaUgaQRaUiaUhaUiaQRaUjaMqaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaLdaLdaSdaOQaSdaUkaUoaUmaUlaSdaOQaSdaSdaLdaUnaUpaGnaHSaHSaHSaHSaHSaHSaTuaUuaUvaUqaUxaUsaUzaUuaTuaUwaUAaUyaUyaUyaUyaUyaUyaUBaNxaStaabaUEaUEaUEaUEaUEaUEaUEaabaSuaSzaSAaUFaUCaUHaUDaUFaSAaPiaRwaUJaUJaUJaUGaULaSCaUIaSCaULaUKaUJaUJaUJaRwaSNaFFaUMaEjaMFaLPaOjaKpaLNaLPaQFbuMaUQaUQaUQaUQaUQaUQaUQaNZaUQaUSaUSaUSaUSaUSaOaaGXaPGaPIaPIbJUaODaKQaKQaKQaKQaKQaKOaURaUaaMzaUTaGXaGYaGYaGXbJVbLCaMzaGYaGYaGXaGYaGYaMzaMkaGVaGXaGYaGYaMzaUWaGYaMkaGYaUUaUYaUYaMqaMqaMqaMqaMqaMqaMqaMraMraMraMraMraabaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaRbaoOaSbaMcaMdaMdaRaaMdaMdaMdaRdaRcaReaReaReaReaRfaGnaHSaGnaRhaRgaRiaHSaRjaPcaLsaGnaGnaGnaGnaGnaGnaPcaGnaHSaRiaLkaHSaHSaHSaRkaRmaRlaRnaRnaRnaRnaRoaRnaRnaRpaRqaRlaRsaRraRraRraRraRraRraRraRtaRwaRwaRwaRwaRxaRwaRwaLDaRwaRwaRxaRwaRwaRwaRwaRzaLFaLKaLGaLLaLPaRDaLMaLWaLOaNVaMNaNYaNXaOeaMNaMVaMVaMVaMVaMTaRMaOpaOpaRGaMVaVLaVKaMVaMVaMVaPvaRVaKQaKQaKQaKQaKQaRVaVMaYwaVObfQaZzbafbafbafbafbbYaOGaOGaOGaOGaOGaOGaOGaKSaGYaGYaGYaGYaMnaGYaGYaMkaGYaRTaRSaRXaRWaRYaOLaOLaOLaRZaMqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZPaSdaSdaMBaSfaMDaMEaSiaSjaQZaSaaSjaSeaScaSjaSjaSnaGnaHSaGnaSoaHSaHSaSpaSqaGnaNIaKgaHSaHSaHSaHSaHSaHSaPcaSsaHSaGnaNxaNxaGnaSraMAaSuaSwaSvaSvaSvaSxaSvaSvaSvaSyaSuaSzaSAaSAaSAaSAaSAaSAaSAaPiaRwaSBaSCaSEaSgaSkaShaSmaSlaSJaSDaSLaSCaSMaRwaSNaFFaSOaEjaMFaLPaSRaMGaSTaSSaOqaWHaOyaOraOraPkaPBbhiaPCbgsbhhbhibhibhibhibhibhjaMVaMVaMVaMVaThaODaKQaKQaKQaKQaKQaKOaKOaKOaKOaHbaMzaMzaIEaGXaGXbBOaMzaGXaTgaMzaGXaIEaGXaMkaQIaMzaGXaIEaGXaGYaQIaMkaGYaTiaMqaTjaQRaTlaTkaTmaQRaTnaMqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaMsaSdaRUaSdaToaSfaSfaTpaSdaRUaSdaTqaTsaTraTtaGnaHSaPcaPcaGnaGnaGnaTuaTuaTuaIfaTuaTuaTuaTuaTuaHSaGnaGnaGnaGnaGnaGnaGnaSraKbaStaaaaabaaaaabaaaaabaaaaabaaaaSuaSzaSAaTwaTvaTyaTxaTAaSAaPiaRwaTzaTzaTCaTBaTEaTDaTFaTDaMKaTGaTIaTzaTzaRwatcaFFaTJaEjaMFaLPaOnaKpaLNaLPaPDbhkbhtbhpaPFaPEaQAbhzbitbisbiTbiubjkbjcbjXbjMbkKbkIaQEaOvaOwaKOaODaKQaKQaKQaKQaKQaKOaTXaUaaMzaGXaMzaLcaGYaGXaLcbBOaGXaTZaGYaGXaUbaGYaMzaUdaUcaGXaUeaGYaMzaIEaIEaMkaIEaUfaMqaUgaQRaUiaUhaUiaQRaUjaMqaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaLdaLdaSdaOQaSdaUlaUkaUnaUmaSdaOQaSdaSdaLdaUoaUpaGnaHSaHSaHSaHSaHSaHSaTuaUuaUvaUqaUxaUsaUzaUuaTuaUwaUAaUyaUyaUyaUyaUyaUyaUBaNxaStaabaUEaUEaUEaUEaUEaUEaUEaabaSuaSzaSAaUFaUCaUHaUDaUFaSAaPiaRwaUJaUJaUJaUGaULaSCaUIaSCaULaUKaUJaUJaUJaRwaSNaFFaUMaEjaMFaLPaOjaKpaLNaLPaQFbuMaUQaUQaUQaUQaUQaUQaUQaNZaUQaUSaUSaUSaUSaUSaOaaGXaPGaPIaPIbJUaODaKQaKQaKQaKQaKQaKOaURaUaaMzaUTaGXaGYaGYaGXbJVbLCaMzaGYaGYaGXaGYaGYaMzaMkaGVaGXaGYaGYaMzaUWaGYaMkaGYaUUaUYaUYaMqaMqaMqaMqaMqaMqaMqaMraMraMraMraMraabaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdaRUaSdaSdaSdaSdaSdaSdaRUaSdaUZaLdaUVaUXaVcaVcaVcaVcaVcaVcaVaaTuaUuaVeaUqaVfaVeaVeaUuaTuaVgaVbaViaViaViaViaViaViaViaViaVjaaaaUEaVkaVdaVmaVlaVnaUEaaaaSuaSzaSAaVpaVoaVraVqaUFaSAaPiaRwaVsaVsaTCaVtaVuaTDaTFaTDaVuaVvaVwaTzaTzaRwaSNaFFaSOaEjaObaLPaOdaOcaLNaLPaQGbuMaUQaVzaVAaVCaVCaUQaVBaOfaVDaUSbxyaVFaVHaUSaOgaGXaPGaPIaPHaPJaKOaKOaKOaKOaKOaKOaKOaVNbLGaMzaMzaGXaGXaMzaMzbLHaVPaMzaGXaHPaGXaGXaMzaMzaVRaVQaGXaGXaGXaQLaUWaGYaMkaGYaUUaHOaHbaOFaYPbcDaVhbcDaYPaYPaYPaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVVaVSaVXaVSaVSaVYaVZaVSaVSaVXaWaaVWaLdaToaWbaVcaWdaWcaWfaWeaWhaWgaTuaUuaVeaUqaWjaVeaVeaUuaTuaWkaWlaWiaWnaWmaWoaWqaWraWpaWtaVjaabaUEaWuaWsaWwaWvaWxaUEaabaSuaSzaSAaWzaWAaWyaWCaWBaSAaPiaRwaSBaSCaWEaWDaULaSCaWFaSCaULaWGaSLaSCaSMaRwaSNaFFaWJaEjaMFaLPaISaOhaLNaLPaRvbuUaUQaWKaVEaVEaVEaWLaOlaOkaOmaUSaWQaWPaOxaOtaPgaGXaRPaRQaRQaRIaGXaJMaGXaGYaQIaHPaLcaWUaWXaWWaWYaGXaNhaGYaQIbBOaGYaGXaaaaGXaGYaGYaGYaGYaMkaXbaXaaWZaWZaWZaWZaXcaXeaXdaXhaXiaXfaXiaXgaVTaVTaVUaXkaXjaXlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVVaWaaVSaXmaXraXsaXtaXuaXvaXwaXxaXyaXzaXpaXnaSdaToaXqaVcaXBaXAaXFaXGaXFaXCaTuaXIaVeaXDaXHaXEaXHaXJaXLaXKaXMaXQaXQaXQaXQaXQaXQaXNaXSaVjaaaaUEaXOaWsaXPaWvaXRaUEaaaaSuaSzaSAaXTaXXaXVaXUaYaaSAaPiaRwaXWaXWaTCaXYaVuaTDaXZaTDaVuaYbaTIaTzaTzaRwaYcaIraYhaEjaMFaLPaLPaLPaLPaLPaPlaRJaPnaPmaPoaUQaUQaUQaUQaUQaUQaUSaPpaZVaPqaUSaOgaGXaGXaGXaGXaGXaGXaGYaGXaGYaHPaHPaGXaGXaGXaYnaGXaGXaGXaGXaGYbBOaWVaHNaabaHNaGYaYsaYvaYuaYyaYxaYzaYEaYEaYEaYEaYFaYGaYAaYIaYJaYKaYJaYBaYJaYJaYCaXoaYOaYPaYQaYRaYSaYSaYSaYSaYSaYSaYSaYSaYSafXajcaaaaaaaaaaaaaaaaaaaaaaYDaYUaYHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXpaYMaYLaYNaXzaYZaXsaYZaXsaYZaXsaYZaXzaYVaYTaSdaToaYWaVcaYYaYXaZfaZaaZhaZbaTuaZjaUraZcaZlaZmaZnaZdaTuaZeaZgaXQaXQaXQaXQaXQaXQaXNaZraVjaabaUEaZkaZiaZpaZoaZqaUEaabaSuaSzaSAaZsaZyaZtaZAaZuaSAaPiaRwaUJaUJaUJaZvaULaSCaUIaSCaULaZwaUJaUJaUJaRwaZxaZFaZGaEjaPtaPsaPsaPsaPsaPuaPxaPvaUQaPyaPzaUQaQmaQfaQnaUQaQoaUSaZDaZVaZEaUSaQpaZKaQqaZNaZNaZKaZXaZWaZWaZWaZWaZWaQxaZYaZWbaabacbabbaebadbagbMgbaibahbajbahbalbakaGYaGXbarbambanbaubavbaobaxbaybazbapbazbaBbasbaqbatbaFbaAbawbaIbaCbaEbaDaYPbaMbaNbaObaGbaQbaRbaHbaTbaUbaVaaaaaaaaaaaaaaaaaaaaaaYDbaWbaXbaYaYHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXpaYMaYLaYNaXzaYZaXsaYZaXsaYZaXsaYZaXzaYVaYTaSdaToaYWaVcaYYaYXaZfaZaaZhaZbaTuaZjaUraZcaZlaZmaZnaZdaTuaZeaZgaXQaXQaXQaXQaXQaXQaXNaZraVjaabaUEaZkaZiaZpaZoaZqaUEaabaSuaSzaSAaZsaZyaZtaZAaZuaSAaPiaRwaUJaUJaUJaYpaULaSCaUIaSCaULaZvaUJaUJaUJaRwaZxaZFaZGaEjaPtaPsaPsaPsaPsaPuaPxaPvaUQaPyaPzaUQaQmaQfaQnaUQaQoaUSaZDaZVaZEaUSaQpaZKaQqaZNaZNaZKaZXaZWaZWaZWaZWaZWaQxaZYaZWbaabacbabbaebadbagbMgbaibahbajbahbalbakaGYaGXbarbambanbaubavbaobaxbaybazbapbazbaBbasbaqbatbaFbaAbawbaIbaCbaEbaDaYPbaMbaNbaObaGbaQbaRbaHbaTbaUbaVaaaaaaaaaaaaaaaaaaaaaaYDbaWbaXbaYaYHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaZaXsaXsaVXaXzaYZaXsaYZbbaaYZaXsaYZaXzaYVaYTaSdaTobaJaVcaVcbaKaUtbaLaUtaVcaTuaTuaTuaTubaSbaPbbhbbbaTubbjbbcbblaXQaXQbbmaXQbbebbdbbpaVjaaaaUEaUEbbqbbfbbqaUEaUEaaaaSuaSzaSAbbibbgbbkaZAbbnaSAaPiaRwaSBaSCbboaWDaULaSCaUIaSCaULaWGbbxaRwaRwaRwbbrbbzbbtbbsbbCatGatGatGbbEbbFbbvbbuaUQbbwaVEaUQbbJaUQbbKaUQbbLaQrbbBbbAbbHbbGbbUbbIaQtbbNbbQbbPbbRbbQbbQbbSbbQbbIbbTbbIaXfbbUbbIbbVbbXaSGbbZaZZbcbbcabcdbccbcfbceaXibcmbcgbcobcpbchbcibcsbcjbaybcubckbazbcwbcxbclbczbaFbcAbcBbcCbcDbcnbcFaYPbcqbcHbcHbcIbaTbaTbaTbaTbaUbaVaaaaaaaaaaaaaaaaaaaYDbaWbcJbcKbcLbaYaYHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXpbcrbcNaYNaXzaYZaXsaYZaXsaYZaXsaYZaXzaYVaYTaSdaTobcvbctbcEbcybcSbcSaSfbcGbcMbcVbcWbcXbcPbcOaVebcQaTubdbbcRbddbdebcTbdgbdhbdibcUbdkaVjaaaaabaaabcYbcZbcYaaaaabaaaaSuaSzaSAbdcbdabdjbdfbdraSAaPiaRwbdmbdlaTCbdnbdoaTDbdpaTDbdsbdqbdzaRwbdubdtbdvbdDbdxbdwbbDbdHaaaaaabbEbdIbdBbdAaUQbdCbdEaVEaVEbdNaVEaVEaVEbdOaUSbdFaUSbdQaUSaUSaQuaUSbdTbdUbdKbdJbdMbdLbdTbdPbeabebbecbebbebbebbebbdSbeebebbefbdVbdWbeibebbdXaGYbaubekbcpbelbembenbeobepbeqberbdYbazbetbeubevbewbdZbcAbcBbcCbcDbaEbedaYPbegbcHbcHbcIbaTbaTbaTbaTbaUbaVaaaaaaaaaaaaaaaaaaaYUbeAbeBbeCbeBbeDaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXpbcrbcNaYNaXzaYZaXsaYZaXsaYZaXsaYZaXzaYVaYTaSdaTobcvbctbcEbcybcSbcSaSfbcGbcMbcVbcWbcXbcPbcOaVebcQaTubdbbcRbddbdebcTbdgbdhbdibcUbdkaVjaaaaabaaabcYbcZbcYaaaaabaaaaSuaSzaSAbdcbdabdjbdfbdraSAaPiaRwbdmbdlaTCaZwbdoaTDbdpaTDbdsaZQbdzaRwbdubdtbdvbdDbdxbdwbbDbdHaaaaaabbEbdIbdBbdAaUQbdCbdEaVEaVEbdNaVEaVEaVEbdOaUSbdFaUSbdQaUSaUSaQuaUSbdTbdUbdKbdJbdMbdLbdTbdPbeabebbecbebbebbebbebbdSbeebebbefbdVbdWbeibebbdXaGYbaubekbcpbelbembenbeobepbeqberbdYbazbetbeubevbewbdZbcAbcBbcCbcDbaEbedaYPbegbcHbcHbcIbaTbaTbaTbaTbaUbaVaaaaaaaaaaaaaaaaaaaYUbeAbeBbeCbeBbeDaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabehbejaVSaXmaXzaXsbeGbesaXsaXsbexbeGaXzaXpbeyaSdaTobeEbezbeMaRKbeMbeMbeMbeMbeMbeHaSfaTubePbeQbePaTuaTubeRbeIbeRaViaViaViaVibeRbeJbeUaVjbeLbeKbeKbeNbeObeNbeKbeKbeSaSubfaaSAbeTaSAbeWbeVbfeaSAbffaRwaRwaRwaRwbfgbfhbeXbeYbeXbfhbfgaRwaRwbeZbdDbdDbdDbdDbfbbdybfnbfobfpbbEbfqbdBbfiaUQaUQaUQaUQaUQaUQaUQaUSaUSbdObfsbftbfkbfjaQvaRLaSUaRNbdTbfAbfvbfCbfwbfEbdTbfxbfybfHbfzbfHbfJbfKbfMbfBbfFbfDbfIbfGbfNbfLbebbfObfQbfPbfSbfRbelbfYbfZbeobfTbazbfVbfUbfXbfWbgfbczbczbazbazbcBbcCbcDbcnbggaYPbgabgibgbbgkbgcbgmbaTbaTbgdbaVaaaaaaaaaaaaaaaaYDbaWbgobeCbeCbeCbgpbaYaYHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabehaVSaVXaVSaVSaVYaVZaVSaVSaVXbejbgeaLdbghbeEaSdaSWaSWaSXaSWaSYaMsbgvbglaSfbgnbfcbgzbgzbgqbgrbgzbgubgzbgzbgzbgDbgzbgzbgwbgFbgAbgCbgBbgEbgCbgHbgCbgCbgCbgCbgIbgMbgJbgzbgzbgKbfcbgQbgxbgSbgLbgObgNbgTbgPbgPbgPbgPbgPbgPbgPbgVbgUbhabhbbhcbhdbhebgWbgXbfdbdDbdDbhfbgZbhgbgZbhgaSZaTfaTaaWNaUNbhqaUSbhrbhlaYeaYdaZRaZRaWMbeFbfrbflbdTbhobhubhsbhsbhwbdTbhAbhCbhBbhEbhDbhDbhFbhHbhGbfMbhIbhJbhPbhQbhRbebbdXaTgbaubhKbhTbhTbhUbhVbhTbhLbazbhXbhNbazbhObhSbczbhWbazbhZbhYbiabcDaYPaYPaYPbibbigbihbiibigbigbigbigaYSafXajcaaaaaaaaaaaabicbikbilbeCbeCbimbinbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbgyaSdaSdaSdaSdaSdaSdbgyaSdaUZaLdbidbieaSdbgtbgjbhmbhmbhvaMsbivbglbifbgGbfcbijbipbiobiqbiqbixbiwbiwbiwbizbiybiybiAbiCbiBbiqbiqbiDbiybiFbiEbiGbiGbiIbiHbiKbiJbiJbiJbiLbfcbgQbgxbgSbgSbgSbgSbiMbgSbgSbgSbgSbgSbgSbiNbiUbiVbiWbiXbiObiZbiQbiPbiRbiVbiVbiVbjdbjebjebjebiSbhqbhqbhqbirbhxbhqaUSbjabjjaZRaZRbiYaZRaWTbjmbfrbjKbdTbjobjfbjqbjhbjgbdTbjtbjibjvbjwbjxbjybebbebbjzbebbebbebbjBbjlbjBbebbdXaGYbaubjDbcpbcpbcpbjEbcpbjFbazbazbazbazbazbazbazbjnbazbcDbcDbcCbcDbjpbjIaYPbjrbjNbjLblwbgRbjubjsbjAbjRaaaaaaaaaaaaaYDbjCbjGbjCbjCbjCbjHbjCbjJbjCbjGbjCaYHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabbjQaLdaSdaOQaSdbjTbjSbjVbjUaSdaOQaSdaSdaLdbjWbeEaSdbkcbjObhmbhmbhvaMsbkdbglaSfbgGbfcbgzbjZbjYbkgbkgbkabkibkbbkgbkebkgbkfbkgbkhbjPbkgbkgbkgbkgbkgbkjbkkbkgbklbkrbknbkmbgzbgzbkpbkobksbkqbkubktbkubkvbkwbkvbkvbkvbkvbkvbkvbkybkAbkzbkzbkzbkzbkBbkzbkCbkDbkzbkzbkEbkGbkFbkFbkFbkFbkFbkFbkFbkHbhqbhqaUSbkMbkNbkPbkObkOblrblsbjmbfrbltbdTbdTbdTbdTbdTbkLbdTbkQbkRbkWbkSbfHbkYbebbhMbkTbkUblcbkVbleblfblgbebbdXaQLbaublhblibcpbljblkbcpbllbllbaubkXblabkZaYPbldblnblmbcDbcDblpbloaYPblqaYPblIdsfbjLblxbmgbmnbmmblzbjRaaaaaaaaaaaabicbmXblubmYbmYblDbeCblCblDblAblvblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaMsaSdbgyaSdaToaSfaSfaTpaSdbgyaSdblyblEblBblFaSdbmobmoaSXbmoaSYaMsblJbglaSfaMsblKblKblGblMblMblMblMblMblMbkxblHblMblMblMblMblMblMblPblQblRblRblLblRblTblNblVblTblTblWblXblOblKblZblZblSblSblSbmbbmbbmbbmbbmbbmbbmbbmbbmcblUblUblYblUbmabmabmabmabmebmdbmabmcbmibmibmibmibmibmibmibmibmfbmfbmfaUSbmkbmlbmrbmrbmrbmrbmNbmMbmWbmqbnmbnlbmjbmhbmtbmsbdTbbWbmubmybmzbmybmybebbmAbmvbmwbmwbmwbmwbmBbmxbebbmCbmHbaubmIbcpbljbljblkbljbcpbmDbaubmEbmGbmFaYPbcDbmJbmObmPbmPbmKbmRbmLbmTbmUbolbomboOboHboDbmmbmmblzbjRbjRbjRbjRbjRbicbBTbDzbDzbDzbmQbeCblCbnbblAbeCbncbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbmSaSfbmVbndbnabnibnebnfbnibnhbngbnibnibnkbnjboNboMbnnbnnbnnbnobnnbnpbnuaMsbnvbnwbnqblMbnybnrbnAbnBbnCbnDbnsbnFbnGbnHbnIbnJblMbnKbnLblRbnxbntbnzblTbnEbnQbnMblTbnSbnTbnNbnSbnSbnSbnObgSbnPbmbaaaaaaaaaaaaaaaaaaaaabmcbnUbnRbnWbnVbnYbnXboaaYfbocaCubohbmcaaaaaaaaaaaaaaaaaaaaabmibodbhqboeaUSbokbmlbmqbmqbmqbmqbmqboSboUbmqbmqbmqbogbofbofboibonbojbopbooborboqbosbebboubotboBboAboAboBbowbovbebbdXaGYbauboEboFbcpbljblkbcpboGboGbaubauboybauaYPbozblnbloboJboJboCbloaYPaYPaYPbpCbmmbEFbpEboDbmmbmmbmZbAMboIbrMbrMboIboKbDzbDzbGJbGJbnbbeCblCbnbblAbeCblCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabehaVSaVXaVSaVSaVYaVZaVSaVSaVXbejbgeaLdbdnbeEaSdaSWaSWaSXaSWaSYaMsbgvbglaSfbgnbfcbgzbgzbgqbgrbgzbgubgzbgzbgzbgDbgzbgzbgwbgFbdqbgAbghbgBbgAbgCbgAbgAbgAbgAbgEbgMbgJbgzbgzbgKbfcbgQbgxbgSbgLbgObgNbgTbgPbgPbgPbgPbgPbgPbgPbgVbgUbhabhbbhcbhdbhebgWbgXbfdbdDbdDbhfbgZbhgbgZbhgaSZaTfaTaaWNaUNbhqaUSbhrbhlaYeaYdaZRaZRaWMbeFbfrbflbdTbhobhubhsbhsbhwbdTbhAbhCbhBbhEbhDbhDbhFbhHbhGbfMbhIbhJbhPbhQbhRbebbdXaTgbaubhKbhTbhTbhUbhVbhTbhLbazbhXbhNbazbhObhSbczbhWbazbhZbhYbiabcDaYPaYPaYPbibbigbihbiibigbigbigbigaYSafXajcaaaaaaaaaaaabicbikbilbeCbeCbimbinbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbgyaSdaSdaSdaSdaSdaSdbgyaSdaUZaLdbgHbieaSdbgtbgjbhmbhmbhvaMsbivbglbifbgGbfcbijbipbiobiqbiqbixbiwbiwbiwbizbiybiybiAbiCbiBbiqbiqbiDbiybiFbiEbiGbiGbiIbiHbiKbiJbiJbiJbiLbfcbgQbgxbgSbgSbgSbgSbiMbgSbgSbgSbgSbgSbgSbiNbiUbiVbiWbiXbiObiZbiQbiPbiRbiVbiVbiVbjdbjebjebjebiSbhqbhqbhqbirbhxbhqaUSbjabjjaZRaZRbiYaZRaWTbjmbfrbjKbdTbjobjfbjqbjhbjgbdTbjtbjibjvbjwbjxbjybebbebbjzbebbebbebbjBbjlbjBbebbdXaGYbaubjDbcpbcpbcpbjEbcpbjFbazbazbazbazbazbazbazbjnbazbcDbcDbcCbcDbjpbjIaYPbjrbjNbjLblwbgRbjubjsbjAbjRaaaaaaaaaaaaaYDbjCbjGbjCbjCbjCbjHbjCbjJbjCbjGbjCaYHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabbjQaLdaSdaOQaSdbidbgIbjTbjSaSdaOQaSdaSdaLdbjUbeEaSdbkcbjObhmbhmbhvaMsbkdbglaSfbgGbfcbgzbjZbjYbkgbkgbkabkibkbbkgbkebkgbkfbkgbkhbjPbkgbkgbkgbkgbkgbkjbkkbkgbklbkrbknbkmbgzbgzbkpbkobksbkqbkubktbkubkvbkwbkvbkvbkvbkvbkvbkvbkybkAbkzbkzbkzbkzbkBbkzbkCbkDbkzbkzbkEbkGbkFbkFbkFbkFbkFbkFbkFbkHbhqbhqaUSbkMbkNbkPbkObkOblrblsbjmbfrbltbdTbdTbdTbdTbdTbkLbdTbkQbkRbkWbkSbfHbkYbebbhMbkTbkUblcbkVbleblfblgbebbdXaQLbaublhblibcpbljblkbcpbllbllbaubkXblabkZaYPbldblnblmbcDbcDblpbloaYPblqaYPblIdsfbjLblxbmgbmnbmmblzbjRaaaaaaaaaaaabicbmXblubmYbmYblDbeCblCblDblAblvblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaMsaSdbgyaSdaToaSfaSfaTpaSdbgyaSdbjVblybjWblFaSdbmobmoaSXbmoaSYaMsblJbglaSfaMsblKblKblGblMblMblMblMblMblMbkxblHblMblMblMblMblMblMblPblQblRblRblLblRblTblNblVblTblTblWblXblOblKblZblZblSblSblSbmbbmbbmbbmbbmbbmbbmbbmbbmcblUblUblYblUbmabmabmabmabmebmdbmabmcbmibmibmibmibmibmibmibmibmfbmfbmfaUSbmkbmlbmrbmrbmrbmrbmNbmMbmWbmqbnmbnlbmjbmhbmtbmsbdTbbWbmubmybmzbmybmybebbmAbmvbmwbmwbmwbmwbmBbmxbebbmCbmHbaubmIbcpbljbljblkbljbcpbmDbaubmEbmGbmFaYPbcDbmJbmObmPbmPbmKbmRbmLbmTbmUbolbomboOboHboDbmmbmmblzbjRbjRbjRbjRbjRbicbBTbDzbDzbDzbmQbeCblCbnbblAbeCbncbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdblBaSfblEbmSbnabnibmVbndbnibnfbnebnibnibnkbnjboNboMbnnbnnbnnbnobnnbnpbnuaMsbnvbnwbnqblMbnybnrbnAbnBbnCbnDbnsbnFbnGbnHbnIbnJblMbnKbnLblRbnxbntbnzblTbnEbnQbnMblTbnSbnTbnNbnSbnSbnSbnObgSbnPbmbaaaaaaaaaaaaaaaaaaaaabmcbnUbnRbnWbnVbnYbnXboaaYfbocaCubohbmcaaaaaaaaaaaaaaaaaaaaabmibodbhqboeaUSbokbmlbmqbmqbmqbmqbmqboSboUbmqbmqbmqbogbofbofboibonbojbopbooborboqbosbebboubotboBboAboAboBbowbovbebbdXaGYbauboEboFbcpbljblkbcpboGboGbaubauboybauaYPbozblnbloboJboJboCbloaYPaYPaYPbpCbmmbEFbpEboDbmmbmmbmZbAMboIbrMbrMboIboKbDzbDzbGJbGJbnbbeCblCbnbblAbeCblCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdboLboPboLboLboLboLboLboLboPboLboLboQaSfboRbgGbwxaSfbpFaSfboTboXboYboVboWaMsbnwbnwboZblMbpabnDbnDbnDbnDbnDbnsbpdbnDbnDbnDbpeblMbnKbpfblRbpbbphbpiblTbpjbpcbpgblTbplbpkbpmbppbpnbnTbnObgSbnPbmbaaaaaaaaaaaabmcbmcbmcbmcbprbpobptbpqbpubpsbpwaYgbpzbpxbpBbmcbmcbmcbmcaaaaaaaaaaaabmibodbhqbpAbpybpHbpGbpJbpIbpHbpKbqhbpMbqjbqibqkbmqbpNbpLbofbpObpPbofbpRbpQbpTbpSbofbpWbpVbpUboBboAboAboBbpXbqabebbdXaTgbaubmIbcpbljbljblkbljbcpbcpbpYbqcbcpbqdaYPbpZbmpbqgboJboJbqebqgbqfaYPbqmbqlbmmbjRbjRbrcbrdbjRbjRbjRbqnbjRbjRbjRbqpbjCbjCbjCbjCbqobeCblCbqoblAbeCblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLdaLdaSdaSdaSdaSdaSdaSdaSdaSdaSdaLdaMsbgGbqqbqrbqrbqrbqrbqrbqrbqsbqrbqrbqraMsbnwbnKbqtblMbqubnDbnDbqvbqwbqxbqybqvbnDbnDbnDbqzblMbnKbnLblRbqAbqBbqCblTbqDbqEbqFblTbqGbqHbqIbqJbqKbnTbqLbqMbnPbmbbmbbqNbmcbmcbmcbqObqQbqPbqRbqSbqSbqTbqUbqSbqVaYibqWbqXbqYbqZbrbbrabmcbmcbmcbqNbmibmibodbhqbhqaUSbrfbrebqibrgbmqbrhbribmqbshbrHbqkbmqbogbofbofbrjbrlbrkbrnbrmbrpbrobofbrqbpVbrrboBboAboAbrsbrubrtbebbdXaGYbaubrvbrwbrxbljblkbrybcpbcpbrzbcpbrAbrBaYPbrCbrEbrDboJboJbrFbrDbrGaYPbsMbqlbmmbsObsPboDbmmbmmbrIbrJboIbrLbrMboIbrKbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrNbrObrObrQbrObrObrObrRbrObrObrPaabaSdaUkaSgbrSbqrbrUbrVbrWbrXbrYbrTbsabrZbqrbscbsdbsbbseblMbsfbnDbnDbqvbqxbsgbsQbqvbnDbnDbsjbskblMbnKbnLblRblRbslblRblTbsibsnbsoblTbsmbqJbsqbqJbsrbnTbnObssbnPbgPbgPbspbsubstbmcbsvbptbswbqSbqSbsybsxbsAbszbsAaYjbsDbsCbsFbsEbsHbsGbmcbsIbsubsJbsLbsKbodbhqbhqbsNbmqbsZbmqbmqbmqbtnbtobmqbshbtrbqkbmqbpNbofbofbsRbsTbsSbsVbsUbsWbrobsXbebbqabrrboBboAboAboBbrubsYbebbtwbtebaubtfbaubaubtablkbthbtibcpbtjbtbbtlbtcbmUbtdbtgbtpbtqbtqbtkbnZbtmbmUbuDbtxbuGbuFbmmboDdsfbmmbuHbjRbjRbjRbjRbqnbicbttbeCblCblDblAbeCblCblDblAbeCbtubicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrNbrObrObrQbrObrObrObrRbrObrObrPaabaSdaUlaMEbrSbqrbrUbrVbrWbrXbrYbrTbsabrZbqrbscbsdbsbbseblMbsfbnDbnDbqvbqxbsgbsQbqvbnDbnDbsjbskblMbnKbnLblRblRbslblRblTbsibsnbsoblTbsmbqJbsqbqJbsrbnTbnObssbnPbgPbgPbspbsubstbmcbsvbptbswbqSbqSbsybsxbsAbszbsAaYjbsDbsCbsFbsEbsHbsGbmcbsIbsubsJbsLbsKbodbhqbhqbsNbmqbsZbmqbmqbmqbtnbtobmqbshbtrbqkbmqbpNbofbofbsRbsTbsSbsVbsUbsWbrobsXbebbqabrrboBboAboAboBbrubsYbebbtwbtebaubtfbaubaubtablkbthbtibcpbtjbtbbtlbtcbmUbtdbtgbtpbtqbtqbtkbnZbtmbmUbuDbtxbuGbuFbmmboDdsfbmmbuHbjRbjRbjRbjRbqnbicbttbeCblCblDblAbeCblCblDblAbeCbtubicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrNbtvbtybtCbtDbtDbtzbtDbtDbtDbtzbrQaSdaSdaSdaToboRbqrbrUbtFbtGbrUbtBbtAbtHbtEbqrbtLbtMbtIblQblMbtObtPbtKbtJbtQbtNbtSbtRbtRbtRbtUbtTblMbnKbsdbtYbtZbtVbubblTblTblTblTblTbucbudbtWbufbugbnTbnObssbgSbgSbgSbtXbuebuabuibuhbujbqSbunbukbumbulbupbuoburbuqbutbusbuubuhbuwbuvbuybuxbuAbuzbuEbuEbuBbhqbuCaUSbmqbuIbuNbqkbmqbuQbuRbmqbvbbuSbqkbmqbogbofbofbofboibofbuJbofbsWbrobuKbebbuPbrrboBboAboAboBbrubuLbebbvcbvgbvebwkbvhbwmbuTbuWbuVbuVbuVbuVbuVbuVbuXbuZbuYboJboJboJboJboJboJbvdbvabwubwtbmmbmmbmmbwAbmnbmmbwBbqnbwDbwCbxzbjRblDblAbeCblCbnbblAbeCblCbnbblAbeCblCblDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvibvjbvjbvjbvjbvjbvjbvjbvjbvjbvjbvfbvlaOQbvlaSfboRbqrbvmbrUbvnbvnbvnbvkbrUbvobqrbvqbvrbtIbvsbvsbvsbvsbvpbvsbvtbnDbvvbvubvwbvwbvybvxblMbvzbvBbvAbvDbvCbvFbvGbvHbvIbvHbvJbvJbvJbvJbvJbvKbvEbnObvLbvNbvMbvPbvObvRbvQbvTbvSbuobvUbvVbvXbvXbvXbvXbvWbvXbvZbwabwbbvYbvUbwdbwcbmcbwebwgbwfbwibwhbwjbhqbhqbsNbmqbEabmqbmqbmqaZVbmqbmqbxAbxAbmqbmqbwlbofbofbwnbwobofbofbofbwqbwpbwrbebbqabrrboBboBboBboBbrubwsbebbxBbwvbwvbwwbwvbxKbljbljbljbljbwybljbljbljbwzbvaboJboJboJboJboJboJboJbvdbvabwubwtbmmbxObxObycbxObmmbyZbjRbzlbzdbzmbjRbnbblAbeCblCbnbblAbeCblCbnbblAbeCblCbnbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwFbwEbwGbwHbwIbwIbwJbwIbwIbwIbwJbrQaSdaSdaSdbwKblFbwLbrUbwMbvnbvnbvnbvkbwMbrUbqrbwNbwObtIbvsbwPbwQbwRbwSbvsbwUbwTbwVblMbwWbwXbwZbwYblMbnKbxabxbbxbbxcbxbbxbbxbbxbbxebxdbxdbxdbxfbxdbxgbxhbxibxjbxkbxlbxlbxlbxlbxlbxmbxmbxnbxmbvXbvXbxobxpbxqbxrbxtbxsbxobxubvXbxvbxwbxvbxvbxvbxvbxvbxvbxvbwjbhqbhqaUSbxxbmqaVGbJQbmqbznbmqbzobxDbxCbmqbxEbdTbxFbxGbdTbdTbxHbxJbxIbxJbdTbdTbebblbbxLbxMbxMbxMbxMbxLbxNbebbKVbwvbwvbwwbxPbaubxQbxRbxSbxTbxUbxVbxWbxXbxYaYPbxZbcDbyaboJboJbyabcDbybaYPbzpbwtbmmbzObzObAjbzObmmbwBbqnbwDbwCbxzbjRbqoblAbeCblCbqoblAbeCblCbqoblAbeCblCbqoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwFbrObrObrQbrObrObrObrRbrObrObydaabaSdbyebndbyfbqrbtFbtFbtFbrUbyhbygbyjbyibqrbykbylbtIbvsbymbvsbynbyobvsbyqbypbyrblMbwWbwXbwZbskblMbnKbxabxbbytbysbyubyvbywbxbbyybyxbyAbyzbyBbyBbyBbyCbyEbyDbyFbxlbyGbyHbyIbyJbyLbyKbyMbyNbvXbyObxqbxqbyPbyQbyPbxqbxqbyRbvXbySbyUbyTbyWbyVbyYbyXaZObxvbzabzbbzbbzcaUSaUSaUSaUSbAvbsNbAvbzeaUSbdRaUSaUSbdTbdTbdTbdTbzgbzfbzfbzfbzfbzhaQsbebbjBbzjbjBbzkbzkbjBbzjbjBbebbKVbwvbwvbAxbxPbaubaubaubaubaubtfbaubaubaubauaYPaYOaYQaYQaYQaYQaYQaYQaYPaYPbAJbAIbALbAKbmmboDbmmbmmbBrbjRbjRbjRbjRbqnbicbzqbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaMsaMsaMsaMsaMsaMsbzrbzsbqrbqrbqrbqrbqrbqrbztbqrbqrbqrbnKbnKbzwbvsbzubzvbynbzxbvsbzzbzybzAblMbwWbwXbwZbnDblMbnKbxabxbbzDbzBbzCbyvbzCbxbbyybzGbzEbzFbzIbzHbzKbzJbzMbzLbyFbzRbzNbBsbzPbzQbzQbzPbzUbzSbvXbzTbxqbxqbyPbzWbyPbxqbxqbzVbwbbzXbAbbzYbzZbAabAdbzYbAcbxvbAlbAebAfbAgbAhbAicMKbAkbAkbAkbAkbAkbAkbAmbAobAnbAkbAkbAqbAkbAkbAkbAkbAkbAkbAkbAkbApbAsbArbArbArbArbArbArbAtbAibAucVscVscVtbAwbAybAwbAzbAwbABbAAbACbAwbAFbADbAEbAHbAGbAGbAGbAGbAGbAGbAGbBtbBPbBNbBNbBQbBNbBUbmmbmmbrIbAMboIbANbrMboIbAObeCbeCbeCbeCbAPbeCbAPbeCbeCbeCbeCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAQbARbARbARbARbASbASbARbARbATaaaaabaSdaUkaSgbAVbAUbAXbAWbAWbAWbAWbAYbAZbBablQbnwbBcbBbbvsbvsbvsbBdbyobvsblMblMblMblMbwWbBebBgbBfblMbBhbBibxbbBjbBkbyvbzCbBlbxbbyybBmbzEbzFbBnbBobBpbzJbBqbzLbyFbzRbDobCAbDsbBubBvbBwbzUbBxbvXbBybyPbxqbBAbBzbBAbxqbyPbBBbxubBCbzYbzYbzZbBDbAdbzYbBEbxvbBFbAfbAfbAgbAhbAibAkbAkbAkbAkbAkbAkbAkbBGbAkbAkbAkbAkbAkbAkbBHbBIbBIbBIbBIaQwbBIbBIbBIbBIbBIbBIaQwbBIbBIbBIaQybDVaQDcVUaRubwvbwvbwvbwvbwvbwwbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvcVVbwvbDtbDubmmbmmbDvbmmbmmbmmbmmbDxbjRbqnbjRbjRbjRbqpbjCbBWbBVbjCbBXaYUbBXaYUbBYbBRbBSbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvibvjbvjbvjbvjbvjbvjbvjbvjbvjbvjbvfbvlaOQbvlaSfboRbqrbvmbrUbvnbvnbvnbvkbrUbvobqrbvqbvrbtIbvsbvsbvsbvsbvpbvsbvtbnDbvvbngbnhbnhbvubvxblMbvzbvBbvAbvDbvCbvFbvGbvHbvIbvHbvJbvJbvJbvJbvJbvKbvEbnObvLbvNbvMbvPbvObvRbvQbvTbvSbuobvUbvVbvXbvXbvXbvXbvWbvXbvZbwabwbbvYbvUbwdbwcbmcbwebwgbwfbwibwhbwjbhqbhqbsNbmqbEabmqbmqbmqaZVbmqbmqbxAbxAbmqbmqbwlbofbofbwnbwobofbofbofbwqbwpbwrbebbqabrrboBboBboBboBbrubwsbebbxBbwvbwvbwwbwvbxKbljbljbljbljbwybljbljbljbwzbvaboJboJboJboJboJboJboJbvdbvabwubwtbmmbxObxObycbxObmmbyZbjRbzlbzdbzmbjRbnbblAbeCblCbnbblAbeCblCbnbblAbeCblCbnbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwFbwEbwGbwHbwIbwIbwJbwIbwIbwIbwJbrQaSdaSdaSdbvwblFbwLbrUbwMbvnbvnbvnbvkbwMbrUbqrbvybwKbtIbvsbwPbwQbwRbwSbvsbwUbwTbwVblMbwWbwXbwNbwYblMbnKbxabxbbxbbxcbxbbxbbxbbxbbxebxdbxdbxdbxfbxdbxgbxhbxibxjbxkbxlbxlbxlbxlbxlbxmbxmbxnbxmbvXbvXbxobxpbxqbxrbxtbxsbxobxubvXbxvbxwbxvbxvbxvbxvbxvbxvbxvbwjbhqbhqaUSbxxbmqaVGbJQbmqbznbmqbzobxDbxCbmqbxEbdTbxFbxGbdTbdTbxHbxJbxIbxJbdTbdTbebblbbxLbxMbxMbxMbxMbxLbxNbebbKVbwvbwvbwwbxPbaubxQbxRbxSbxTbxUbxVbxWbxXbxYaYPbxZbcDbyaboJboJbyabcDbybaYPbzpbwtbmmbzObzObAjbzObmmbwBbqnbwDbwCbxzbjRbqoblAbeCblCbqoblAbeCblCbqoblAbeCblCbqoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwFbrObrObrQbrObrObrObrRbrObrObydaabaSdbwObmSbyfbqrbtFbtFbtFbrUbyhbygbyjbyibqrbwZbyebtIbvsbymbvsbynbyobvsbyqbypbyrblMbwWbwXbwNbskblMbnKbxabxbbytbysbyubyvbywbxbbyybykbyxbylbyBbyBbyBbyCbyEbyDbyFbxlbyGbyHbyIbyJbyLbyKbyMbyNbvXbyObxqbxqbyPbyQbyPbxqbxqbyRbvXbySbyUbyTbyWbyVbyYbyXaZObxvbzabzbbzbbzcaUSaUSaUSaUSbAvbsNbAvbzeaUSbdRaUSaUSbdTbdTbdTbdTbzgbzfbzfbzfbzfbzhaQsbebbjBbzjbjBbzkbzkbjBbzjbjBbebbKVbwvbwvbAxbxPbaubaubaubaubaubtfbaubaubaubauaYPaYOaYQaYQaYQaYQaYQaYQaYPaYPbAJbAIbALbAKbmmboDbmmbmmbBrbjRbjRbjRbjRbqnbicbzqbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaMsaMsaMsaMsaMsaMsbzrbzsbqrbqrbqrbqrbqrbqrbztbqrbqrbqrbnKbnKbzwbvsbzubzvbynbzxbvsbzzbzybzAblMbwWbwXbwNbnDblMbnKbxabxbbzDbzBbzCbyvbzCbxbbyybyzbzEbzFbzIbzHbzKbzJbzMbzLbyFbzRbzNbBsbzPbzQbzQbzPbzUbzSbvXbzTbxqbxqbyPbzWbyPbxqbxqbzVbwbbzXbAbbzYbzZbAabAdbzYbAcbxvbAlbAebAfbAgbAhbAicMKbAkbAkbAkbAkbAkbAkbAmbAobAnbAkbAkbAqbAkbAkbAkbAkbAkbAkbAkbAkbApbAsbArbArbArbArbArbArbAtbAibAucVscVscVtbAwbAybAwbAzbAwbABbAAbACbAwbAFbADbAEbAHbAGbAGbAGbAGbAGbAGbAGbBtbBPbBNbBNbBQbBNbBUbmmbmmbrIbAMboIbANbrMboIbAObeCbeCbeCbeCbAPbeCbAPbeCbeCbeCbeCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAQbARbARbARbARbASbASbARbARbATaaaaabaSdaUlaMEbAVbAUbAXbAWbAWbAWbAWbAYbAZbBablQbnwbBcbBbbvsbvsbvsbBdbyobvsblMblMblMblMbwWbBebyAbBfblMbBhbBibxbbBjbBkbyvbzCbBlbxbbyybzGbzEbzFbBnbBobBpbzJbBqbzLbyFbzRbDobCAbDsbBubBvbBwbzUbBxbvXbBybyPbxqbBAbBzbBAbxqbyPbBBbxubBCbzYbzYbzZbBDbAdbzYbBEbxvbBFbAfbAfbAgbAhbAibAkbAkbAkbAkbAkbAkbAkbBGbAkbAkbAkbAkbAkbAkbBHbBIbBIbBIbBIaQwbBIbBIbBIbBIbBIbBIaQwbBIbBIbBIaQybDVaQDcVUaRubwvbwvbwvbwvbwvbwwbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvcVVbwvbDtbDubmmbmmbDvbmmbmmbmmbmmbDxbjRbqnbjRbjRbjRbqpbjCbBWbBVbjCbBXaYUbBXaYUbBYbBRbBSbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbCcbBZbCebCbbCbbClbCibARbATaSdaSdaSdaTobCnbCfbCgbCfbCfbCfbCfbChbCtbCjblQblQbCkbCwbvsbwPbCmbCxbzxbvsbCobCpbCoblMblMblMblMbCqblMbCrbCsbxbbCybCubzCbCvbCzbxbbyybzJbCBbzFbBnbBnbCEbzJbCFbzLbyFbzRbDybCAbDsbCGbCCbBwbzUbCDbvXbCHbCIbxqbCKbCJbCLbxqbCRbCNbCSbCMbCTbCObCPbCQbCUbzYbCVbxvbCYbCXbAfbAgbAhbAibAkbCZbAkbDAbDbbDbbDbbDbbDbbDbbDbaRybAkbAkbAkbAkbAkbDabAkaRAaRCaRBaRCaRCaRCaREaRHaRFaSFaROaSHbFsaSKaSIaTHaSVbwvbwvbwvbDkbDpbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbDrbDqbDqbElbEBbEmbFwbEHbEHbFzbGIbGhbmZbAMboIbrMbrMboIbDBdsldsldsldsnbicaaabicbDDbDwbDwbDFbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbDGbCbbCbbCbbCbbCbbCbbCbbDHbDCaOQbDCaSfbDIbCfbDEbDJbDLbDKbDMbChbDObDNbDQbDQbDWbKHbvsbvsbvsbynbDYbymblQblQblQblQbDPbnKbnKbCsbnKbCrbCsbxbbDZbDRbDSbDTbyvbxbbDUbzJbEbbzFbBnbBnbEfbDXbEjbzLcXqbxlbHpbHobzPbzPbzPbzPbzUbEcbvXbEdbEebvXbvXbvXbvXbvXbvXbvXbxubxvbErbEgbEhbEibEsbEkbEvbxvbEwbEnbEnbEpbEpbEpbEpbEpbEpbEqbEybEpaTLaTKaTMbEpbNebEobEobEobEobEobEubEubEuaTNbEubEubEubEubEubEuaTObEubEubEubteaTPaTQbwvaTRaTRbEAbEAbEAbEAbEAbEJbDqbDqbDrbDqbwvbDqbDqbDqbDqbEMbEDbEDbEDbEDbENbEFbEFbEGbEGbEGbEGbEGbEGbEGbjRbjRbjRbjRaYUdsqdsldslbEObicaaabicbEPbDwbDwbEQbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbEKbELbELbCbbELbELbELbARbERaSdaSdaSdaTobEVbCfbEYbEXbEXbEXbFcbChbnKbFfbESbETbEUbFgbvsbwPbEWbynbFhbymbFibEZbFabFbbFlbFdbFdbFebFdbFnbFobxbbFqbFpbFjbFkbFrbFmbNsbyBbFubFtbBnboxbFybFxbEjbzLcYPbxlbFAbFvbJabFFbFIbFGbFMbxmbxmbFBbFCbFDbFEbFNbFEbFPbFCaaabFHbxvbFRbFJbFKbFLbEsbzYbFSbxvbFUbFObFWbEpaTTaTSaTVaTUaTYaTWaUPaUObGabGabGaaVxaVIaVyaWOaWIaWSaWRbEuaYkaYoaYlaYraYqaZUaZTbobbbybuOaZTaZTbzibGrbGrbBJbGrbBKbBKbEAbGubGAbGwbEAbGBbGEbGBbEAbGFbDqbEMbEDbGKbGLbGKbEDbGCbGDbEDbGNbGMbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaabaabbicdsudswdsvdsvbicaaabicbGObDwbGObDwbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGPbARbARbARbARbARbARbARbARbERaaaaaaaSdbGRbndbHabCfbHdbCfbHebEXbHfbGQbChbHgbGSbGTbGUbFgbvsbvsbvsbvsbvsbvsbGVbGWbGXbGYbGZbxbbxbbxbbxbbxbbxbbxbbHhbxbbxbbxbbHbbxbbHcbHibHjbBnbBnbBnbHnbDXcZfbzLcZjbxlbHqbFvbxlbxlbxlbxmbHrbxmbHkbHlbHmbHubHBbHzbHDbHCbHsbHtbHFbxvbHvbzYbHwbHxbEsbHybzYbxvbHHbHAbHIbEpbBMbBLbJFbGabGabCWbDdbDcbDfbDebDhbDgbDjbDibSnbDlbDnbDmbEubEtbEzbExbECaZTbEEaZTbFQbEIbuObFTbFXbFVbGrbIfbFYbIgbGbbFZbIabGcbIdbIdbImbIcbIlbInbEAbIibIrbIkbEDbItbIwbIvbIobIpbIybEDbIzbGGbIsbGHaaaaaaaaaaaaaaaaaaaaaaaaaabaabbIAbjJbIubIubIubICaaabIEbIxbIxbIxbjJbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaSdaSdaSdaSdaSdaSdaToaSfbIGbCfbIHbIBbIIbIDbIDbIJbILbIKbIMbIMbIObINbDQbDQbDQbDQbDQbDQbIQbIPbIPbIRbITbxbbIVbIUbIYbIXbISbIZbJfbJbbxbbIWbJibyBbyCbDXbHjbBnbBnbJjbzJbzJbJmdaQdbnbJcbJdbJebJpbJgbJhbJsbJtbJkbJlbJubHsbJnbJvbJnbJvbJwbHsbHtbJqbJrbJybJxbJDbJzbJGbJEbJHbJrbJIbFObFObEpbGebGdbGgbGfbGabGibGqbHObDebDebDebGtbGxbGvbSnbDlbGzbGybEubHEbHJbHGbHLbHKbHMaZTbFQbEIbuObFTbFXaZTbGrbHNbHQbHPbHSbHRbHUbHTbHVbJYbJYbKhbJYbIbbKbbKnbKdbKobKfbKqbKrbKibKibKibKjbEDbKubGGbKlbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabbIAbKmbKmbKmbIFaaabIAbKmbKmbKmbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKybKxbKpaQZaQZaQZbndaSfaSfbCfbKCbCfbKDbKsbKtbKEbCfblQbKvbKvbKwbKFbKwbKwbKwbKFbKwblQblQbxbbxbbxbbKGbxbbKzbKzbKzbKzbKzbKzbJfbKAbKBbPabzFbKIbKKbKJbKMbKLbKObKNbKQbKPbKSbKRdbYbKUbKXbKXbLabKZbKTbLbbLfbKWbLgbKYbFCbLhbHDbLibHBbLkbFCaaabLcbLdbLebLnbLdbLdbLdbLdbLpbxvbLqbLrbIechhbIjbIhbJAbIqbJCbJBbJJbHObJLbJKbJTbJPbJXbJWbKabJZbKcbOUbEubEubEubEubEubKebKgaZTbFQbEIbLjbFTbFXaZTbGrbLNbLEbLPbLmbLlbLIbLTbLobLLbLMbLUbLObKkbEAbLXbLRbLYbEDbLZbMfbMabIpbLWbNCbEDbKubGGbMhbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbMjbMibKpaSeaSebMbbMcaSebMdbCfbMebIBbMlbMkbMnbMmbCfaaaaabaabbMpbMobMobMobMobMobMraaaaaabKBbMtbMsbMubMqbKzbKzbKzbKzbKzbKzbMwbMvbMzbMybMDbMBbMxbDXbzJbzJbMFbMAbzJbzJbMJbMCbMLbMEbMMbMGbMGbMHbMGbMIbMNbMGbMKbKYbFCbMObFEbFEbFEbMPbFCaaabLcbLdbMRbMQbMVbMTbMWbMSbNbbMUbNcbFObLschhbLubLtbLwbLvbLybLxbLxbLzbGabLAbLBbEobEobLDbLFbDlbLQbLKbLVbLSbMYbMXbLKbMZbNdbNabFTbEIbNfbFTbEIaZTbGrbNgbHXbHXbLmbNhbNEbNibNjbNHbNIbNJbNObNNbEAbNQbLRbNRbEDbNSbNPbNTbIpbIpbNUbEDbIzbGGbNWbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKpbKpbObaSdaSdbjQaLdaSdaSdbCfbOdbIBbIBbIBbCfbCfbCfaaaaaaaaabOebOcbOcbOfbOcbOcbOeaaaaaabKBbOgbKzbOibOhbOhbOhbOhbOhbOkbOjbOhbOlbOnbOmbOpbOobOrbOqbzJbOtbBnbOvbOsbDXbOwbOubOxbMEbMEbMGbOAbOybOCbOBbODbMGbFBbKYbFCbOEbOHbOFbOObOMbFCaaabOGbLdbOPbOIbOJbOKbOLbOKbOSbONbNkbFObNlchhbNnbNmbNpbNobNqbGabNybNrbLybLAbNzbEobNDbNAbNGbNFbNLbNKbORbNMbOVbOTbLKbOWaZTbOXbFQbEIbOYbFTbFXbFVbGrbOZbLEbLPbUlbNBbNEbPnbPbbPobPpbIdbPqbPybPsbPtbIrbPubEDbPzbPwbIpbPHbPBbPJbEDbKubGGbPAbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbPIbPIbPIbPNbPMbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbPUbPObPPbPQbPQbPQbPObKzbJfbKAbKzbKzbKBbPZbPSbQcbQdbPVbQebPXbBnbBnbPYbDXbOwbOubQhbQfbQbbQibQkbOzbQlbQgbQnbMGbQobQjbHmbQpbQqbQmbQsbQrbHsbHtbQtbLdbQvbQubQwbOKbQxbOKbQybONbQzbFObPdbPcbPebLtbPfbEpbPhbPgbPmbEpbPvbPrbPxbEobPGbPFbQabPKbQAbNKbQCbQBbQEbQDbLKbFXaZTbQFbQHbQGbQIbNdbQJbNdbQLbQKbQKbQKbQNbQMbIabRkbPbbPobRlbRhbPqbRmbEAbRnbRnbRobEDbRpbRybRqbRzbIpbREbEDbKubGGbRFbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbRubRvbRwbRxbRGbRHbRAbRGbRBbRCbRDbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbRJbRIbRKbRIbRSbRRbRTbRRbRRbRRbRRbRUbJfbKAbRLbxbbxbbRMbBnbzFbQdbRNbDXbRObRPbRPbRQbNYbRYbRXbRZbRVbRWbSbbSdbScbSabQgbSebMGbMKbKYbFCbSfbShbSgbSlbSkbFCaaabOGbSibSjbSibSibSibSibSibSmbSibSpbFObQOchhbQQbQPbQQbEpbNobNobNobEpbQSbQRcmAbQTbQWbQUbQZbQYbRabLKbQCbRbbOVbRcbLKbWdbWdbWdbRebRdbEubEubEubEubGrbJobHXbHXbRfbSTbIabSWbRibRgbRrbRjbPqbSYbTabSZbTfbTcbTbbTgbTdbTebTjbTebEDbEDcacbGGbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbRAbRAbRAbTlbRGbTnbTnbRGbTobRAbRAbTpbWLbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbTtbTrbTqbTrbTubKzbPPbPQbPQbPQbKzbKzbJfbKAbTsbTxbxbbTAbBnbTBbQdbTvbDXbJObBnbBobBnbPWbOwbTybTzbRVbRWbTCbTEbTDbTKbTFbTLbTGbTHbTIbTJbTJbTNbTMbTPbFCbFCaaabOGbSibTQbTObTSbTRbTVbTTbTWbTUbTXbFObRsbQVbSobRtbSrbSqbStbSsbSvbSubUebQRcmAbOUbOUbSwbSybSxbOQbLKbNKbSzbSAbLKbLKbWdbSCbSBbSEbSDbWgbSFbSHbSGbGraZSbpDbSIbUCbUCbIabSJbUEbUFbIabSKbPqbUHbIabUKbUMbULbUObUNbZNbpvbsBbqbbRnbtscacbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbVebVfbVgbVhbVibRGbVkbRAbVlbRAbRAbRAbRAbRAbTlbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebVmbOcbOcbOcbVnbOebPTbKBbKBbVobKzbPPbKzbKzbKzbKzbKzbJfbKAbTsbVpbxbbVrbBnbVqbVsbBnbVwbzEbBnbBnbVtbDXbOwbTybTzbRVbRWbMGbVubVvbVybVxbVzbMHbVBbVAbVDbVCbHsbVEbVFbHsbHtbHtbVGbSibVIbVHbVKbVJbVLbVLbVNbVMbVObFObSMbSLbSObSNbSPcrAcrAcrAcrAcrAbSRbSQbSUbSSbSVbXAbSXbRtbXAbThbXAbJRcuobJSbTZbTYbUabUabUcbUbbWgbUdbUfbUdbWibWibWjbWjbWjbWjbIabIabIabIabIabWlbWnbLIbIabNVbNZbNXbWqbWqbPibOabLRctvbPkbPjcacbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGbRAbRAbWHbWHbWHbRGbRAbRAbRGbWIbWJbWKbRAbWMbWNbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbWPbTrbTqbTrbPUbWQbWRbKzbKzbKzbWQbKzbJfbKAbTsbWSbxbbWWbBnbzFbQdbBnbzJbLJbBnbBnbWUbDXbOwbTybWVbRVbWXbMGbXbbWYbWZbXabXdbMHbXcbXebXgbXfbXibXhbXjbFCaaaaaaaaabSibXpbXkbXlbXlbXmbXnbXobSibXrbXqbUhbUgbUjbUibUrbUkbUnbUmbUmbUmbUpbUobUmbUmbUqbUmbUmbUsbUnbUmbUmbUGbNubNtbUwbUvbUBbUybZfbUDbXNbUIbUIbUIbUJbWgbLRbUPbWqbWqbXYbXXbWqbXZbYbbYabYdbYcbWqbPlbYgbYfbYibYhbYlbYjbYjbYjbYjbYjcacbGjbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGbRAbRAbRAbRAbRAbYtbRAbRAbRGbPIbPIbPIbPIbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbYxbYwbYybYwbYAbYzbYBbYBbYBbYBbYBbYCbYEbYDbTsbYFbxbbYGbYIbYHbYNbYJbYKbYLbYLbYLbYMbYMbYObTybYRbYQbRWbMGbYTbYSbYVbVvbYWbMHbYUbYXbZdbTJbZebQmbYYbFCaaaaaaaaabSibYZbZabZbbZcbXmbXnbXobSibZgbZJbURbUQbUTbUScyTcyTbUVbUUbUXbUWcyTbUYbUZbUZbVabUZbUZbUSbUVbUZbVcbVbbVdcyTbVPbVjbVRbVQbVTbVSbVVbVUbVXbVWbVZbVYbWcbWbbWcbWcbWebUNbZMbUNbZNbUNbZPbZObZObPCbPDbZRbZUbZTbZXbZVbGkbZWaYpbYjcacbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcafcagcahcaibRAbRGbRAbRAbRGbRAcancakcaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbxbbxbbKBbKBbKBbKBbKBbxbbxbbKBbKBbKBbxbcamcamcamcascambYMcaocapcaqcatbYMbOwbTycawbMEbMEbMGbMGbMGbMGbMGbMNbMHbTJbTIcaubTJcavcaxbFCbFCbFCbFCbFCbSibSjbSibSibSibSibSibSibSibNvbFObWfbSLbWkbWhbWobWmbWscaAbWubWtbWxbWwbXGbWubWabWybWabWybWabWybWabWzbWAcrAbTZbWBbWDbWCbWFbWEbXNbXsbXubXtbXvcbdcbdcbecbdcbfcbicbfcbfcbfcbhcblcbjcbjcbkcbmcbocbnbZUcbpcbrcbqbGlcbscbubYjcacbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIbPIbPIbPIbPIbPIbRGbTobRAcbzbRAcbxcbycbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbDcbBbOccbCbOccbEcbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbGaabaaaaaaaaaaaacamcbIcbHcbKcbJbYMcbNcbLcbMcbRbYMbOwbTycbOcbPcbQbXwcbVcbTcbUcbWcbYcbXbXxcbZcccccbccfccdcceccgccjcchccibXybXzcclccmbEnccnbFOccoccpccrbFObXBbQVbXCcaAcaAbXDbXDcaAbXFbXEbZhbXHbZibXIbWabXKbXMbXLbXMbXObWabXPbWAbXRbWdbXSbXUbXTbXSbXSbWibXVbXWbXQbYkcbdccTccSccVccUccXccWcdbcbfccYccZcdacbjcbjcdccbocddcdfbPEcdhcdgbGmcdicdkbYjcdndfcbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGPbARbARbARbARbARbARbARbARbERaaaaaaaSdbBgbmSbHabCfbHdbCfbHebEXbHfbGQbChbHgbGSbGTbGUbFgbvsbvsbvsbvsbvsbvsbGVbGWbGXbGYbGZbxbbxbbxbbxbbxbbxbbxbbHhbxbbxbbxbbHbbxbbHcbHibHjbBnbBnbBnbHnbDXcZfbzLcZjbxlbHqbFvbxlbxlbxlbxmbHrbxmbHkbHlbHmbHubHBbHzbHDbHCbHsbHtbHFbxvbHvbzYbHwbHxbEsbHybzYbxvbHHbHAbHIbEpbBMbBLbJFbGabGabCWbDdbDcbDfbDebDhbDgbDjbDibSnbDlbDnbDmbEubEtbEzbExbECaZTbEEaZTbFQbEIbuObFTbFXbFVbGrbIfbFYbIgbFZbBmbIabGcbIdbIdbImbIcbIlbInbEAbIibIrbIkbEDbItbIwbIvbIobIpbIybEDbIzbGGbIsbGHaaaaaaaaaaaaaaaaaaaaaaaaaabaabbIAbjJbIubIubIubICaaabIEbIxbIxbIxbjJbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaSdaSdaSdaSdaSdaSdaToaSfbIGbCfbIHbIBbIIbIDbIDbIJbILbIKbIMbIMbIObINbDQbDQbDQbDQbDQbDQbIQbIPbIPbIRbITbxbbIVbIUbIYbIXbISbIZbJfbJbbxbbIWbJibyBbyCbDXbHjbBnbBnbJjbzJbzJbJmdaQdbnbJcbJdbJebJpbJgbJhbJsbJtbJkbJlbJubHsbJnbJvbJnbJvbJwbHsbHtbJqbJrbJybJxbJDbJzbJGbJEbJHbJrbJIbFObFObEpbGebGdbGgbGfbGabGibGqbHObDebDebDebGtbGxbGvbSnbDlbGzbGybEubHEbHJbHGbHLbHKbHMaZTbFQbEIbuObFTbFXaZTbGrbHNbHQbHPbHSbHRbHUbHTbHVbJYbJYbKhbJYbIbbKbbGbbKdbGkbKfbKqbKrbKibKibKibKjbEDbKubGGbKlbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabbIAbKmbKmbKmbIFaaabIAbKmbKmbKmbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbGmbGlbKpaMdaMdaMdbmSaSfaSfbCfbKCbCfbKDbKsbKtbKEbCfblQbKvbKvbKwbKFbKwbKwbKwbKFbKwblQblQbxbbxbbxbbKGbxbbKzbKzbKzbKzbKzbKzbJfbKAbKBbPabzFbKIbKKbKJbKMbKLbKObKNbKQbKPbKSbKRdbYbKUbKXbKXbLabKZbKTbLbbLfbKWbLgbKYbFCbLhbHDbLibHBbLkbFCaaabLcbLdbLebLnbLdbLdbLdbLdbLpbxvbLqbLrbIechhbIjbIhbJAbIqbJCbJBbJJbHObJLbJKbJTbJPbJXbJWbKabJZbKcbOUbEubEubEubEubEubKebKgaZTbFQbEIbLjbFTbFXaZTbGrbLNbLEbLPbLmbLlbLIbLTbLobLLbLMbLUbLObKkbEAbGRbLRbKnbEDbKobKybKxbIpbLWbNCbEDbKubGGbMhbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbLYbLXbKpbLZbLZbMabMbbLZbMcbCfbMebIBbMlbMkbMnbMmbCfaaaaabaabbMpbMobMobMobMobMobMraaaaaabKBbMdbMsbMubMqbKzbKzbKzbKzbKzbKzbMwbMvbMzbMybMDbMBbMxbDXbzJbzJbMFbMAbzJbzJbMJbMCbMLbMEbMMbMGbMGbMHbMGbMIbMNbMGbMKbKYbFCbMObFEbFEbFEbMPbFCaaabLcbLdbMRbMQbMVbMTbMWbMSbNbbMUbNcbFObLschhbLubLtbLwbLvbLybLxbLxbLzbGabLAbLBbEobEobLDbLFbDlbLQbLKbLVbLSbMYbMXbLKbMZbNdbNabFTbEIbNfbFTbEIaZTbGrbNgbHXbHXbLmbNhbNEbNibNjbNHbNIbNJbNObNNbEAbMfbLRbMibEDbMjbNPbMtbIpbIpbNUbEDbIzbGGbNWbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKpbKpbObaSdaSdbjQaLdaSdaSdbCfbOdbIBbIBbIBbCfbCfbCfaaaaaaaaabOebOcbOcbOfbOcbOcbOeaaaaaabKBbNQbKzbOibOhbOhbOhbOhbOhbOkbOjbOhbOlbOnbOmbOpbOobOrbOqbzJbOtbBnbOvbOsbDXbOwbOubOxbMEbMEbMGbOAbOybOCbOBbODbMGbFBbKYbFCbOEbOHbOFbOObOMbFCaaabOGbLdbOPbOIbOJbOKbOLbOKbOSbONbNkbFObNlchhbNnbNmbNpbNobNqbGabNybNrbLybLAbNzbEobNDbNAbNGbNFbNLbNKbORbNMbOVbOTbLKbOWaZTbOXbFQbEIbOYbFTbFXbFVbGrbOZbLEbLPbUlbNBbNEbPnbPbbPobPpbIdbPqbPybPsbPtbIrbPubEDbPzbPwbIpbPHbPBbPJbEDbKubGGbPAbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbPIbPIbPIbPNbPMbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbNRbPObPPbPQbPQbPQbPObKzbJfbKAbKzbKzbKBbPZbPSbQcbQdbPVbQebPXbBnbBnbPYbDXbOwbOubQhbQfbQbbQibQkbOzbQlbQgbQnbMGbQobQjbHmbQpbQqbQmbQsbQrbHsbHtbQtbLdbQvbQubQwbOKbQxbOKbQybONbQzbFObPdbPcbPebLtbPfbEpbPhbPgbPmbEpbPvbPrbPxbEobPGbPFbQabPKbQAbNKbQCbQBbQEbQDbLKbFXaZTbQFbQHbQGbQIbNdbQJbNdbQLbQKbQKbQKbQNbQMbIabRkbPbbPobRlbRhbPqbRmbEAbRnbRnbRobEDbRpbRybRqbRzbIpbREbEDbKubGGbRFbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbRubRvbRwbRxbRGbRHbRAbRGbRBbRCbRDbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbRJbRIbRKbRIbNSbRRbRTbRRbRRbRRbRRbRUbJfbKAbRLbxbbxbbRMbBnbzFbQdbRNbDXbRObRPbRPbRQbNYbRYbRXbRZbRVbRWbSbbSdbScbSabQgbSebMGbMKbKYbFCbSfbShbSgbSlbSkbFCaaabOGbSibSjbSibSibSibSibSibSmbSibSpbFObQOchhbQQbQPbQQbEpbNobNobNobEpbQSbQRcmAbQTbQWbQUbQZbQYbRabLKbQCbRbbOVbRcbLKbWdbWdbWdbRebRdbEubEubEubEubGrbJobHXbHXbRfbSTbIabSWbRibRgbRrbRjbPqbSYbTabSZbTfbTcbTbbTgbTdbTebTjbTebEDbEDcacbGGbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbRAbRAbRAbTlbRGbTnbTnbRGbTobRAbRAbTpbWLbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbTtbTrbTqbTrbNTbKzbPPbPQbPQbPQbKzbKzbJfbKAbTsbTxbxbbTAbBnbTBbQdbTvbDXbJObBnbBobBnbPWbOwbTybTzbRVbRWbTCbTEbTDbTKbTFbTLbTGbTHbTIbTJbTJbTNbTMbTPbFCbFCaaabOGbSibTQbTObTSbTRbTVbTTbTWbTUbTXbFObRsbQVbSobRtbSrbSqbStbSsbSvbSubUebQRcmAbOUbOUbSwbSybSxbOQbLKbNKbSzbSAbLKbLKbWdbSCbSBbSEbSDbWgbSFbSHbSGbGraZSbpDbSIbUCbUCbIabSJbUEbUFbIabSKbPqbUHbIabUKbUMbULbUObUNbZNbpvbsBbqbbRnbtscacbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbVebVfbVgbVhbVibRGbVkbRAbVlbRAbRAbRAbRAbRAbTlbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebVmbOcbOcbOcbVnbOebPTbKBbKBbOgbKzbPPbKzbKzbKzbKzbKzbJfbKAbTsbVpbxbbVrbBnbVqbVsbBnbVwbzEbBnbBnbVtbDXbOwbTybTzbRVbRWbMGbVubVvbVybVxbVzbMHbVBbVAbVDbVCbHsbVEbVFbHsbHtbHtbVGbSibVIbVHbVKbVJbVLbVLbVNbVMbVObFObSMbSLbSObSNbSPcrAcrAcrAcrAcrAbSRbSQbSUbSSbSVbXAbSXbRtbXAbThbXAbJRcuobJSbTZbTYbUabUabUcbUbbWgbUdbUfbUdbWibWibWjbWjbWjbWjbIabIabIabIabIabWlbWnbLIbIabNVbNZbNXbWqbWqbPibOabLRctvbPkbPjcacbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGbRAbRAbWHbWHbWHbRGbRAbRAbRGbWIbWJbWKbRAbWMbWNbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbWPbTrbTqbTrbNRbWQbWRbKzbKzbKzbWQbKzbJfbKAbTsbWSbxbbWWbBnbzFbQdbBnbzJbLJbBnbBnbWUbDXbOwbTybWVbRVbWXbMGbXbbWYbWZbXabXdbMHbXcbXebXgbXfbXibXhbXjbFCaaaaaaaaabSibXpbXkbXlbXlbXmbXnbXobSibXrbXqbUhbPUbUjbUibUrbUkbUnbUmbUmbUmbUpbUobUmbUmbUqbUmbUmbUsbUnbUmbUmbUGbNubNtbUwbUvbUBbUybZfbUDbXNbUIbUIbUIbUJbWgbLRbUPbWqbWqbXYbXXbWqbXZbYbbYabYdbYcbWqbPlbYgbYfbYibYhbYlbYjbYjbYjbYjbYjcacbGjbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGbRAbRAbRAbRAbRAbYtbRAbRAbRGbPIbPIbPIbPIbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbYxbYwbYybYwbTubRSbUgbUgbUgbUgbUgbYCbYEbYDbTsbYFbxbbYGbYIbYHbYNbYJbYKbYLbYLbYLbYMbYMbYObTybYRbYQbRWbMGbYTbYSbYVbVvbYWbMHbYUbYXbZdbTJbZebQmbYYbFCaaaaaaaaabSibYZbZabZbbZcbXmbXnbXobSibZgbZJbURbUQbUTbUScyTcyTbUVbUUbUXbUWcyTbUYbUZbUZbVabUZbUZbUSbUVbUZbVcbVbbVdcyTbVPbVjbVRbVQbVTbVSbVVbVUbVXbVWbVZbVYbWcbWbbWcbWcbWebUNbZMbUNbZNbUNbZPbZObZObPCbPDbZRbZUbZTbZXbZVbVobZWbYzbYjcacbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcafcagcahcaibRAbRGbRAbRAbRGbRAcancakcaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbxbbxbbKBbKBbKBbKBbKBbxbbxbbKBbKBbKBbxbcamcamcamcascambYMcaocapcaqcatbYMbOwbTycawbMEbMEbMGbMGbMGbMGbMGbMNbMHbTJbTIcaubTJcavcaxbFCbFCbFCbFCbFCbSibSjbSibSibSibSibSibSibSibNvbFObWfbSLbWkbWhbWobWmbWscaAbWubWtbWxbWwbXGbWubWabWybWabWybWabWybWabWzbWAcrAbTZbWBbWDbWCbWFbWEbXNbXsbXubXtbXvcbdcbdcbecbdcbfcbicbfcbfcbfcbhcblcbjcbjcbkcbmcbocbnbZUcbpcbrcbqbYAcbsbYBbYjcacbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIbPIbPIbPIbPIbPIbRGbTobRAcbzbRAcbxcbycbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbDcbBbOccbCbOccbEcbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbGaabaaaaaaaaaaaacamcbIcbHcbKcbJbYMcbNcbLcbMcbRbYMbOwbTycbOcbPcbQbXwcbVcbTcbUcbWcbYcbXbXxcbZcccccbccfccdcceccgccjcchccibXybXzcclccmbEnccnbFOccoccpccrbFObXBbQVbXCcaAcaAbXDbXDcaAbXFbXEbZhbXHbZibXIbWabXKbXMbXLbXMbXObWabXPbWAbXRbWdbXSbXUbXTbXSbXSbWibXVbXWbXQbYkcbdccTccSccVccUccXccWcdbcbfccYccZcdacbjcbjcdccbocddcdfbPEcdhcdgcdicbucdkbYjcdndfcbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIcdlcdmcdpcdlcdobRGbRAbRAbRGbRAcdrcdqcdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdvcdtcducducducdtcdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacamcdycdxcdAcdzbYLcdBcdDcdCcdEbYMbOwbNwcdFbTybTybYmbYncdIcdJcclcdObYobYpcdMcdNcdNcdQcdPcdRcdNcdNcdTcdNcdNcdScclccmbEncdVcdUcdXbYqcdZcdYbFOchfbYrcaAbZjbYsbYsbXJbZhbZkbZnbZlcaBbZmbZpbZobZrbZqbZtbZsbZvbZubWAcuvchrbZwbZybZxbZAbZzbZBccQbXWbXQbZBcbdcezceyceBceAceDceCceGcbfceEccZceFceFcbjceHceJceIceLceKceNceMbGnceOceSbYjcaccLhbGpbGobGsaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGceRceRceRceRceRceTbRAbRAbRGbPIbPIbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceVceUceUceUceWaaaaaaaaaaaaaaaaaaaaaceXceZceYceZcfaaaaaaaaaacamcamcamcffcfbcdAcfcbYLcfdcbMcfecfgbYMbOwbNxbTicficflcfkbZDbZCbZFbZEbZHbZGbZIcfscftcftcfxcfvcfvcfvcfvcfvcfvcfvcJfcfycfzcfBbZLbZKbZYbZScabcaacadchfcajcaAcazcalcaCcaEcaEcaDcaGcaFcaIcaHcaKcaJcaMcaLcaOcaNbZvcaPcaQcuvbZzcaRcaTcaScaVcaUcaXcaWcaZcaYcaXcbdcgccgbcgecgdcghcgfcggcbfcgiccZceFceFcbjcgjcgmcgkcglcgncgpcgocgrcgqcgvbYjcaccgscgtcgscgucgycgucgucguaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGceRceRceRcgwcgxbRGbRAbRAbRGbRAbRAbRAcgzbRAcgAbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFcgBcgCcgDcgFbYPbYPbYPcamcgHcgGcgJcgIcgLcgKcgNcgMcgOcgOcgPbYMbTkcgQcgTcgScgScgUcbacgVcgScgWcgWcgYcbbcgZcgWcgWchacclcclchechcchcchcchccbcchcchcchfcbgchfchfchfchfchfchfchfcbvcbtcbScbwcckccaccsccqccucctccwccvbWaccxcczccyccBccAccDccCccEcuvccGccFccIccHccJchrbWibWgbWgbWgbWicbdcbdchMchQchOchPchOchRcbfchUchSchTchTcbjchVchXbTwbYjbYjbYjbYjbYjbYjbYjbYjcaccgscifchYchZciaciacibcguaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcicciccicciccidcidcieciecieciecijaabaabaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8983,49 +8983,49 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIclCclDclEbRGbRAclFbRGclGclIbRAbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcincincinceYbYPclJclMclKckncfbcfbclLclOclNclQclPclPclPclTcgQcgQcgQciCcgSclRcktclScktclVcgWckvckwclUckwclWcgWclYcHDclZchccmccmacmbcmechbcgXchcchdchgchfchfchichfchfchfcsLcbvchfchkchjchmchlcfEchncfGcfFchocfHchqchpchtchscDfchuchvcDfchxchwchzchychBchAchEchDcepchFcgachGclpclncmMcjGcjGcjGcmQcmOclpcbjcmPccZclrclrcbjcmTbUzcbnbPtcmScmVcmUcgscmWcmYcmXcnbcmZcnacnfcgucnccndcnecgucgscgscgscgEcgEcgEcgEcgEaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacnkcieclBciecieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIbPIbPIbPIbPIbPIbPIbPIbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabafOcgQcngcngcgQcngcngcgQaaaaaacgFcnhcnicnjcgFbYPbYPbYPcamcnmcnlcnocnocnocamcamcgQcnncnpcnrcnqcgQcnscntcgSclRcktcktcktcnvcgWckvckwckwcnuchHcgWcpicHDcnAchcchcchcchcchcchIchcchccnCdgCcsLcsLcsLchfcABchJcsLcbvchfchLchKciEchNcfEciFcfGcfFcfIcfHciOciJciQciPcDfciRciScDfciUciTchrciVciXciWchrchrcepciYcjaciZclpcjbcodcoicoicoicodcogcodcodcohcojclrclrcbjcokclscbncomcolcooconcorcopcoqcoqcotcoscovcoucoxcowcozcoycoCcoAcoBcoDcoEcoFcoHcoGcoIaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaacidciecoMcoJcoJckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaacgQcoKcoLcgQcoKcoLcgQaaaaaacoOceZcoNceZcoQaaaaabaaacamcamcamcamcamcamcamcoPcgQcoScoRcoUcoTclPcoVcoWcgScoYcoXcpfcktcjccgWcjdckwcjfcjecjgcgWcjicjhcjkcjjcpqcpqcpqcpqcjlcpmcppcpocjncjmcjmcjocjqcjpcjscjrcjtchfcjwcjucjycjxcjAcjzcjCcjBcjCcjDckrcjEckxcksckzckyckAcDfckBcuvckCcjvckDcmDckFckEciYckJckLcgacpRcpTcpRcpUcpWcpVcpRcpXcpYcodcqacpZcdacbjcbjcqccqbcqfcqdcqecqicqgcqhcqlcqjcqkcqncqmcqpcqocqtcqqcqrcqqcqscqrcqrcqucqwcqvcqycqxcqCaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacieciecqDckbckbckbckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOaaaafOcgQcqzcoLcgQcqzcoLcgQaaaaaaaabaabaabaabaabaabaabaabaabcgQcoLcqAcqBcgQcqEcqGcgQcqHcgQcgQcqFcgQcgQcqPcgScqRcqIcqJcqKcqLcgWckMcqOcqScqQcqTcgWckOckNckPcJZcsDcsDcsDcsDcsDcrdcqZcrackQchfcucckRcsLckSckTcsLcsKchfckVckUckXckWcCWckYclackZclbcDfcldclcclfclecDfcDfcDfcDfclhclgckCchCcljclicllclkciYcmdcgacmfcpRcrNcrQcrLcrMcrLcrTcrOcrPcodcbjcrUcbjcbjcrRcrSclsbLRbPtcgscrVcgscgscrWcrYcrXcsacrZcsdcsbcsfcsecsgcsecsgcshcsgcsicgEcsncvdcsqcsraabaabaabaabaabaabaabaabaaaaaaaaaaaaaaacieckbckbckbckbckbckbcssckbcstckbckbckbckbckbciecieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOaaaafOcgQcqzcoLcgQcqzcoLcgQaaaaaaaabaabaabaabaabaabaabaabaabcgQcoLcqAcqBcgQcqEcqGcgQcqHcgQcgQcqFcgQcgQcqPcgScqRcqIcqJcqKcqLcgWckMcqOcqScqQcqTcgWckOckNckPcJZcsDcsDcsDcsDcsDcrdcqZcrackQchfcucckRcsLckSckTcsLcsKchfckVckUckXckWcCWckYclackZclbcDfcldclcclfclecDfcDfcDfcDfclhclgckCchCcljclicllclkciYcmdcgacmfcpRcrNcrQcrLcrMcrLcrTcrOcrPcodcbjcrUcbjcbjcrRcrSclsbLRbPtcgscrVcgscgscrWcrYcrXcsacrZcsdcsbcsfcsecsgcsecsgcshcsgcsicgEcsncrwcsqcsraabaabaabaabaabaabaabaabaaaaaaaaaaaaaaacieckbckbckbckbckbckbcssckbcstckbckbckbckbckbciecieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcsjafOaabaMraMrafOcgQcgQcqFcgQcgQcqFcgQcgQcgQcngcngcngcgQcgQcgQcgQcgQcgQcgQcoLcskcslcgQcsmcgQcgQcsucgQcsocspcoLcgQcsvcgScsycsxcszclRcmgcgWcswckvcsEcsCcmhcgWcsIcsHcmicsDcsDcsNcsOcsGcmjcsQcsJcsKcsLcsUchfcmkcsLckSckTchfchfchfcCWcCWcmlcCWcCWcxhcnwcmmcxhcDfcDfcDfcDfcDfcDfcmncmpcmocmrcmqcmtcmscmvcmucmxcmwciYcgacgaaqEcpRcttctxctwctyctwctActzcrLctuctvctBbLRctCbLRcrSclsbLRbIictFctHctGcgscgscgscgscgsctIcqkctKctDcsccqkctEcqkclucqkctLcgEctOctQctPcgEaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaciectJctJctJctJctJctJctSckbctTctJcstckbckbckbckbcieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOafOcngcoLcoLcoLcoLctMctNcoLcoLcoSctUctUctVctUctUctUctUctUctUctUctUctUctUctUctUcoRcgQcskcqzctWcgQcsvctRctRctRctRctRctRcgWcgWcgWcgWcgWcgWcgWcuactXcmBcmzcmEcmCcmFcmFcmGcuicsJcmHcsLcubcuccmIcsLckScmJchicsLcsLcsKcCWcmLcmKcmNcCWcHWcnxcnBcnzcnEcnDcnGcnFcnIcnHcnKcnJcnMcnLckCcnNcnPcnOcnRcnQciYbQXcgacgacpRcuGcnTcnScnUcrLcuKcuJcuOcuLcuScuRcuVbLRcuXcrSclscuMbIibPAcuNcuYcuPcuQbGGbGGcgscvccvecuTcuUcvfcuWcvgcvicuZcvacvbcgEcvjdoKdoFcvraaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaacvscjZcjZcjZcjZcjZcjZcjZcvhcvtckbckbckbckbcvvckccieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOaabaabafOcngcvkcvlcvmcoLcoLcvncoLcoLcsucgQcgQcgQcgQcgQcgQcqFcgQcgQcgQcgQcvocvocvocvocvocvocvocvocvocgQcsvcvpaaaaaaaaaaaacvqcvwcvzcvycvucvAcvDcvxcvJcvGcvKcvBcvCcvLcvEcvEcvFcvMcvHcvIcvIcvIcvIcvNcvIckScmJchfcnVcKOdercCWcnXcnWcnZcnYcobcoacoccoccofcoecpacoZcpccpbcpecpdcphcpgciYciYciYciYciYciYciYciYcpkcpjcpRcwjcplcwqcptcpncpvcpucpRcpRbIicwpbIibIibIicwvcwJcwwbIibGGcuNcwKcwucuQcuQcuQcgscgscgscgscgscgscgscgscgscgscgscgscgEcgEcgEcgEcgEaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaciecoJcoJcoJcoJcoJcoJcwLckbcoMcoJcwMckbckbckbckbcieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcgQcwxcwxcwxcwxcwxcwxcwycwxcsucwzcgQcoLcwAcwBcwCcoLcwCcwDcwEcwBcvocwFcwFcvocwGcvocwHcwIcvocoLcqPcngaaacwPcwUcwQcwVcwNcwOcwWcwXcwRcwScwTcwZcwYcxbcxacxdcxccxfcxecxjcxgcvHcxkcxmcxmcxmcxocvIckScmJchfdgmcQkcQkcQkcQkcpwcpxcQkcpycpycpycpycQkcpzcpBcpAcQkcQncQncpCcpDcuocukbQXbQXcpEbQXbQXbQXbQXbQXcpFcpRcpRcpRcpRcpGcpRcpRcpRcxIcpHcpIcxKcxUcxMcxNcxOcxWcxQcxNbGGcuNcylbGGbGGcxScxZcyactFbGGbGGbGGbGGbGGbGGbGGcxVcymbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacieckbckbckbckbckbckbcssckbcwMckbckbckbckbckbciecieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxXcxYcxYcxYcxYcxYcxYcyocyncybcyccydcyecyfcwycsucygcgQcoLcoLcwBcoLcoLcoLcwDcqBcwBcvocwFcyicwIcwIcyjcwIcykcvocypcqPcngaaacyrcytcyscyvcyqcwOcywcyAcyycyucvxcyCcsHcyEcvBcyxctYcyFctYcyzcyGcyBcyHcyDcyDcyDcyIcvIckScmJchfcQkcQkcpKcpJcQkcQkcQkcQkcpMcpLcpOcpNcQkcQkcpPcQkcQkcTBdgmbQVcpScuvcqMcqMcqMcqMcqMcqMcqNbQXcqWcqUcqXcqXcqXcqYcrccrbcrbcrfcrbcrbcrbcrgczmczmcricrhcrjczwczzczyczBczAczCczCczDczCczCczCczCczGczIczCczCczCczOczLbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacieciecqDckbckbckbckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczEczFczFczFczFczPczHczQczJczKczKczRcwxcsucoLcqFcoLcoLcoLcoLcoLcoLcoLcoLcoLcvocvocwIczMcwIcvocwIczMcvoczNcsvcngaaacyrczTczSczVczUczXczWczYczUczUcAacAccAbcAdczZczZcAecAfctYcAhcAgcyBcyDcyDcyDcyDcAicvIcrkcmJcrlcQkcrmcrocrncUTcrpcrrcrqcrtcrscrvcrucQncrwcrycrxcQkcrzcsLcukcrBcuvcrEcrCcrGcrFcrHcqMcqMbUxcrJcrIcrKcrKcrKcrKcsBcsAcsMcsFcsRcsPcsPcAKcAKcAJcALcAVcAYcAWcAPcAPcAQcAZcAPcAPcAPcAPcAPcAPcAPcAPcAPcAPcAPcAPcAScBecAUbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacnkcieciectJctJckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBicBgcAXcBjcAXcBmcBacBbcBccBdcBncwxcsucgQcgQcBfcngcngcngcngcngcngcngcBocvocwIcwIcwIcwIcBhcwIcwIcvocygcqPcngaaacyrcBrcBqcBkcBlcwOcBscBucBtcBpcvxcyCcsHcnycBvcsDcBzcsDcvBcvBcvBcBDcBBcyDcyDcBFcBEcvIckScmJcsLcQkcsScsVcsTcsXcsWcsZcsYctbctactdctcctfctecthctgcQkcsLcJGbQVctjctictlctkctnctmctpctocqMctqctrcfZcepcepcepcepcepctsctsctscepcepaaaaaaaaaaaacBRcBScCacBUcAPcCdcCfcCecCgcBZcChcCbcCccCicCkcCjcCmcClcCncAPcAScCocCrcCpcCscCscCscCscCscCscCscCscCscCscCscCscCscCscCscCscCscCscCvcCucieclBcieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBicCwcCxcCqcCyczJcCtcCzcCBczJcCDcCCcCEcskcgQcoLcngaaaaaaaaaaaaaaacngcoLcCFcwFcCAcwIcwIcwIcwIcCGcCIcCHcCJcngaaacCMcwUcCNcwVcCOcwOcwOcCRcCPcCKcCLcCUcCTcCVcBvcsDcCYcCQcCZcCScDacvHcDccyDcyDcyDcDdcvIckScmJctZcQkcudcufcuecUTcugcujcuhcumculcupcuncQncuqcuscurcQkcsLcrDcrDcuucutcuxcuwcuzcuycuBcuAcqMcuCcuDbQXcepaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDqcDycDAcDzcDucDBcDwcDwcDCcDwcDwcDwcDwcDwcDEcDDcDGcDFcDHbGHcDIcjYbGHbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciecDJcDMcDKciecieckbckbcDNckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBicDPcAXcDUcAXcDVcDLcDXcDZcBbcDOcwxcEacqBcgQcqzcvpaaaaaaaaaaaaaaacvpcDQcvocwFcwFcwFcDScDTcwIcEbcvocoLcqPcvpaaaaaaaaaaaacvqcEdcDWcEecEecvxcDYcvxcEfcsHcnycEicEjcEccElcEkcEkcEkcEscEgcyDcEhcyDcEtcvIckScmJcuEcQkcuFcuIcuHcQkcvOcUTcvPcvQcQncQncQncQkcQkcQkcQkcQkcsLcrDcvRcvTcvScuxcvUcvWcvVcvYcvXcqMcsLctrbQXcepaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDqcEHcEOcENcERcEQcEXcEVcEZcDwcDwcEPcDwcDwcDEcDGcDGcDGcFbbGHcFcbGGbGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccEScETclAcidciecieckbckcckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczEczFczFczFczFczPczHczQczJczKczKczRcwxcsucoLcqFcoLcoLcoLcoLcoLcoLcoLcoLcoLcvocvocwIczMcwIcvocwIczMcvoczNcsvcngaaacyrczTczSczVczUczXczWczYczUczUcAacAccAbcAdczZczZcAecAfctYcAhcAgcyBcyDcyDcyDcyDcAicvIcrkcmJcrlcQkcrmcrocrncUTcrpcrrcrqcrtcrscrvcrucQncrxctecrycQkcrzcsLcukcrBcuvcrEcrCcrGcrFcrHcqMcqMbUxcrJcrIcrKcrKcrKcrKcsBcsAcsMcsFcsRcsPcsPcAKcAKcAJcALcAVcAYcAWcAPcAPcAQcAZcAPcAPcAPcAPcAPcAPcAPcAPcAPcAPcAPcAPcAScBecAUbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacnkcieciectJctJckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBicBgcAXcBjcAXcBmcBacBbcBccBdcBncwxcsucgQcgQcBfcngcngcngcngcngcngcngcBocvocwIcwIcwIcwIcBhcwIcwIcvocygcqPcngaaacyrcBrcBqcBkcBlcwOcBscBucBtcBpcvxcyCcsHcnycBvcsDcBzcsDcvBcvBcvBcBDcBBcyDcyDcBFcBEcvIckScmJcsLcQkcsScsVcsTcsXcsWcsZcsYctbctactdctcctfctgcthcuqcQkcsLcJGbQVctjctictlctkctnctmctpctocqMctqctrcfZcepcepcepcepcepctsctsctscepcepaaaaaaaaaaaacBRcBScCacBUcAPcCdcCfcCecCgcBZcChcCbcCccCicCkcCjcCmcClcCncAPcAScCocCrcCpcCscCscCscCscCscCscCscCscCscCscCscCscCscCscCscCscCscCscCvcCucieclBcieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBicCwcCxcCqcCyczJcCtcCzcCBczJcCDcCCcCEcskcgQcoLcngaaaaaaaaaaaaaaacngcoLcCFcwFcCAcwIcwIcwIcwIcCGcCIcCHcCJcngaaacCMcwUcCNcwVcCOcwOcwOcCRcCPcCKcCLcCUcCTcCVcBvcsDcCYcCQcCZcCScDacvHcDccyDcyDcyDcDdcvIckScmJctZcQkcudcufcuecUTcugcujcuhcumculcupcuncQncurcvdcuscQkcsLcrDcrDcuucutcuxcuwcuzcuycuBcuAcqMcuCcuDbQXcepaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDqcDycDAcDzcDucDBcDwcDwcDCcDwcDwcDwcDwcDwcDEcDDcDGcDFcDHbGHcDIcjYbGHbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciecDJcDMcDKciecieckbckbcDNckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBicDPcAXcDUcAXcDVcDLcDXcDZcBbcDOcwxcAFcqBcgQcqzcvpaaaaaaaaaaaaaaacvpcDQcvocwFcwFcwFcDScDTcwIcEbcvocoLcqPcvpaaaaaaaaaaaacvqcEdcDWcEecEecvxcDYcvxcEfcsHcnycEicEjcEccElcEkcEkcEkcEscEgcyDcEhcyDcEtcvIckScmJcuEcQkcuFcuIcuHcQkcvOcUTcvPcvQcQncQncQncQkcQkcQkcQkcQkcsLcrDcvRcvTcvScuxcvUcvWcvVcvYcvXcqMcsLctrbQXcepaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDqcEHcEOcENcERcEQcEXcEVcEZcDwcDwcEPcDwcDwcDEcDGcDGcDGcFbbGHcFcbGGbGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccEScETclAcidciecieckbckcckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEUcEUcEUcEUcEUcwxcFdcEWcEWcEWcEWcEWcFecEYcEYcEYcEWcEWcEWcEWcEWcEWcEWcEYcEYcEYcvocvocvocvocvocvocvocqFcFfcFacFacFacFacFacvqcvxcvxcvxcvxcvxcvxcvxcFgcsHcnycFhcFjcFicFlcFkcFrcFocFucFtcFwcFmcFncFBcvIckScmJcKOcBPcvZdcCcQkcQkcwacwbcUTcwdcwccwfcwecwhcwgcwicQkcPccnVcrDcwkcwmcwlcuxcuxbUAcwncwscwrcqMcsLctrbQXctsaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaacDqcFNcFPcFOcFKcFQcFMcFRcFScDwcDwcDwcDwcFTcFYcFUcGacFZcGdbGHcFcbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacicciccicciccidcidcieciecieciecijaabaabaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaacFVcFWcFXcGecFXcGfcFWcGgcGbcGccGccGicDRcGkcGjcGmcGlcGocGncGqcGpcGpcGrcGpcGscGtcGtcGvcGucGxcGwcGycGwcGwcGwcGxcGwcGwcGzcGBcGAcGDcsHcnycGJcGNcGMcGCcsDcGOczZcGEcGFcGGcGHcxicwtcGKckScmJcxlchfdcDcxpcxncQkcxqcxrcUTcxtcxscxvcxucUTcxwcxxcQkcsLcBwcrDcxycmycxzcxBcuxcBPcBPcBPcBPchfcebctrbQXctsaaaaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaacBScBRcHmcHgcBScHncHicHjcHvcHtcHxcHwcDwcDwcHocHpcHqcHrcHsbGHcFcbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFVcFWcFXcFXcFXcGfcFWcHycFXcANcFXcHBcHAcHEcHCcHzcHucHzcHFcHJcHDclXcHDcHDcHKcnAcnAcHDcHGcHDcHDcHDcHDcHDcHDcHDcHDcHDcHDcHHcHIcHMcHLcHOcHNcHUcHTcHPcHQcHRbWTcdGcaycHVcHYcxDcxCcGKckScmJctZcucdducxEddwcQkcxFcxGcUTcxJcxHcxPcxLcUTcxRcxTcQkcyJcsLcrDcyKcyMcyLcpQcrDcyNcyNchfcyOcyPcebctrbQXctsaaaaaaaaaaabaabaabaaaaaaaaaaaaaaaaaaaaacBRcIzcIBcIAcBRcAPcAPcAPcAPcAPcAPcICcHwcIDcIHcIFcIEcAPcAPbGHcFcbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFVcIIcFXcIGcFXcGfcIJcIMcIKcINcILcITcIPcIOcIUcIQcIRcIScIVcIXcIWcJacIYcJbcqVcIZcqVcIXcJccIXcIXcIXcIXcIXcIXcIXcIXcIXcIXcJdcHDcKmcJecJicJhcJgcJjcJodcdcfjcfhcgRcfucJycJpcyRcyQcGKckScmJcsLchfchfcySchfcQkcQkcQkcQkcyVcyUcyXcyWcUTcyYczacyZcyJcsLchfchfchfchfchfchfcsLcyNchfczbchfcsLctrbQXcepaaaaaaaaaaaaaabcBRcBRcBRcBRcBRcBRcBRcBRcBRcJJcJNcJMcxNcJKcJKcJLcBRaabcAPcAPcJOcAPcJTcJRcJPcAPcJQcuQcFcbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJUcJScEWcEWcEWcEWcJYcEYcEYcEYcEYcKacEYcJVcJVcJVcJWcJXcKdcEYcJZcKgcKbcKbcKicKbcKjcKbcKbcKecKfcKbcKbcKfcKfcKfcKbcKbcKbcKbcKkcKhcLKcKlcKtcKqcKxcKndcgcKncKncKncKnchWcKycKrczccKzcGKczdczecsLczfcsLcYiczgcuccTBcKOcyZcQkcQkcQkcQkcQkcQkcQkcQkcsLcKOchfczhczjcziczkchfczlchfchfchfchfchfctrbQXcepaaaaaaaaaaaaaaacBRcKPcKQcKRcKWcKVcKYcKXcxNcLccLfcLdcxNcJKcKZcLacBRaabaabcLbcLkcLjcLecLlcLgcLbbGGbGGcFccLhbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalwalvalvalwalvalvaabamhaabayiaaaayiayicLicLncLmcLmcLmcLpcLocEYbTmcLrcGhcLtcLscLucEYcLycLwcKfcLGcLBcLxcLIcLzcLAcLJcLCcLDcKbcLCcLEcLFcLGcLGcLHcKbcLLcVbcHJcLNcnycLTcLMdcicLOdcjcjRdcjcwocmRcLXcLWczncMacGKcGKcbvcsLcnVcsLcYicsLcuEcsLcsLctZcsLcsLcsLcKOctZczocsLcyJcsLcsLcBQcsLczqczpczrcyJczschfcztchfczuchfczvbQXcepaaaaaacepcepcepcBRcJKcMgcJKcMlcMjcEHcJNcxNcxQcMocxQcxNcJKcJKcMkcBRaabaaacLbcMucMmcLecLecMncLbcMpbGGcFcbKlcMsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaaaaabaabaaaaabaabaaaaaaaabaabaabaabaabcLicLicMqcLicLicMrcMvcEYcEYcEYcEYcEYcEYcEYcEYcLicLwcKfcMtcMxcMwcMycMycMycMycMCcMzcMDcLGcMAcLGcLGcMBcLGcMEcMGcMFcMHcLNcnycMLcHQcMPcLOdcBcHSdcEcLOdcGcMRcMNcAjczxcAlcAkcAncAmcMXcAmcApcAocArcAqcrecrecAscrecAtcsLcsLcsLcAucyJcyJcsLcBQcAvcAvcAwcAycAxcAzchfcAAcAvcACchfcADcsLcBPcepcepcepbQXcAEcBRcJKcJKcJKcNmcNlcNocNncNqcNpcNscNrcxNcNtcNycNxcBRaaaaaacLbcNzcLecNucLecNvcLbbGGbGGcFccMsbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNwaaaalwaaacNFcNEcNMaaacNFcNEcNMaaacNFcNEcNMaaaaaacLicNAcNBcNCcLicNDcNNcLmcLmcLmcLmcLmcLmcLmcLmcLmcNRcKfcNGcLGcMBcNHcLGcLGcLGcNIcLGcNGcNGcLGcLGcLGcLGcNJcNKcMGcNLcHDcNScyEcHQcHQcNTcLOcNOcNPcNQcLOcNUcHVcNVcAGcAFcAHcGKcsKcsLcNYcsLcAIdfMcAOcAMcARcARcARcARcBxcATcBycBycBycBycBAcyJcMfczqcyJcyJcebcsLcsLcBCcAvcAvczqcBCcBYcsLcsLcBGcBHciYbQXcBIcBRcxNcxNcxNcxNcOkcEHcOlcOncOmcOpcOocxNcOqcOtcOrcBRaaaaaacLbcOvcOucOscLecODcLbcOCbGGcFcbGHaabaabaabaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaacNFcOFcNMaaacNFcOFcNMaaacNFcOFcNMaaaayicLicNBcNBcNBcLicLicOwcOxcLicLicOxcOxcLicLicOxcOxcLwcKfcNGcOycLGcOzcOAcOBcOBcMAcLGcNGcOGcLGcLGcLGcLGcOHcOEcOJcOIclXcOKcOMcOLcOYcORcLOcNOcOZcONcLOcOOcHVcGKcGKcGKcBJcGKcZScOTcOUcOTcOWcOTcOTcOTcOTcOTcBKcBPcBPcBPcBPcBPcBPcBPcBLcnVcBQcsLcBOcBMcBTcsLcsLchfcBWcBVcBXchfcDbcCXcPhcDecDgciYbQXcDhcBRcKPcKQcKRcPmcPlcNocPncPjcPocPqcPpcPscPrcPpcPtcBRaaaaaacLbcLbcPycPAcPzcLbcLbbGHbGGcPBcuQcuQcuQbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaayiaabcNFcOFcNMaaacNFcOFcNMaabcNFcOFcNMaaaaabcLicMrcPucNDcLiaaaaabaaaaaaaaaaaaaaaaabaaaaaacOxcLwcKbcPvcLGcPwcPxcPCcPEcPDcPEcPFcPEcPGcPHcLCcPIcNGcNGcNKcPLcPJcPNcPMcPPcPKcPVcPSbgYcPObHWcPQcPRcPYcPTcPUcPUcQacDjcDicQdcPZcQfcDkcQhcQgcDlcQicQocQmcQpcQpcQpcQpcQpcQpcQqcBPcBLcsLcDmchfchfcBQcBQchfcDnchfchfchfchfchfciYcDobQXctrbQXciYcDpbQXcBRcJKcKZcJKcQxcMjcEHcQzcQAcQrcQscEHcEHcQtcEHcQBcBRaaaaabaabcLbcLbcQvcLbcLbaaabGHbGGcFccuQcQwcQCbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacNFcOFcNMaabcNFcOFcNMaaacNFcOFcNMaabaaacLicLicOxcLicLiaaaaabaabaaaaabaaaaabaabaaaaaacQycQDcKbcQFcQGcQGcQHcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcJZcQIcJZcQEcJZcFacQKcxAbHYcQNcQNcQNcyhcQScPTcQLcQMcDrcDtcDscQQcPZcDxcDvcQTcEmcEncRacRdcRcaabcQZcQZcQZcQZcQZcRecBPcEocsLcMfcsLcyJcyJcsLcsLcsLchfcEpchfcsKcEqciYciYciYctrbQXciYciYciYcBRcJKcJKcJKcRDcRwcNocRHcRIcRtcRucRvcRvcRJcEHcRxcBRaabaabaaaaaaaaacRyaaaaaaaaabGHbGGcFccuQbGGbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvayiaaacNFcOFcNMaabcNFcOFcNMaaacNFcOFcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcRzcRAcRAcRAcRAcQycRBcLwcRCcRKcREcREcRFcRGcRMcRLcRLcRLcRLcRNcRPcROcRQcRQcRScRScRQcRTcRVcRUcRRcRRcRYcRWcTecSabHZcRXcRXcShcRZcSjcSbcSkcErcSdcSecPZcEucSlcSmcEvcSpcSocSrcSqcQpcSncSucSscSwcQZcRecBQcEwcsLchfcExchfcEycEAcEzcyJchfcECcEBcsLcsLciYcEDcgactrbQXciYcEFcEEcBRcxNcxNcxNcxNcSNcEHcQzcEIcSOcQscEHcSGcSHcSHcSPcSJcSKaabaaaaaaaaaaaaaaaaaaaaabGHbGGcPBbGGbGGcSLbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcSQaabaabaabcSQaabaaaaabcSQaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcSRcTacSTcRAcTbcTccNRcRCcRCcSScTdcKbcKbcMvcSUcSUcSUcSUcSVcSWcSXcSWcSWcSWcRRcRRcSYcSZcTfcTicTgcRXcTjcTecRXcRXcRXcRXcTkcPTcTlcThcQVcErcSdcSdcPZcEucSlcTncEJcTqcTpcTucTraabcTocTvcSwcTwcQZcRecBQcELcEKcFpcEMchfcsLcsLcsLcFqcMfcFscyJcFscsLciYbQXcgactrcFvciYbQXcFvcBRcKPcKQcKRcTJcPlcNocTKcTNcTMcTGcTGcTHcTIcTPcTOcBRaabaabaabaaaaaaaaaaaaaaaaaabGHcTLcFcbGHbGHbGHbGHbGHaabaabaabcTQcTQcTQcTQcTQcTQaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcTRcTScTScTUcTTcTVcTVcTVcTTcTVcTVcTVcTTcTVcTVcTVcTWcTScTScTScTScTScTXcTZcTYcUbcUacUecUdcUgcUfcNBcLwcUccRCcKbcKbcKbcUhcMvcSUcUkcUjcUmcFxcUicFycFAcFzcUrcFCcUucUscUxcUwcUycFCcUtcUzcTecUvcRXcRXcRXcUAcPTcUCcUCcSdcFEcFDcFGcFFcFIcFHcFLcFJcUPcUNcUScSqcUVcSncUWcSwcSwcQZcRecBQcGIcsLctZcmJchfchfcMfchfchfchfcyJcyJcyJcsKchfchfchfctrbQXcGLbQXbQXcBRcJKcMgcJKcVecMjcEHcVfcUXcUYcEHcUZcVgcxNcxNcxNcBRaaaaaaaabaabaaaaaaaaaaaaaaabGHcJQcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcVkaabaaaaabcVkaabaaaaabcVkaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcVlcVdcVmcRAcVncNBcNNcTccTccTccTccVocTccUfcSUcVhcVicVjcGPcGRcGQcGTcGScGVcGUcGXcGWcGZcGYcHbcHacUtcTjcTecVxcVDcRXcRXcVFcPTcVGcVHcSdcVIcQPcVJcVEcVLcVKcVOcVMcVQcVPcVQcVRaabcQZcQZcQZcQZcQZcRecBPcHcctZctZcmJcKOcAucsLcyJcsLcMfcsLcHdchfchfchfcHechfctrbQXciYbUxcHfcBRcJKcJKcJKcWicWhcWpcWjcWqcWfcEHcEHcEHcEHcWgcWrcWwaaaaaaaaaaabaabaaaaaaaaaaaabGHbGHcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwaabcNFcWxcNMaaacNFcWxcNMaaacNFcWxcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabcRzcRAcRAcRAcRAcWkcWlcWmcNBcWncNBcNBcMvcWocNBcSUcWzcWycVjcHhcUicWscWtcWucWucHkcWDcWCcWFaYtaZBcHkcWBcWHcWJcWIcWLcWKcWPcWMcWScWQcUGcWTcWUcWNcWOcWVcWWcWRcWYcWXcXbcXacXdcXccQpcSncXecWZcWZcQZcRecBPcGIcsLcsLcHlchfchfchfcyPcyPchfchfchfchfcHZcIacsLchfctrcIccIbcIbcIbcXmcXmcXmcXmcXmcXscXvcXtcXzcXxcNocXAcNocXAcNocXBcWwaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHcFcbGHaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNFcWxcNMaabcNFcWxcNMaaacNFcWxcNMaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucXCcXucXucSUcXwcXDcVjcHhcUicXycUicUicXEcRRcXGcXFcUwcIdcIecRRcXLcRXcTecXMcXOcXNcWPcXPcXJaZCcXRcXQcXVcXScXRcXWcXYcXXcYacSdcXTcXUcYccYbaabcTocYfcIfcXZcQZcRecBQcIgdfMdfMcIhcIichfcIkcIjcImcIlcIocInchfcsLcIpcsLchfctrcIqciYbQXcIrcIsciYcIucItcBRcYqcYscYrcYvcYqcYscYwcYxcYqcYscYycBRaabaabaabaabaabaabaabaabaabaabbGHcFcbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaacFVcFWcFXcGecFXcGfcFWcGgcGbcGccGccGicAGcGkcDRcGmcGlcGocGncGqcGpcGpcGrcGpcGscGtcGtcGvcGucGxcGwcGycGwcGwcGwcGxcGwcGwcGzcGBcGAcGDcsHcnycGJcGNcGMcGCcsDcGOczZcGEcGFcGGcGHcxicwtcGKckScmJcxlchfdcDcxpcxncQkcxqcxrcUTcxtcxscxvcxucUTcxwcxxcQkcsLcBwcrDcxycmycxzcxBcuxcBPcBPcBPcBPchfcebctrbQXctsaaaaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaacBScBRcHmcHgcBScHncHicHjcHvcHtcHxcHwcDwcDwcHocHpcHqcHrcHsbGHcFcbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFVcFWcFXcFXcFXcGfcFWcHycFXcANcFXcHBcEacHEcGjcHzcHucHzcHFcHJcHDclXcHDcHDcHKcnAcnAcHDcHGcHDcHDcHDcHDcHDcHDcHDcHDcHDcHDcHHcHIcHMcHLcHOcHNcHUcHTcHPcHQcHRbWTcdGcaycHVcHYcxDcxCcGKckScmJctZcucdducxEddwcQkcxFcxGcUTcxJcxHcxPcxLcUTcxRcxTcQkcyJcsLcrDcyKcyMcyLcpQcrDcyNcyNchfcyOcyPcebctrbQXctsaaaaaaaaaaabaabaabaaaaaaaaaaaaaaaaaaaaacBRcHAcHXcHCcBRcAPcAPcAPcAPcAPcAPcICcHwcIDcIHcIFcIEcAPcAPbGHcFcbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFVcIIcFXcIGcFXcGfcIJcIMcIKcINcILcITcIzcIBcIAcIQcIRcIScIVcIXcIWcJacIYcJbcqVcIZcqVcIXcJccIXcIXcIXcIXcIXcIXcIXcIXcIXcIXcJdcHDcKmcJecJicJhcJgcJjcJodcdcfjcfhcgRcfucJycJpcyRcyQcGKckScmJcsLchfchfcySchfcQkcQkcQkcQkcyVcyUcyXcyWcUTcyYczacyZcyJcsLchfchfchfchfchfchfcsLcyNchfczbchfcsLctrbQXcepaaaaaaaaaaaaaabcBRcBRcBRcBRcBRcBRcBRcBRcBRcIOcJNcIPcxNcJKcJKcJLcBRaabcAPcAPcJOcAPcJTcJRcJPcAPcJQcuQcFcbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJUcJScEWcEWcEWcEWcJYcEYcEYcEYcEYcKacEYcJVcJVcJVcJWcJXcKdcEYcJZcKgcKbcKbcKicKbcKjcKbcKbcKecKfcKbcKbcKfcKfcKfcKbcKbcKbcKbcKkcKhcLKcKlcKtcKqcKxcKndcgcKncKncKncKnchWcKycKrczccKzcGKczdczecsLczfcsLcYiczgcuccTBcKOcyZcQkcQkcQkcQkcQkcQkcQkcQkcsLcKOchfczhczjcziczkchfczlchfchfchfchfchfctrbQXcepaaaaaaaaaaaaaaacBRcKPcKQcKRcKWcIUcKYcKXcxNcJkcJmcJlcxNcJKcKZcLacBRaabaabcLbcLkcLjcLecLlcLgcLbbGGbGGcFccLhbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalwalvalvalwalvalvaabamhaabayiaaaayiayicLicJncLmcLmcLmcLpcLocEYbTmcLrcGhcLtcLscLucEYcLycLwcKfcLGcLBcLxcLIcLzcLAcLJcLCcLDcKbcLCcLEcLFcLGcLGcLHcKbcLLcVbcHJcLNcnycLTcLMdcicLOdcjcjRdcjcwocmRcLXcLWczncMacGKcGKcbvcsLcnVcsLcYicsLcuEcsLcsLctZcsLcsLcsLcKOctZczocsLcyJcsLcsLcBQcsLczqczpczrcyJczschfcztchfczuchfczvbQXcepaaaaaacepcepcepcBRcJKcMgcJKcMlcJrcEHcJNcxNcxQcMocxQcxNcJKcJKcMkcBRaabaaacLbcMucMmcLecLecMncLbcMpbGGcFcbKlcMsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaaaaabaabaaaaabaabaaaaaaaabaabaabaabaabcLicLicMqcLicLicMrcMvcEYcEYcEYcEYcEYcEYcEYcEYcLicLwcKfcMtcMxcMwcMycMycMycMycMCcMzcMDcLGcMAcLGcLGcMBcLGcMEcMGcMFcMHcLNcnycMLcHQcMPcLOdcBcHSdcEcLOdcGcMRcMNcAjczxcAlcAkcAncAmcMXcAmcApcAocArcAqcrecrecAscrecAtcsLcsLcsLcAucyJcyJcsLcBQcAvcAvcAwcAycAxcAzchfcAAcAvcACchfcADcsLcBPcepcepcepbQXcAEcBRcJKcJKcJKcNmcJJcNocNncNqcNpcNscNrcxNcNtcNycNxcBRaaaaaacLbcNzcLecNucLecNvcLbbGGbGGcFccMsbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNwaaaalwaaacNFcNEcNMaaacNFcNEcNMaaacNFcNEcNMaaaaaacLicNAcNBcNCcLicNDcNNcLmcLmcLmcLmcLmcLmcLmcLmcLmcNRcKfcNGcLGcMBcNHcLGcLGcLGcNIcLGcNGcNGcLGcLGcLGcLGcNJcNKcMGcNLcHDcNScyEcHQcHQcNTcLOcNOcNPcNQcLOcNUcHVcJMcKocKccAHcGKcsKcsLcNYcsLcAIdfMcAOcAMcARcARcARcARcBxcATcBycBycBycBycBAcyJcMfczqcyJcyJcebcsLcsLcBCcAvcAvczqcBCcBYcsLcsLcBGcBHciYbQXcBIcBRcxNcxNcxNcxNcKpcEHcOlcOncOmcOpcOocxNcKscKVcKTcBRaaaaaacLbcOvcOucOscLecODcLbcOCbGGcFcbGHaabaabaabaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaacNFcOFcNMaaacNFcOFcNMaaacNFcOFcNMaaaayicLicNBcNBcNBcLicLicOwcOxcLicLicOxcOxcLicLicOxcOxcLwcKfcNGcOycLGcOzcOAcOBcOBcMAcLGcNGcOGcLGcLGcLGcLGcOHcOEcOJcOIclXcOKcOMcOLcOYcORcLOcNOcOZcONcLOcOOcHVcGKcGKcGKcBJcGKcZScOTcOUcOTcOWcOTcOTcOTcOTcOTcBKcBPcBPcBPcBPcBPcBPcBPcBLcnVcBQcsLcBOcBMcBTcsLcsLchfcBWcBVcBXchfcDbcCXcPhcDecDgciYbQXcDhcBRcKPcKQcKRcPmcLccNocPncPjcPocPqcPpcPscPrcPpcPtcBRaaaaaacLbcLbcPycPAcPzcLbcLbbGHbGGcPBcuQcuQcuQbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaayiaabcNFcOFcNMaaacNFcOFcNMaabcNFcOFcNMaaaaabcLicMrcPucNDcLiaaaaabaaaaaaaaaaaaaaaaabaaaaaacOxcLwcKbcPvcLGcPwcPxcPCcLfcLdcLfcLncLfcPGcPHcLCcPIcNGcNGcNKcPLcPJcPNcPMcPPcPKcPVcPSbgYcPObHWcPQcPRcPYcPTcPUcPUcQacDjcDicQdcPZcQfcDkcQhcQgcDlcQicQocQmcQpcQpcQpcQpcQpcQpcQqcBPcBLcsLcDmchfchfcBQcBQchfcDnchfchfchfchfchfciYcDobQXctrbQXciYcDpbQXcBRcJKcKZcJKcQxcJrcEHcQzcQAcQrcQscEHcEHcQtcEHcQBcBRaaaaabaabcLbcLbcQvcLbcLbaaabGHbGGcFccuQcQwcQCbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacNFcOFcNMaabcNFcOFcNMaaacNFcOFcNMaabaaacLicLicOxcLicLiaaaaabaabaaaaabaaaaabaabaaaaaacQycQDcKbcLqcLvcLvcLPcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcJZcQIcJZcQEcJZcFacQKcxAbHYcQNcQNcQNcyhcQScPTcQLcQMcDrcDtcDscQQcPZcDxcDvcQTcEmcEncRacRdcRcaabcQZcQZcQZcQZcQZcRecBPcEocsLcMfcsLcyJcyJcsLcsLcsLchfcEpchfcsKcEqciYciYciYctrbQXciYciYciYcBRcJKcJKcJKcRDcLQcNocRHcRIcRtcRucRvcRvcRJcEHcRxcBRaabaabaaaaaaaaacRyaaaaaaaaabGHbGGcFccuQbGGbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvayiaaacNFcOFcNMaabcNFcOFcNMaaacNFcOFcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcRzcRAcRAcRAcRAcQycRBcLwcRCcRKcREcREcRFcRGcRMcRLcRLcRLcRLcRNcRPcROcRQcRQcRScRScRQcRTcRVcRUcRRcRRcRYcRWcTecSabHZcRXcRXcShcRZcSjcSbcSkcErcSdcSecPZcEucSlcSmcEvcSpcSocSrcSqcQpcSncSucSscSwcQZcRecBQcEwcsLchfcExchfcEycEAcEzcyJchfcECcEBcsLcsLciYcEDcgactrbQXciYcEFcEEcBRcxNcxNcxNcxNcLRcEHcQzcEIcSOcQscEHcSGcSHcSHcSPcSJcSKaabaaaaaaaaaaaaaaaaaaaaabGHbGGcPBbGGbGGcSLbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcSQaabaabaabcSQaabaaaaabcSQaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcSRcTacSTcRAcTbcTccNRcRCcRCcSScTdcKbcKbcMvcSUcSUcSUcSUcSVcSWcSXcSWcSWcSWcRRcRRcSYcSZcTfcTicTgcRXcTjcTecRXcRXcRXcRXcTkcPTcTlcThcQVcErcSdcSdcPZcEucSlcTncEJcTqcTpcTucTraabcTocTvcSwcTwcQZcRecBQcELcEKcFpcEMchfcsLcsLcsLcFqcMfcFscyJcFscsLciYbQXcgactrcFvciYbQXcFvcBRcKPcKQcKRcTJcLccNocTKcTNcTMcTGcTGcTHcTIcTPcTOcBRaabaabaabaaaaaaaaaaaaaaaaaabGHcTLcFcbGHbGHbGHbGHbGHaabaabaabcTQcTQcTQcTQcTQcTQaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcTRcTScTScTUcTTcTVcTVcTVcTTcTVcTVcTVcTTcTVcTVcTVcTWcTScTScTScTScTScTXcTZcTYcUbcUacUecUdcUgcUfcNBcLwcUccRCcKbcKbcKbcUhcMvcSUcUkcUjcUmcFxcUicFycFAcFzcUrcFCcUucUscUxcUwcUycFCcUtcUzcTecUvcRXcRXcRXcUAcPTcUCcUCcSdcFEcFDcFGcFFcFIcFHcFLcFJcUPcUNcUScSqcUVcSncUWcSwcSwcQZcRecBQcGIcsLctZcmJchfchfcMfchfchfchfcyJcyJcyJcsKchfchfchfctrbQXcGLbQXbQXcBRcJKcMgcJKcVecJrcEHcVfcUXcUYcEHcUZcVgcxNcxNcxNcBRaaaaaaaabaabaaaaaaaaaaaaaaabGHcJQcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcVkaabaaaaabcVkaabaaaaabcVkaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcVlcVdcVmcRAcVncNBcNNcTccTccTccTccVocTccUfcSUcVhcVicVjcGPcGRcGQcGTcGScGVcGUcGXcGWcGZcGYcHbcHacUtcTjcTecVxcVDcRXcRXcVFcPTcLScVHcSdcVIcQPcVJcVEcVLcVKcVOcVMcVQcVPcVQcVRaabcQZcQZcQZcQZcQZcRecBPcHcctZctZcmJcKOcAucsLcyJcsLcMfcsLcHdchfchfchfcHechfctrbQXciYbUxcHfcBRcJKcJKcJKcWicLUcWpcWjcWqcWfcEHcEHcEHcEHcWgcWrcWwaaaaaaaaaaabaabaaaaaaaaaaaabGHbGHcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwaabcNFcWxcNMaaacNFcWxcNMaaacNFcWxcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabcRzcRAcRAcRAcRAcWkcWlcWmcNBcWncNBcNBcMvcWocNBcSUcWzcWycVjcHhcUicWscWtcWucWucHkcWDcWCcWFaYtaZBcHkcWBcWHcWJcWIcWLcWKcWPcWMcWScMicUGcWTcWUcWNcWOcWVcWWcWRcWYcWXcXbcXacXdcXccQpcSncXecWZcWZcQZcRecBPcGIcsLcsLcHlchfchfchfcyPcyPchfchfchfchfcHZcIacsLchfctrcIccIbcIbcIbcXmcXmcXmcXmcXmcMjcXvcXtcXzcXxcNocXAcNocXAcNocXBcWwaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHcFcbGHaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNFcWxcNMaabcNFcWxcNMaaacNFcWxcNMaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucXCcXucXucSUcXwcXDcVjcHhcUicXycUicUicXEcRRcXGcXFcUwcIdcIecRRcXLcRXcTecXMcXOcXNcWPcXPcXJaZCcXRcXQcXVcXScXRcXWcXYcXXcYacSdcXTcXUcYccYbaabcTocYfcIfcXZcQZcRecBQcIgdfMdfMcIhcIichfcIkcIjcImcIlcIocInchfcsLcIpcsLchfctrcIqciYbQXcIrcIsciYcIucItcBRcMIcMQcMJcNacMIcMQcNbcNccMIcMQcNlcBRaabaabaabaabaabaabaabaabaabaabbGHcFcbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcWxcNMaaacNFcWxcNMaaacNFcWxcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabcXucYtcYtcYucYAcYBcYBcYDcYCcYCcYEcYGcYFcVjcHhcVjcYHcVjcVjcVjcRRcYLcIvcIxcIwcIycYIcYJcYQcYRcYMcYMcYMcYXcYUcYZaZHcZacYScVIcQPcYTcZbcYVcYWcZccSdcXTcZdcZgcZecZhcSncZicWZcWZcQZcRecBQckKcExchfcyJcJqcyPcJscImcJucJtcJvcsLcJwcYjcIpcJxchfctrcIqciYbQXcpEbQXciYcJzcIrcBRcZqcZscZrcxNcZtcZycZvcxNcZzcZBcZAcBRaabaabaaaaaaaaaaaaaaaaaaaaaaaabGHcFcbGGbGGbGHaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcWxcNMaaacNFcWxcNMaabcNFcWxcNMaabaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaacXucYtcYtcYucZucZucZucZCcZwcZxcSUcJBcJAcJDcJCcJFcJEcJHcZFcZFcZLcZOcZNcVjcVjcVjcZPcZRcZQcZMcJIcKscZVdacdabcSUcZScZSdafcVIcQPcZUdagcZWcZXcZYcSdcZZdahdajdaidadcQZcQZcQZcQZcQZcRecBQckKdaecsLcyJcJqchfcKvcKucKwcJtcKAcIjcKCcKBcKDcJxchfctrcIqcGLbQXcKEcKFciYcKGbQXcBRcMkcJKcJKcxNcMkcJKcJKcxNcMkcJKcJKcBRaaaaabaabaaaaaaaaaaaaaaacuQcuQbGHdaucuQbGGbGHbGHbGHcTQcTQaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamhaabcNFdavcNMaaacNFdavcNMaaacNFdavcNMaabalvaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabcXudaodapcZucZucZudaxdardardardardardardarcKHcKJcKIcKKdawdawdawdaFdaydaJdaAdaBdawdaydaKdaRcKLcKsdaSdacdabdaGdaHdaIdaTdaUdaLdaMdaNcZcdaOdaPdaVdaYdaWdaZcXcdbacSndbcdbbdbbcQZcRecBPckKchfcBNdaXcJqchfcKNcKMcJtcIjcJtcKScJtcJucJtcsLchfctrcIqciYbQXciYciYciYbQXbQXcBRdbfcKZcJKcxNdbfcKZcJKcxNdbfcKZcJKcBRaaaaaaaabaabaaaaaaaaaaaacuQdbgbGGcFccuQdbhcuQdbibGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaalvaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabcXudbjcZucZucZucZucZudardbtdblcKTdbwdbvdarcKUdbqdbrcHhcVjcVjdbsdbBdbydbEdbCdbGdbFdbzcSUdbAcKLcKsdbHdacdbJcSUdbDcZSdbKdbLcSddaMdaNdbNcSddaPdaVcXTcXUdbOcYbdbIcTodbScLVdbWcQZcRecBPckKchfdbMdbMcJqchfcLYcsLcLZcIjcMccMbcMecMdcJGcJvcyPctrcIqciYbQXbQXcMhciYbQXaqFcBRdbRcJKcJKcxNdbRcJKcJKcxNdbRcJKcJKcBRaaaaaaaaaaabaabaaaaaaaaacuQbGGbGGcFccuQbGGbGGbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwalwamhalvalvalvalvalwalvalvalwdbTaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXudbUcZwcZucZucZudbVdardbldcccMOcMTcMScMVcMUcMYcMWcMZcVjdcmdcldchdcocNbcNacNcdcrdcndcwdbrcHhdcydcxcZMdczcSUdcscZSdctdcLcSddaMdaNcZccSddcvdaVcXTdcOdcRcZedcScSndcTdbbdbbcQZcRecBQckKdcAcuccABcJqchfchfcNdcNecDncNfcNfcNgchfchfchfchfctrcIqciYbQXcNhcKFciYcepcepcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRaaaaaaaaaaaaaabaabaaaaaabGHbGHbGHcFccuQdcJdcKbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucXucXudcUdcMdcMdcMdardcNdcVdcPdcPdcQdcWdawcNidcXcNkcNjcNjcNWcNZcNXcOaddbcOccObcNZcOdcOfcOecOhcOgcOiddpddrdbDcZSddmddscSddaMcSdddtcSddaPdaVcXTcXUddxcYbdbIcQZcQZcQZcQZcQZcRecBQcOjcYlcuccTBcOScOPcOVcOPcOXcsLcsLcsLcsLczfchfcPacPecPbcPfcGLbQXcFvcepcepaaaaaaddFaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaabaaabGHcJQddBddKcuQddJddIbGGbZZaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddLcXucZucZucZudcMaabaabdarddGddMdcPdcPddNdarddOcPgddPddUcPicPWcPkcSUcPXcQbddScVjddYcSUcQccQecQeddUddUcQjdefcSUddZcZSdeadehcSddaMcSdcZUdagdecdeidaYdejdekcXcdelcSndendemdemcQZcRecBQcsLckKchfchfcPdchfchfcsLcQlcyJcyJcyJcsLcQucQRcQOcQXcQWcDocepcepcepcepaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaabaabbGHdbgcAScaccuQcuQcuQbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucZucZucZudcMaabaaadardesddMdcPdcPdezdardeucQYcSUdeFcRbcRbcRfcSUcRgdeAdeBdeCdeMcSUcRbcRbcRbdeFcSUcRhdeucSUdbDcZSdeOdePdeHdeIdeJdeKdeQdeRcXbdeUcXUdeVcYbdbIcTodeXcRideYcQZcRecBPcBPckKcprdeScRjdeTchfcsLdfadeZdffcRkcRmcRlchfciYciYcRncepcepaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGHbGHbGHbGHdfhcaccuQdfidfcbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXucXudcMdcUdfdaaaaaadardfedfpdcPdcPdfudardfwcRodfzdfkcRpcRqcRpdfocRrdfqdfrdfsddpdfocRpcRpcRpdftdfzcRsdfvcSUdbDdfEdaMdfxdfydeQdfFdfGdfBdfIdfHdfKdfJdfNcZedcScSndfOdemdemcQZcRecBPcsLcOjcSfcScdfgcsKchfdgmcTBcsLcYidfLcsLcYicBNchfcSgcFcbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGGbGGbGGcJQdfSdfUcuQdfPbGGbGGbGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfXdfYdfYdfZdfYdfYdgadardfVdcVdcPdcPdgbdardaGcSicSUcSUdfodfodfodfocStcSxcSvddUdgidfodfodfodfocSUcSUcSydglcSUdbDcZSdgrdgsdfydggdghcSdcSddgtcXWdggcXUdgjcYbdbIcQZcQZcQZcQZcQZcRecBPcTBcsLdgkdgCcsLdgmchfchfdgnchfdgocpscJGcYichfchfcuQcFcbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaabGHbGHcuQdgAdgycJQdfScacbGGbGGbGGdgBbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdgwdgvdgxdgFdardgzdgGcMMdcPdgHdarcSUcSzcSUdgJafOdgEdfodfodfodfocSAdfodfodfodfodgEafOdgJcSUcSBcSUcSUdbDcZSdgMdeHdgNdgPdgOdgRdgQdgPdgQdgPdgVdeQdgWdbIdhgdhhdhhdhhdhhdhidgSdgTdgTdgUdhjdgTdgTdgTdhkdgXdgYdgodgZchfdgochfdhacuQcFcbGHbZZbZZbZZbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHbGHbGHbGHbGHbGHbGHbGHbGHbGHcMsbGHcJQcuQdhbbGGcQwdfScaccuQcuQdbhcuQbGHaabdhcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdgwdgwdhdbJMdardhfdhldcPdcPdhmdarcSCcSDdhoafOcSEcSFcSFcSFcSFcSFcSIcSFcSFcSFcSFcSFcSMafOdhvcTscTmcSUdhsdaIdhzdhBdhAdhCdhxdhEdhDdhFcSddhHdhGdhJdhIdbIdhKaaaaabaabaaadhMdhLdhOdhNdhTdhSdhVdhUdgTdhYcsLcsLdhPcpsdhQcYicsLcsLcEGdhZdiadiadiadiadiadiadiadiadiadiadiadiadiadiadiediadiadiadiaczLcuQbPAcAUbGGdiccMscuQcuQcuQdbhcuQdfScaccuQdidbGGbGGbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdhWdgvdhXdifdardfVdcVdcPdcPdigdarcTtdibdibaaacTxafOafOafOafOafOafOafOafOafOafOafOcTxaaadibdibcTtcSUdaGcZSdhIdikdijdipdioditdhIdipdhIcYbdhIcYbdhIdbIdhKaaaalwalwdiudhLdivdiwdildimdindiydixdgTcsLcsLchfdgodiqchfcYicXrdfMdhRdizdiAdiAdiAdiAdiAdiAdiCdiBdiAdiAdiAdiAdiAdiAdiEdiDdiGdiFdiJdiIdiLdiLdiLdiLdiNdiMdiOdiLdiLdiLdiLdiQcjYcuQdfcbGGdiHbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiSdfYdfYdfYdfYdfYdiTdardiKdjgdcPdcPdjjdarcTycTzdiPaabcTxafOdjqaaaaaaaaaaaadjqaaaaaadjqafOcTxaabdiRcTCcTAcSUdaGcSUaabdiUaabdiVdiWdiXdiYdiZdiYdjadiYdjadjbdjcdhKaaaalwaabdjddgSdjedjfdjwdjhdjidjxdjkdgTdjlcsLcsLcYidjmchfcYicYidjzbGHbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHdjobGGcuQcTLbGGcuQcuQbZZbZZcxScuQdjAbGGdjAcuQdjCcacdjrbGHbGHbGHbGHbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadardjsdjgdcPdcPdjDdarcTtdibdjvaaacTDcTEaaaaaaaaaaaaaaadjyaaaaaaaaacUlcTFaaadibdibcTtcSUdaGcSUcQZdjBcTodjBcQZdjBcTodjBcQZdjScTodjUcQZaabdhKaaaalwaabdjEdgSdjFdjfdjGdjVdjidjWdjJdjKdirdjYdjMcYicpscsLdjNdgochfcBPaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabGHdjXcLhcuQdjPbGGcuQaaaaaaaaaaaacuQbGGbGGdbgdjQdjQdkadkbdjQaaaaabaabaabaabdjTaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadardkcdcVdcPdcPdigdarcUncTmdibaaacTxafOaaaaaaaabaabaabaabaabaaaaaaafOcTxaaadibcSCcUocSUdjZcSUcQZdkidkhdkkcQZdkqdkpdkscQZdkwdkudkxcQZaabdhKaaaalwaaadjEdkjdkydkldkmdkndkodkEdkDdgTdkrdgochfdgodkGchfdktdgocBNcBPcBQcBQcBQaHQaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabGHdkFcuQcuQcQCbGGcuQcuQbZZbZZcuQcuQbGGdkvcLhdjQdkIdkHdkMdjQaaaaaaaabaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcWxcNMaaacNFcWxcNMaabcNFcWxcNMaabaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaacXucYtcYtcYucZucZucZucZCcZwcZxcSUcJBcJAcJDcJCcJFcJEcJHcZFcZFcZLcZOcZNcVjcVjcVjcZPcZRcZQcZMcJIcNXcNVdacdabcSUcZScZSdafcVIcQPcZUdagcZWcZXcZYcSdcZZdahdajdaidadcQZcQZcQZcQZcQZcRecBQckKdaecsLcyJcJqchfcKvcKucKwcJtcKAcIjcKCcKBcKDcJxchfctrcIqcGLbQXcKEcKFciYcKGbQXcBRcMkcJKcJKcxNcMkcJKcJKcxNcMkcJKcJKcBRaaaaabaabaaaaaaaaaaaaaaacuQcuQbGHdaucuQbGGbGHbGHbGHcTQcTQaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamhaabcNFdavcNMaaacNFdavcNMaaacNFdavcNMaabalvaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabcXudaodapcZucZucZudaxdardardardardardardarcKHcKJcKIcKKdawdawdawdaFdaydaJdaAdaBdawdaydaKdaRcKLcNXcObdacdabdaGdaHdaIdaTdaUdaLdaMdaNcZcdaOdaPdaVdaYdaWcOkcXcdbacSndbcdbbdbbcQZcRecBPckKchfcBNdaXcJqchfcKNcKMcJtcIjcJtcKScJtcJucJtcsLchfctrcIqciYbQXciYciYciYbQXbQXcBRdbfcKZcJKcxNdbfcKZcJKcxNdbfcKZcJKcBRaaaaaaaabaabaaaaaaaaaaaacuQdbgbGGcFccuQdbhcuQdbibGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaalvaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabcXudbjcZucZucZucZucZudardbtdblcOqcOtcOrdarcKUdbqdbrcHhcVjcVjdbsdbBdbydbEdbCdbGdbFdbzcSUdbAcKLcNXcPgdacdbJcSUdbDcZSdbKdbLcSddaMdaNdbNcSddaPdaVcXTcXUcPicYbdbIcTodbScLVdbWcQZcRecBPckKchfdbMdbMcJqchfcLYcsLcLZcIjcMccMbcMecMdcJGcJvcyPctrcIqciYbQXbQXcMhciYbQXaqFcBRdbRcJKcJKcxNdbRcJKcJKcxNdbRcJKcJKcBRaaaaaaaaaaabaabaaaaaaaaacuQbGGbGGcFccuQbGGbGGbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwalwamhalvalvalvalvalwalvalvalwdbTaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXudbUcZwcZucZucZudbVdardblcPkcMOcMTcMScMVcMUcMYcMWcMZcVjdcmdcldchcPlcPEcPDcPWcPFdcndcwdbrcHhcWecPXcZMcQccSUdcscZSdctdcLcSddaMdaNcZccSddcvdaVcXTdcOcQecZedcScSndcTdbbdbbcQZcRecBQckKdcAcuccABcJqchfchfcNdcNecDncNfcNfcNgchfchfchfchfctrcIqciYbQXcNhcKFciYcepcepcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRaaaaaaaaaaaaaabaabaaaaaabGHbGHbGHcFccuQdcJdcKbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucXucXudcUdcMdcMdcMdardcNcQjdcPdcPdcQdcWdawcNidcXcNkcNjcNjcNWcNZcQFcOaddbcOccQGcNZcOdcOfcOecOhcOgcOicQHddrdbDcZSddmddscSddaMcSdddtcSddaPdaVcXTcXUddxcYbdbIcQZcQZcQZcQZcQZcRecBQcOjcYlcuccTBcOScOPcOVcOPcOXcsLcsLcsLcsLczfchfcPacPecPbcPfcGLbQXcFvcepcepaaaaaaddFaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaabaaabGHcJQddBddKcuQddJddIbGGbZZaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddLcXucZucZucZudcMaabaabdarddGcQJdcPdcPcQUdarcRgcRwcRrcSvcStcSNcSxcSUcUBcQbddScVjcVccSUcVpcVqcVqcSvcSvcVucVrcSUddZcZSdeadehcSddaMcSdcZUdagdecdeidaYdejdekcXcdelcSndendemdemcQZcRecBQcsLckKchfchfcPdchfchfcsLcQlcyJcyJcyJcsLcQucQRcQOcQXcQWcDocepcepcepcepaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaabaabbGHdbgcAScaccuQcuQcuQbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucZucZucZudcMaabaaadardescQJdcPdcPcVvdardeucQYcSUdeFcRbcRbcRfcSUcVwdeAdeBdeCcVycSUcRbcRbcRbdeFcSUcRhdeucSUdbDcZSdeOdePdeHdeIdeJdeKdeQdeRcXbdeUcXUdeVcYbdbIcTodeXcRideYcQZcRecBPcBPckKcprdeScRjdeTchfcsLdfadeZdffcRkcRmcRlchfciYciYcRncepcepaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGHbGHbGHbGHdfhcaccuQdfidfcbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXucXudcMdcUdfdaaaaaadardfecVzdcPdcPcVAdardfwcRodfzdfkcRpcRqcRpdfocVBdfqdfrdfscQHdfocRpcRpcRpdftdfzcRsdfvcSUdbDdfEdaMdfxdfydeQdfFdfGdfBdfIdfHdfKdfJdfNcZedcScSndfOdemdemcQZcRecBPcsLcOjcSfcScdfgcsKchfdgmcTBcsLcYidfLcsLcYicBNchfcSgcFcbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGGbGGbGGcJQdfSdfUcuQdfPbGGbGGbGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfXdfYdfYdfZdfYdfYdgadardfVcQjdcPdcPcVCdardaGcSicSUcSUdfodfodfodfocVGcVScVNcSvcVTdfodfodfodfocSUcSUcSydglcSUdbDcZSdgrdgsdfydggdghcSdcSddgtcXWdggcXUdgjcYbdbIcQZcQZcQZcQZcQZcRecBPcTBcsLdgkdgCcsLdgmchfchfdgnchfdgocpscJGcYichfchfcuQcFcbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaabGHbGHcuQdgAdgycJQdfScacbGGbGGbGGdgBbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdgwdgvdgxdgFdardgzcVWcMMdcPcVXdarcSUcSzcSUdgJafOdgEdfodfodfodfocSAdfodfodfodfodgEafOdgJcSUcSBcSUcSUdbDcZSdgMdeHdgNdgPdgOdgRdgQdgPdgQdgPdgVdeQdgWdbIdhgdhhdhhdhhdhhdhidgSdgTdgTdgUdhjdgTdgTdgTdhkdgXdgYdgodgZchfdgochfdhacuQcFcbGHbZZbZZbZZbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHbGHbGHbGHbGHbGHbGHbGHbGHbGHcMsbGHcJQcuQdhbbGGcQwdfScaccuQcuQdbhcuQbGHaabdhcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdgwdgwdhdbJMdardhfcVYdcPdcPcVZdarcSCcSDdhoafOcSEcSFcSFcSFcSFcSFcSIcSFcSFcSFcSFcSFcSMafOdhvcTscTmcSUdhsdaIdhzdhBdhAdhCdhxdhEdhDdhFcSddhHdhGdhJdhIdbIdhKaaaaabaabaaadhMdhLdhOdhNdhTdhSdhVdhUdgTdhYcsLcsLdhPcpsdhQcYicsLcsLcEGdhZdiadiadiadiadiadiadiadiadiadiadiadiadiadiadiediadiadiadiaczLcuQbPAcAUbGGdiccMscuQcuQcuQdbhcuQdfScaccuQdidbGGbGGbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdhWdgvdhXdifdardfVcQjdcPdcPcWadarcTtdibdibaaacTxafOafOafOafOafOafOafOafOafOafOafOcTxaaadibdibcTtcSUdaGcZSdhIdikdijdipdioditdhIdipdhIcYbdhIcYbdhIdbIdhKaaaalwalwdiudhLdivdiwdildimdindiydixdgTcsLcsLchfdgodiqchfcYicXrdfMdhRdizdiAdiAdiAdiAdiAdiAdiCdiBdiAdiAdiAdiAdiAdiAdiEdiDdiGdiFdiJdiIdiLdiLdiLdiLdiNdiMdiOdiLdiLdiLdiLdiQcjYcuQdfcbGGdiHbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiSdfYdfYdfYdfYdfYdiTdardiKcWbdcPdcPcWcdarcTycTzdiPaabcTxafOdjqaaaaaaaaaaaadjqaaaaaadjqafOcTxaabdiRcTCcTAcSUdaGcSUaabdiUaabdiVdiWdiXdiYdiZdiYdjadiYdjadjbdjcdhKaaaalwaabdjddgSdjedjfdjwdjhdjidjxdjkdgTdjlcsLcsLcYidjmchfcYicYidjzbGHbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHdjobGGcuQcTLbGGcuQcuQbZZbZZcxScuQdjAbGGdjAcuQdjCcacdjrbGHbGHbGHbGHbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadardjscWbdcPdcPcWddarcTtdibdjvaaacTDcTEaaaaaaaaaaaaaaadjyaaaaaaaaacUlcTFaaadibdibcTtcSUdaGcSUcQZdjBcTodjBcQZdjBcTodjBcQZdjScTodjUcQZaabdhKaaaalwaabdjEdgSdjFdjfdjGdjVdjidjWdjJdjKdirdjYdjMcYicpscsLdjNdgochfcBPaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabGHdjXcLhcuQdjPbGGcuQaaaaaaaaaaaacuQbGGbGGdbgdjQdjQdkadkbdjQaaaaabaabaabaabdjTaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadardkccQjdcPdcPcWadarcUncTmdibaaacTxafOaaaaaaaabaabaabaabaabaaaaaaafOcTxaaadibcSCcUocSUdjZcSUcQZdkidkhdkkcQZdkqdkpdkscQZdkwdkudkxcQZaabdhKaaaalwaaadjEdkjdkydkldkmdkndkodkEdkDdgTdkrdgochfdgodkGchfdktdgocBNcBPcBQcBQcBQaHQaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabGHdkFcuQcuQcQCbGGcuQcuQbZZbZZcuQcuQbGGdkvcLhdjQdkIdkHdkMdjQaaaaaaaabaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOdardardardardardardarcSUcTtdibaaacTxafOdjqaabaabdkzdkAdkBaabdkCaaaafOcTxaaadibcTtcSUcSUdaGcSUcQZdkObbMdkOcQZdkTbbOdkTcQZdkVbdGdkVcQZaabdhKaaaalwaaadjddgSdkJdkKdkLcOQdkWdkYdkXdgTdkPdkQdkZdkSdlacsLcYicYidlbdlddlccsLdlhaHQaaaaabaaabZZbZZbZZbGHbGHbGHbGHbGHbGHdlicJQcuQdljbGGbGGcuQbGGbGGbGGbGGdhbbGGdfPdjQdlodlkdlqdjQaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOaabafOafOaabaabaabalwalwcSUcSUcUpdibaaacTDcTEaaaaaaaabdledlfdlgaabaaaaaacUlcTFaaadibcUqcSUcSUdaGcSUcQZdkOdlvdkOcQZdkTdlwdkTcQZdkVdlxdkVcQZaabdhKaaaalwaaadjddgSdgSdgSdlldlmdlndlydlndlmdkPdlpcsLdlAdlrdfMddHcYidlscBPcBQcBQcBQdlKaabaabaaabZZdlBdlCcuQbGGdlDdlJdbgcuQdlPbGGcuQdlzbGGbGGdlLbGGbGHbGHbGHbZZbZZbGHdjQdlSdlRdlUdjQaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabaaaaaaaabaabalwcSUcSUcTtdibaaacTxafOaaadlEaabdlFdlGdlHaabaabdjqafOcTxaaadibcTtcSUcSUdaGcSUcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZaabdhKaaaayiaaadjdaaaaaaaaadlIdlmdlVdlXdlWdlmcsLdlMcsLcsLdlNdlOcXrdmcdlQcBPaaaaaaaaaaaaaaaaabaaabZZdlZdmbdlLbGGdgybGGbGGdlLdjobGGcuQcuQcuQcuQcuQbGGbGHaabaaaaaaaaaaabdlTdlTdmddlTdlTaabaabdhcaabaabdjTaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/z3.dmm b/_maps/map_files/cyberiad/z3.dmm index bb10e0c6fc0..f21ca69e3f5 100644 --- a/_maps/map_files/cyberiad/z3.dmm +++ b/_maps/map_files/cyberiad/z3.dmm @@ -6,6 +6,31 @@ "af" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1381; master_tag = "telecoms_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "61"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/tcommsat/powercontrol) "ag" = (/obj/item/stack/spacecash,/turf/simulated/floor/engine,/area/tcommsat/computer) "ah" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/ntnet_relay,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"ai" = (/obj/machinery/power/apc{dir = 1; name = "Telecoms Sat. Foyer APC"; pixel_x = 1; pixel_y = 26},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) +"aj" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = -32; pixel_y = 0},/obj/machinery/porta_turret{dir = 4},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) +"ak" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/turretid/lethal{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Satellite"; desc = "A firewall prevents AI's from interacting with this device."; icon_state = "control_kill"; lethal = 1; name = "Telecomms Lethal Turret Control"; pixel_y = 30; req_access = list(61)},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera{c_tag = "Telecomms Foyer"; dir = 2; network = list("Telecomms")},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) +"al" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) +"am" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) +"an" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/item/radio/intercom{pixel_y = 25},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) +"ao" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = 32; pixel_y = 0},/obj/machinery/porta_turret{dir = 8},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) +"ap" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) +"aq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) +"ar" = (/obj/machinery/light/small,/obj/machinery/light_switch{pixel_y = -28},/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) +"as" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = -32; pixel_y = 0},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) +"at" = (/obj/machinery/light/small,/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) +"au" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = 32; pixel_y = 0},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) +"av" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/tcommsat/entrance) +"aw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/tcommsat/entrance) +"ax" = (/obj/machinery/camera{c_tag = "Telecomms Entrance North"; dir = 2; network = list("Telecomms")},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/tcommsat/entrance) +"ay" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/tcommsat/entrance) +"az" = (/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/tcommsat/entrance) +"aA" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/tcommsat/entrance) +"aB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/tcommsat/entrance) +"aC" = (/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/tcommsat/entrance) +"aD" = (/obj/structure/closet/crate,/obj/machinery/light_switch{pixel_y = -28},/obj/item/clothing/glasses/night,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/tcommsat/entrance) +"aE" = (/obj/structure/closet/crate,/obj/item/aicard,/obj/item/multitool,/obj/machinery/camera{c_tag = "Telecomms Entrance South"; dir = 1; network = list("Telecomms")},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/tcommsat/entrance) +"aF" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/tcommsat/entrance) +"aG" = (/obj/machinery/light{dir = 4},/obj/structure/closet/emcloset,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/tcommsat/entrance) "aT" = (/obj/structure/lattice,/turf/space,/area/space) "ba" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area/space) "bb" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/space) @@ -230,37 +255,24 @@ "gh" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/space,/area/turret_protected/tcomsat) "gi" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{dir = 1},/turf/space,/area/turret_protected/tcomsat) "gj" = (/turf/simulated/wall/r_wall,/area/turret_protected/tcomfoyer) -"gk" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = -32; pixel_y = 0},/obj/machinery/porta_turret{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"gl" = (/obj/machinery/power/apc{dir = 1; name = "Telecoms Sat. Foyer APC"; pixel_x = 1; pixel_y = 26},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/turret_protected/tcomfoyer) -"gm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/turret_protected/tcomfoyer) -"gn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/turretid/lethal{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Satellite"; desc = "A firewall prevents AI's from interacting with this device."; icon_state = "control_kill"; lethal = 1; name = "Telecomms Lethal Turret Control"; pixel_y = 30; req_access = list(61)},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera{c_tag = "Telecomms Foyer"; dir = 2; network = list("Telecomms")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"go" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/item/radio/intercom{pixel_y = 25},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/turret_protected/tcomfoyer) -"gp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/turret_protected/tcomfoyer) -"gq" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = 32; pixel_y = 0},/obj/machinery/porta_turret{dir = 8},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/turret_protected/tcomfoyer) "gr" = (/obj/structure/window/reinforced,/obj/machinery/light{dir = 1},/turf/space,/area/turret_protected/tcomsat) "gs" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/space,/area/turret_protected/tcomsat) "gt" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "gu" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "gv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/hatch{name = "Telecoms West Wing"; req_access_txt = "61"},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomfoyer) -"gw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/turret_protected/tcomfoyer) "gx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) "gy" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) "gz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) "gA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) "gB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) -"gC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/turret_protected/tcomfoyer) "gD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/hatch{name = "Telecoms East Wing"; req_access_txt = "61"},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomfoyer) "gE" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "gF" = (/obj/machinery/camera{c_tag = "Telecomms East Wing South"; dir = 8; network = list("Telecomms")},/turf/space,/area/turret_protected/tcomsat) "gG" = (/obj/machinery/camera{c_tag = "Telecomms West Wing South"; dir = 4; network = list("Telecomms")},/turf/space,/area/turret_protected/tcomsat) "gH" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) -"gI" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"gJ" = (/obj/machinery/light/small,/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/turret_protected/tcomfoyer) "gK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) "gL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) "gM" = (/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) -"gN" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/turret_protected/tcomfoyer) -"gO" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/turret_protected/tcomfoyer) "gP" = (/turf/simulated/wall/r_wall,/area/tcommsat/entrance) "gQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/wall/r_wall,/area/turret_protected/tcomfoyer) "gR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/hatch{name = "Telecoms Satellite"; req_access_txt = "61"},/turf/simulated/floor/plasteel,/area/turret_protected/tcomfoyer) @@ -285,9 +297,6 @@ "hk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/hatch{name = "Telecoms Satellite"; req_access_txt = "61"},/turf/simulated/floor/plasteel,/area/tcommsat/entrance) "hl" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/tcommsat/entrance) "hm" = (/turf/simulated/wall/r_wall,/area/tcommsat/powercontrol) -"hn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/tcommsat/entrance) -"ho" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/tcommsat/entrance) -"hp" = (/obj/machinery/camera{c_tag = "Telecomms Entrance North"; dir = 2; network = list("Telecomms")},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/tcommsat/entrance) "hq" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1381; id_tag = "telecoms_pump"},/obj/machinery/light/small{dir = 8},/obj/structure/sign/vacuum{pixel_x = 0; pixel_y = 32},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/tcommsat/powercontrol) "hr" = (/obj/machinery/camera/xray{c_tag = "Telecomms Airlock"; network = list("Telecomms")},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/tcommsat/powercontrol) "hs" = (/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_inner"; locked = 1; name = "External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/tcommsat/powercontrol) @@ -295,9 +304,7 @@ "hv" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/tcommsat/powercontrol) "hw" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/camera{c_tag = "Telecomms Foyer"; dir = 2; network = list("Telecomms")},/turf/simulated/floor/plating,/area/tcommsat/powercontrol) "hx" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/tcommsat/powercontrol) -"hy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/tcommsat/entrance) "hz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/tcommsat/entrance) -"hA" = (/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/tcommsat/entrance) "hB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/space) "hC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/tcommsat/powercontrol) "hD" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "telecoms_pump"; tag_exterior_door = "telecoms_outer"; frequency = 1381; id_tag = "telecoms_airlock"; tag_interior_door = "telecoms_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = "13"; tag_chamber_sensor = "telecoms_sensor"},/obj/machinery/airlock_sensor{frequency = 1381; id_tag = "telecoms_sensor"; pixel_x = 12; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1381; id_tag = "telecoms_pump"},/turf/simulated/floor/plating,/area/tcommsat/powercontrol) @@ -313,7 +320,6 @@ "hN" = (/turf/simulated/floor/plating,/area/tcommsat/powercontrol) "hO" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plating,/area/tcommsat/powercontrol) "hP" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 4; name = "Telecoms Sat. Power Control APC"; pixel_x = 25},/turf/simulated/floor/plating,/area/tcommsat/powercontrol) -"hQ" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/tcommsat/entrance) "hR" = (/obj/item/stock_parts/cell,/turf/simulated/floor/plasteel,/area/tcommsat/entrance) "hS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/tcommsat/entrance) "hT" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/tcommsat/entrance) @@ -325,7 +331,6 @@ "ia" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/tcommsat/powercontrol) "ib" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/tcommsat/powercontrol) "ic" = (/obj/machinery/door/airlock/hatch{name = "Telecoms Power Control"; req_access_txt = "61"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/tcommsat/powercontrol) -"id" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/tcommsat/entrance) "ie" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/tcommsat/entrance) "if" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel,/area/tcommsat/entrance) "ig" = (/obj/machinery/bluespace_beacon,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/tcommsat/entrance) @@ -336,11 +341,6 @@ "il" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor/plating,/area/tcommsat/powercontrol) "im" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/light_switch{pixel_y = -28},/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/tcommsat/powercontrol) "in" = (/obj/structure/sign/electricshock,/turf/simulated/wall/r_wall,/area/tcommsat/powercontrol) -"io" = (/obj/structure/closet/crate,/obj/machinery/light_switch{pixel_y = -28},/obj/item/clothing/glasses/night,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/tcommsat/entrance) -"ip" = (/turf/simulated/floor/plasteel{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/tcommsat/entrance) -"iq" = (/obj/structure/closet/crate,/obj/item/aicard,/obj/item/multitool,/obj/machinery/camera{c_tag = "Telecomms Entrance South"; dir = 1; network = list("Telecomms")},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/tcommsat/entrance) -"ir" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/tcommsat/entrance) -"is" = (/obj/machinery/light{dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/tcommsat/entrance) "it" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/space) "iu" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/space) "iv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/space) @@ -507,20 +507,20 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWaaeDeEeEeEeEeEeEeEeEeEeEeEeEeEeEeEcgaacrcncpctcsctcVdSdadHevfWfXeBeBeBaheBeBeBgagbevdHcVfddafQfQfQcpcncncraTcdeOeOeOeOeOeOeOeOeOeOeOeOeOeOeOePaTbWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWaTdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZaaaacrcncpctcsctcVdSdadHevevevevevevgdevevevevevevdHcVfddactcsctcpcncicmaaaTdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZaabWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWcrcncpcseecseffdcNdHdHdHdHdHdHdHgfdHdHdHdHdHdHdHeffdcNcseecscpcncrbWbWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWbWbWbWbWbWbWbWbWbWbWbWcbbWbWbWbWbWbWbWcrcncpctcsctcVggghgidldlgjgkglgmgngogpgqgjdldlgrgsfddactcsctcpcncrbWbWbWbWbWbWcbbWbWbWbWbWbWbWbWbWbWcbbWbWbWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcncpctcsctcVgtgugugugugvgwgxgygzgAgBgCgDgufEgugugEdactcsgFcpcncraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcncpgGcsctctdVdVgHdVdVgjgIgJgKgLgMgNgOgjdVdVdVdVdVctctcsctcpcncraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWbWbWbWbWbWbWbWbWbWbWbWcbbWbWbWbWbWbWbWcrcncpctcsctcVggghgidldlgjajaialakanamaogjdldlgrgsfddactcsctcpcncrbWbWbWbWbWbWcbbWbWbWbWbWbWbWbWbWbWcbbWbWbWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcncpctcsctcVgtgugugugugvapgxgygzgAgBaqgDgufEgugugEdactcsgFcpcncraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcncpgGcsctctdVdVgHdVdVgjasargKgLgMataugjdVdVdVdVdVctctcsctcpcncraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcncpctcsctctctctcsctgPgjgjgjgQgRgjgjgjgjgPctctctctctctcsctcpcncraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcncpcscscscscscscscsgSgTgUgPgVgWgXgYgZhahbcscscscscscscscscpcncraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcncncpcsctctctctctcpgPhchdhehfhghdhhhdhigPcpctctctctctcscpcncncraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoclcncncpcpcpcpcpcpcpgPgPgPgPhjhkhlgPgPgPgPcpcpcpcpcpcpcpcncncicmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoclhmhmhmhmhmhmhmhmhmhmgPgPhnhohpgPcncncncncncncncncncncncicmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrhmhqhrhsaehuhvhwhxhmgPgPhyhzhAgPgPbWcicjcjcjcjcjcjcjcjcmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoclhmhmhmhmhmhmhmhmhmhmgPgPawavaxgPcncncncncncncncncncncncicmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrhmhqhrhsaehuhvhwhxhmgPgPayhzazgPgPbWcicjcjcjcjcjcjcjcjcmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahBhmhChDhmhEhFhFhFhGhmgPhHhIhJhdhKgPgPcrbWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahBhmhLhmhmhMhNhOhNhPhmhQhRhShThUhUhVgPcraTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdhWafhYhmhZiaiaiaibicidieifighUhUihgPcraTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiiiichiihmijikhFiliminioiphUhUhUhUhVgPcrbWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiiiichiihmhmhmhmhmhmhmgPiqiriririsgPgPcrbWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahBhmhLhmhmhMhNhOhNhPhmaAhRhShThUhUhVgPcraTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdhWafhYhmhZiaiaiaibicaBieifighUhUihgPcraTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiiiichiihmijikhFiliminaDaChUhUhUhUhVgPcrbWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiiiichiihmhmhmhmhmhmhmgPaEaFaFaFaGgPgPcrbWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaitceiuceivcjcjcjcjcjclgPgPiwixiygPgPcicmbWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWbWcoclgPgPgPgPgPcicmbWbWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWbWaacoizcjiAcjcjcmaabWbWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/z4.dmm b/_maps/map_files/cyberiad/z4.dmm index 42dcce60019..1fec3db76b7 100644 --- a/_maps/map_files/cyberiad/z4.dmm +++ b/_maps/map_files/cyberiad/z4.dmm @@ -175,7 +175,7 @@ "ds" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/engiestation/solars) "dt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engiestation) "du" = (/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/simulated/floor/plating,/area/engiestation) -"dv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engiestation) +"dv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/obj/effect/decal/warning_stripes/south,/area/engiestation) "dw" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/engiestation) "dx" = (/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},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engiestation) "dy" = (/turf/simulated/floor/plating/airless,/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},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk4"; icon_state = "catwalk4"},/area/engiestation/solars) @@ -183,17 +183,17 @@ "dA" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk12"; icon_state = "catwalk12"},/area/engiestation/solars) "dB" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk11"; icon_state = "catwalk11"},/area/engiestation/solars) "dC" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/engiestation) -"dD" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engiestation) -"dE" = (/obj/machinery/mass_driver{dir = 4; id_tag = "constructiondriver0"; name = "construction driver #0"},/obj/machinery/door/window{dir = 8; name = "Construction Driver"; req_access_txt = "10"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engiestation) -"dF" = (/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/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engiestation) +"dD" = (/obj/machinery/mass_driver{dir = 4; id_tag = "constructiondriver0"; name = "construction driver #0"},/obj/machinery/door/window{dir = 8; name = "Construction Driver"; req_access_txt = "10"},/turf/simulated/floor/plating,/obj/effect/decal/warning_stripes/west,/area/engiestation) +"dE" = (/turf/simulated/floor/plasteel,/obj/effect/decal/warning_stripes/east,/area/engiestation) +"dF" = (/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/simulated/floor/plating,/obj/effect/decal/warning_stripes/east,/area/engiestation) "dG" = (/obj/machinery/door/poddoor{id_tag = "constructiondriver0"; name = "Construction Driver Door"; protected = 0},/turf/simulated/floor/plating,/area/engiestation) "dH" = (/turf/simulated/floor/plasteel/airless{tag = "icon-gcircuit"; icon_state = "gcircuit"},/area/constructionsite/ai) "dI" = (/obj/machinery/alarm/monitor{locked = 0; pixel_y = 32},/turf/simulated/floor/plasteel/airless{tag = "icon-gcircuit"; icon_state = "gcircuit"},/area/constructionsite/ai) "dJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) "dK" = (/obj/machinery/power/solar,/obj/structure/cable,/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/engiestation/solars) -"dL" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engiestation) +"dL" = (/turf/simulated/floor/plating,/obj/effect/decal/warning_stripes/east,/area/engiestation) "dM" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/smes/engineering{input_attempt = 1; input_level = 50000; inputting = 1; output_level = 15000},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engiestation) -"dN" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engiestation) +"dN" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable,/turf/simulated/floor/plating,/obj/effect/decal/warning_stripes/west,/area/engiestation) "dO" = (/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit/engineering,/obj/item/clothing/head/helmet/space/hardsuit/engineering,/turf/simulated/floor/plasteel,/area/engiestation) "dP" = (/obj/machinery/driver_button{id_tag = "constructiondriver1"; name = "Construction Driver #1"; pixel_x = 25},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/engiestation) "dQ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) @@ -203,14 +203,14 @@ "dU" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk8"; icon_state = "catwalk8"},/area/engiestation/solars) "dV" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engiestation) "dW" = (/turf/simulated/floor/plating,/area/engiestation) -"dX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engiestation) +"dX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/obj/effect/decal/warning_stripes/north,/area/engiestation) "dY" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/engiestation) "dZ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engiestation) "ea" = (/turf/simulated/floor/plating/airless,/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},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk4"; icon_state = "catwalk4"},/area/engiestation/solars) "eb" = (/turf/simulated/floor/plating/airless,/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},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk12"; icon_state = "catwalk12"},/area/engiestation/solars) "ec" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk12"; icon_state = "catwalk12"},/area/engiestation/solars) "ed" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/wood{amount = 30},/obj/item/stack/sheet/wood{amount = 30},/obj/item/stack/sheet/wood{amount = 30},/obj/structure/table,/obj/item/flashlight/flare,/obj/item/flashlight/flare,/obj/item/flashlight/flare,/turf/simulated/floor/plasteel,/area/engiestation) -"ee" = (/obj/machinery/mass_driver{dir = 4; id_tag = "constructiondriver1"; name = "construction driver #1"},/obj/machinery/door/window{dir = 8; name = "Construction Driver"; req_access_txt = "10"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engiestation) +"ee" = (/obj/machinery/mass_driver{dir = 4; id_tag = "constructiondriver1"; name = "construction driver #1"},/obj/machinery/door/window{dir = 8; name = "Construction Driver"; req_access_txt = "10"},/turf/simulated/floor/plating,/obj/effect/decal/warning_stripes/west,/area/engiestation) "ef" = (/obj/machinery/door/poddoor{id_tag = "constructiondriver1"; name = "Construction Driver Door"; protected = 0},/turf/simulated/floor/plating,/area/engiestation) "eg" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) "eh" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel/airless{tag = "icon-gcircuit"; icon_state = "gcircuit"},/area/constructionsite/ai) @@ -227,7 +227,7 @@ "es" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk9"; icon_state = "catwalk9"},/area/space) "et" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "10;24"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engiestation) "eu" = (/obj/machinery/vending/engivend,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engiestation) -"ev" = (/obj/machinery/mass_driver{dir = 4; id_tag = "constructiondriver2"; name = "construction driver #2"},/obj/machinery/door/window{dir = 8; name = "Construction Driver"; req_access_txt = "10"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engiestation) +"ev" = (/obj/machinery/mass_driver{dir = 4; id_tag = "constructiondriver2"; name = "construction driver #2"},/obj/machinery/door/window{dir = 8; name = "Construction Driver"; req_access_txt = "10"},/turf/simulated/floor/plating,/obj/effect/decal/warning_stripes/west,/area/engiestation) "ew" = (/obj/machinery/door/poddoor{id_tag = "constructiondriver2"; name = "Construction Driver Door"; protected = 0},/turf/simulated/floor/plating,/area/engiestation) "ex" = (/obj/machinery/recharge_station,/turf/simulated/floor/plating/airless,/area/constructionsite/ai) "ey" = (/obj/structure/table,/obj/item/lighter/random,/obj/item/reagent_containers/food/snacks/icecreamsandwich,/obj/item/clothing/head/chefhat,/obj/item/storage/box/donkpockets,/obj/structure/sign/fire{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 9; icon_state = "blue"},/area/engiestation) @@ -237,7 +237,7 @@ "eC" = (/obj/structure/table,/obj/item/reagent_containers/food/snacks/meatballsoup,/turf/simulated/floor/plasteel{dir = 5; icon_state = "blue"},/area/engiestation) "eD" = (/obj/machinery/pipedispenser/disposal,/turf/simulated/floor/plasteel,/area/engiestation) "eE" = (/obj/machinery/pipedispenser,/obj/machinery/light{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/engiestation) -"eF" = (/obj/machinery/space_heater,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engiestation) +"eF" = (/obj/machinery/space_heater,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/obj/effect/decal/warning_stripes/east,/area/engiestation) "eG" = (/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/engiestation) "eH" = (/obj/machinery/door/airlock/engineering/glass{name = "Engineering"; req_access_txt = "0"; req_one_access_txt = "10;24"},/turf/simulated/floor/plasteel,/area/engiestation) "eI" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/engiestation) @@ -247,22 +247,22 @@ "eM" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor/plasteel,/area/engiestation) "eN" = (/obj/structure/table,/obj/item/reagent_containers/food/snacks/meatsteak,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 4},/area/engiestation) "eO" = (/obj/machinery/floodlight,/turf/simulated/floor/plasteel,/area/engiestation) -"eP" = (/obj/machinery/floodlight,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engiestation) +"eP" = (/obj/machinery/floodlight,/turf/simulated/floor/plasteel,/obj/effect/decal/warning_stripes/east,/area/engiestation) "eQ" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0; req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/engiestation) "eR" = (/obj/machinery/light,/turf/simulated/floor/plasteel,/area/engiestation) "eS" = (/obj/machinery/door/airlock/external,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/engiestation) "eT" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/engiestation) "eU" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/coffee,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 4},/area/engiestation) "eV" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor/plasteel,/area/engiestation) -"eW" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engiestation) +"eW" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel,/obj/effect/decal/warning_stripes/east,/area/engiestation) "eX" = (/obj/structure/bedsheetbin,/obj/structure/table,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/engiestation) "eY" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/engiestation) "eZ" = (/obj/structure/stool/bed,/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/obj/item/bedsheet/orange,/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/engiestation) "fa" = (/obj/structure/table,/obj/item/flashlight/lamp,/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/engiestation) "fb" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/engiestation) "fc" = (/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 4},/area/engiestation) -"fd" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/engiestation) -"fe" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/engiestation) +"fd" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel,/obj/effect/decal/warning_stripes/south,/area/engiestation) +"fe" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel,/obj/effect/decal/warning_stripes/southeast,/area/engiestation) "ff" = (/obj/machinery/washing_machine,/turf/simulated/floor/plasteel{icon_state = "wood"},/area/engiestation) "fg" = (/turf/simulated/floor/plasteel{icon_state = "wood"},/area/engiestation) "fh" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/engiestation) @@ -708,13 +708,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacraa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcrabababcLcMctcNctcOcxcPcQabababaacFcRcScScFcTabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabaaaaabbDacaSaSagbUbTbVbVcebVbVbVbXbXcDcDcUcUcDcVcKcJcDcUcUcDcDbXbXbXbVbVcebVbVbTbUahakakaeakaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcPcocococMcWcXcYcWcYcXcWcPcocococQcZdadbdadadcabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaNadadajadajajadadajadadajajajacaSaSagbUbTbVbVcebVbXbXbXcDcDcUcUcUcDcJcKcJcDcUcUcUcDcDbVbXbVbVcebVbVbTbUahbaakaeakaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcsddddddddcXdedfdgdfdhcXddddddddcscZdidjdkdlcCcCcCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababajadadajajajajajajajajajajajajajacaSaSacbTbTbVbTbTcfbXbXbXcDcUcUcUcDcDlFdmdncDcDcUcUcUcDbVbVbXchbTbTbVbTbTaeakbaaeakaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadodpdqdqdrdsdtdudvdwdxdsdydzdzdAdBcZdCdjdjdDdEdFdGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabajajajajajajajajajajajajajajajajajajacajacaSaSlmbVbVbVlEbVbVbXbXcDcDcUcUcDcDdHdIdJdHdHcDcDcUcUcDcDbVbXbVbVlEbVbVbVlpakakakakaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadodpdqdqdrdsdtdudvdwdxdsdydzdzdAdBcZdCdjdjdEdDdFdGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabajajajajajajajajajajajajajajajajajajacajacaSaSlmbVbVbVlEbVbVbXbXcDcDcUcUcDcDdHdIdJdHdHcDcDcUcUcDcDbVbXbVbVlEbVbVbVlpakakakakaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsdKdKdKdKcWdfdLdMdNdfcWdKdKdKdKcscZdOdjdjdPdadacCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbCabababababacacacacacadajadajadajadajadajacacacacacacacacacacacacacbfaSbTbWbTbTbTbVbVbVbVcDcDcDcDcDcJdHcJdQdRdHcJcDcDcDcDcDbVbVbXbVbTbTbTbWbTakbjaeaeaeaeaeaebkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdodSdTdTdUdsdVdWdXdYdZdseaebebecdBcZeddjdjdDeedFefaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajadajajajajajajajajajajajajajajajajajajajajajajajajajlmaSaSaUbVbVbVbVbVbXbVbVcDcJegcJdnehdHcJcKcJdHeilFcJegcJcDbVbVbXbVbVbVbVbXaWakbalpakakakakakakakakakakakakakakafafbkafbkafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdodSdTdTdUdsdVdWdXdYdZdseaebebecdBcZeddjdjdEeedFefaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajadajajajajajajajajajajajajajajajajajajajajajajajajajlmaSaSaUbVbVbVbVbVbXbVbVcDcJegcJdnehdHcJcKcJdHeilFcJegcJcDbVbVbXbVbVbVbVbXaWakbalpakakakakakakakakakakakakakakafafbkafbkafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababclcMdKdKdKdKcXejekelcRcScXdKdKdKdKemcZendjdjeodadacCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababajajajajajadadajajadajadajadajadajadajadajadajajajajajajajajajlmaSaSaUbVbVbVbVbXbVbVbVepeqeqeqepcJcJcJcKcJcJcJereqeqeqerbVbVbXbXbXbXbXbXaWakaklpakakakakakakakakakakakbkakbkakbkakakakbkakafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabclescCdadadadadadadadadaetdadadadadadadaeudjdjdDevdFewaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadajajajajajajajadajadajajajajajajajajadajajajajajajajajlmaSaSaUbXbXbXbXbXbXbXbXcDcJcJcJlFdHdHcJcKcJdHdHdnexexexcDbVbVbXbVbVbVbVbVaWbabalpakakakakakakakakakakakakakakakakakakbkafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabclescCdadadadadadadadadaetdadadadadadadaeudjdjdEevdFewaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadajajajajajajajadajadajajajajajajajajadajajajajajajajajlmaSaSaUbXbXbXbXbXbXbXbXcDcJcJcJlFdHdHcJcKcJdHdHdnexexexcDbVbVbXbVbVbVbVbVaWbabalpakakakakakakakakakakakakakakakakakakbkafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcrabcFeyezeAeBeCcFeDeEeFdjeGeHeIdjdjeIeHeJeKdjdjcCcCcCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadacacacacacacacacacacacacacacacacacacacacacacacacbfaSbTbWbTbTbTbUbVbUbVcDcDcDcDcDcJdHcJdJcJdHcJcDcDcDcDcDbVbVbXbVbTbTbTbWbTakbBaeaeaeaeaeaeaeaebkbkbkbkbkbkbkbkbkbkbkbkbkbkafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrabcFeLdjdjeMeNcFeOeOePdjeQdadadadadacCcCcCeRdDeSdFeSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababacadajaSaSlmbVbVbVlEbVbVbVbVcDcDcUcUcDcDdHdHdJdHdHcDcDcUcUcDcDbVbVbVbVlEbVbVbVlpbabaakakaebkbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrabcFeLdjdjeMeNcFeOeOePdjeQdadadadadacCcCcCeRdEeSdFeSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababacadajaSaSlmbVbVbVlEbVbVbVbVcDcDcUcUcDcDdHdHdJdHdHcDcDcUcUcDcDbVbVbVbVlEbVbVbVlpbabaakakaebkbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrabcFeTdjdjeMeUcFeVeVeWdjdjcFeXeYeZfacFabdcdccCcCcCcCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaababacadacaSaSacbTbTbVbTbTcfbUbVbUcDcUcUcUcDcDdndmlFcDcDcUcUcUcDbVbVbXchbTbTbVbTbTaebabaaeakaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrabcFfbdjdjdjfccFfdfdfedjdjcFfffgfhfhcFabaaaafiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaababacadacaSaSagbUbTbVbVcebVbVbVbVcDcDcUcUcUcDcJcKcJcDcUcUcUcDcDbVbVbXbVcebVbVbTbUahbabaaeakaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrabcFfjfkflfmfnfoeKdjdjdjdjfpfgfgfgfqcFabaaaacraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacadacaSaSagbUbTbVbVcebVbUbVbUbVcDcDcUcUcDcVcKcJcDcUcUcDcDbVbVbVbVbVcebVbVbTbUahakbaaeakaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm index ee16cf0c496..5e8b66e6c24 100644 --- a/_maps/map_files/cyberiad/z6.dmm +++ b/_maps/map_files/cyberiad/z6.dmm @@ -69,7 +69,7 @@ "bq" = (/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/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation) "br" = (/obj/machinery/light_switch{pixel_x = 28; pixel_y = 28},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1479; master_tag = "dj_station_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = -25; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation) "bs" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) -"bt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/plating,/area/derelict/solar_control) +"bt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; max_integrity = 1e+007},/turf/simulated/floor/plating,/area/derelict/solar_control) "bu" = (/turf/simulated/floor/plating,/area/derelict/solar_control) "bv" = (/obj/machinery/door/airlock/external{frequency = 1479; icon_state = "door_locked"; id_tag = "dj_station_inner"; locked = 1; name = "DJ Station Interior Access"; req_access = null; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/djstation) "bw" = (/obj/machinery/door/airlock/external{name = "Air Bridge Access"},/turf/simulated/floor/plating,/area/derelict/solar_control) @@ -180,7 +180,7 @@ "dy" = (/obj/machinery/power/emitter{dir = 1; icon_state = "emitter"},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "dz" = (/obj/machinery/field/generator,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "dA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) -"dB" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"dB" = (/obj/structure/window/reinforced{dir = 5; max_integrity = 1e+007},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "dC" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel,/area/derelict/bridge) "dD" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/space) "dE" = (/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) @@ -509,7 +509,7 @@ "jQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/space) "jR" = (/obj/structure/closet/wardrobe/mixed,/turf/simulated/floor/plasteel,/area/derelict/arrival) "jS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/space) -"jT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/plating,/area/derelict/arrival) +"jT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; max_integrity = 1e+007},/turf/simulated/floor/plating,/area/derelict/arrival) "jU" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"},/turf/simulated/floor/plating,/area/derelict/arrival) "jV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless,/area/space) "jW" = (/turf/simulated/wall,/area/derelict/hallway/secondary) @@ -521,7 +521,7 @@ "kc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/wall/r_wall,/area/derelict/hallway/secondary) "kd" = (/obj/structure/window/basic{dir = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "ke" = (/obj/structure/grille,/obj/item/shard,/obj/item/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/space) -"kf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/plating/airless,/area/space) +"kf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; max_integrity = 1e+007},/turf/simulated/floor/plating/airless,/area/space) "kg" = (/obj/structure/girder,/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) "kh" = (/obj/item/stack/rods,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/secondary) "ki" = (/obj/item/shard{icon_state = "small"},/turf/space,/area/space) diff --git a/_maps/map_files/generic/z5.dmm b/_maps/map_files/generic/z5.dmm index ef0d38bd8c4..ca119cd3930 100644 --- a/_maps/map_files/generic/z5.dmm +++ b/_maps/map_files/generic/z5.dmm @@ -107,7 +107,7 @@ "cc" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/mine/north_outpost) "cd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/item/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "ce" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/mine/north_outpost) -"cf" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "Mining North Outpost APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/conveyor_switch{id = "mining_north"},/obj/machinery/camera{c_tag = "North Outpost"; dir = 8; network = list("MINE")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost) +"cf" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "Mining North Outpost APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/conveyor_switch{id = "mining_north"},/obj/machinery/camera{c_tag = "North Outpost"; dir = 8; network = list("MINE")},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/mine/north_outpost) "cg" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/north_outpost) "ch" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/north_outpost) "ci" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_north"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel,/area/mine/north_outpost) @@ -148,7 +148,7 @@ "cR" = (/obj/effect/decal/remains/human,/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "cS" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) "cT" = (/obj/structure/table,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) -"cU" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost) +"cU" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/mine/north_outpost) "cV" = (/obj/structure/glowshroom,/turf/simulated/mineral/random,/area/mine/dangerous/explored) "cW" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned) "cX" = (/obj/structure/rack,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) @@ -159,8 +159,8 @@ "dc" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost) "dd" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost) "de" = (/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/mine/north_outpost) -"df" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost) -"dg" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_n1_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost) +"df" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/mine/north_outpost) +"dg" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_n1_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/mine/north_outpost) "dh" = (/obj/structure/glowshroom,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) "di" = (/obj/structure/alien/resin/wall,/turf/simulated/floor/plating/airless{icon_state = "floorgrime"},/area/mine/abandoned) "dj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned) @@ -205,6 +205,7 @@ "dW" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/xenos,/obj/item/clothing/head/xenos,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "green"},/area/mine/abandoned) "dX" = (/obj/machinery/door/airlock/public/glass{name = "Glass Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned) "dY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/abandoned) +"dZ" = (/obj/machinery/camera{c_tag = "Mining Outpost Port Exterior Airlock"; dir = 4; network = list("Mining Outpost")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_n1_pump"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/mine/north_outpost) "ea" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/dangerous/explored) "eb" = (/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned) "ec" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille/broken,/obj/item/shard{icon_state = "small"},/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned) @@ -335,24 +336,24 @@ "gx" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/dangerous/explored) "gy" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/dangerous/explored) "gz" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/dangerous/explored) -"gA" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/mine/laborcamp/security) +"gA" = (/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/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_n1_pump"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/mine/north_outpost) "gB" = (/obj/machinery/door/airlock/security/glass{name = "Labor Camp External Access"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) "gC" = (/obj/machinery/telecomms/relay/preset/mining,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/mine/maintenance) -"gD" = (/obj/machinery/camera{c_tag = "Mining Outpost Port Exterior Airlock"; dir = 4; network = list("Mining Outpost")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_n1_pump"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost) +"gD" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/mine/north_outpost) "gE" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/laborcamp/security) "gF" = (/obj/machinery/door/airlock/maintenance{name = "Labor Camp Maintenance"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) "gG" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/bluegrid,/area/mine/maintenance) "gH" = (/obj/machinery/camera{c_tag = "Communications Relay"; dir = 8; network = list("MINE")},/turf/simulated/floor/bluegrid,/area/mine/maintenance) "gI" = (/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) -"gJ" = (/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/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_n1_pump"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost) +"gJ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/mine/laborcamp/security) "gK" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) "gL" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) "gM" = (/obj/item/reagent_containers/food/snacks/grown/mushroom/libertycap,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) "gN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/wall,/area/mine/laborcamp/security) "gO" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) "gP" = (/obj/machinery/light/small{dir = 1},/obj/item/storage/box/lights/mixed,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"gQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/laborcamp/security) -"gR" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost) +"gQ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/alarm{pixel_y = 25},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"gR" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/mine/laborcamp/security) "gS" = (/obj/item/clothing/under/rank/miner,/obj/effect/decal/remains/human,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/dangerous/explored) "gT" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/dangerous/explored) "gU" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_n1_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/mine/north_outpost) @@ -409,7 +410,7 @@ "hT" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/dangerous/explored) "hU" = (/obj/structure/lattice,/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/dangerous/explored) "hV" = (/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/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/west_outpost) -"hW" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/west_outpost) +"hW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/mine/laborcamp/security) "hX" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) "hY" = (/obj/item/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) "hZ" = (/obj/machinery/door/airlock{id_tag = "miningdorm3"; name = "Room 3"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) @@ -417,8 +418,8 @@ "ib" = (/obj/item/stack/sheet/metal{amount = 5},/obj/structure/closet/crate,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/dangerous/explored) "ic" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/eva) "id" = (/turf/simulated/wall,/area/mine/living_quarters) -"ie" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/west_outpost) -"if" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/west_outpost) +"ie" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/mine/west_outpost) +"if" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/mine/west_outpost) "ig" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/west_outpost) "ih" = (/obj/structure/stool/bed,/obj/item/bedsheet/brown,/turf/simulated/floor/carpet,/area/mine/living_quarters) "ii" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/mine/living_quarters) @@ -433,7 +434,7 @@ "ir" = (/obj/machinery/door/airlock/mining/glass{name = "Break Room"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/west_outpost) "is" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/west_outpost) "it" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/mine/west_outpost) -"iu" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/west_outpost) +"iu" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/mine/west_outpost) "iv" = (/obj/machinery/camera{c_tag = "Crew Area"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) "iw" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) "ix" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_n1_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/dangerous/explored) @@ -460,9 +461,9 @@ "iS" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) "iT" = (/obj/structure/disposalpipe/segment,/obj/structure/sign/deathsposal,/turf/simulated/wall,/area/mine/living_quarters) "iU" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/mine/laborcamp/security) -"iV" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/laborcamp/security) +"iV" = (/obj/structure/ore_box,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/mine/west_outpost) "iW" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Labor Camp APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=5-Central"; location = "4-Maint"},/turf/simulated/floor/plating,/area/mine/laborcamp) -"iX" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/mine/laborcamp/security) +"iX" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_east_pump"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/mine/eva) "iY" = (/turf/simulated/wall,/area/mine/west_outpost) "iZ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/dangerous/explored) "ja" = (/obj/machinery/door/airlock/security/glass{name = "Labor Camp Monitoring"; req_access_txt = "2"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security) @@ -542,7 +543,7 @@ "kw" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored) "kx" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/turf/simulated/floor/plasteel,/area/mine/eva) "ky" = (/turf/simulated/wall/r_wall,/area/mine/eva) -"kz" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) +"kz" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/mine/living_quarters) "kA" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/mine/west_outpost) "kB" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/mine/west_outpost) "kC" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/item/storage/box/lights/bulbs,/turf/simulated/floor/plating,/area/mine/west_outpost) @@ -569,10 +570,10 @@ "kX" = (/turf/simulated/wall/r_wall,/area/mine/lobby) "kY" = (/obj/machinery/camera{c_tag = "Mining Outpost EVA"; dir = 4; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/mining,/turf/simulated/floor/plasteel,/area/mine/eva) "kZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/mining/glass{name = "Mining Station Bridge"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"la" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/living_quarters) +"la" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/mine/lobby) "lb" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/mine/eva) "lc" = (/obj/structure/rack,/obj/item/storage/backpack/satchel,/obj/item/pickaxe,/obj/item/storage/belt/utility,/turf/simulated/floor/plasteel,/area/mine/eva) -"ld" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/living_quarters) +"ld" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/mine/eva) "le" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/west_outpost) "lf" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/mine/west_outpost) "lg" = (/obj/structure/cable,/obj/machinery/power/smes{charge = 5e+006},/turf/simulated/floor/plating,/area/mine/west_outpost) @@ -592,21 +593,21 @@ "lu" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/mine/eva) "lv" = (/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/eva) "lw" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel,/area/mine/eva) -"lx" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) +"lx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/mine/living_quarters) "ly" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/eva) "lz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"lA" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/living_quarters) +"lA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/mine/living_quarters) "lB" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/lobby) "lC" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/living_quarters) "lD" = (/turf/simulated/floor/plasteel,/area/mine/lobby) -"lE" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/lobby) +"lE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/mine/lobby) "lF" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/mine/living_quarters) "lG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/item/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/mine/living_quarters) "lH" = (/obj/structure/rack,/obj/item/storage/firstaid/regular,/obj/item/storage/firstaid/regular{pixel_x = -3; pixel_y = -3},/turf/simulated/floor/plating,/area/mine/living_quarters) "lI" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) "lJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) "lK" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) -"lL" = (/obj/machinery/camera{c_tag = "Mining Outpost Port Connector"; dir = 1; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/mine/living_quarters) +"lL" = (/obj/machinery/camera{c_tag = "Mining Outpost Starboard External Airlock"; dir = 1; network = list("Mining Outpost")},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_east_sensor"; pixel_x = 0; pixel_y = -25},/obj/structure/ore_box,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_east_pump"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/mine/eva) "lM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/mine/lobby) "lN" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel,/area/mine/lobby) "lO" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/eva) @@ -622,7 +623,7 @@ "lY" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_west_pump"},/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters) "lZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/mining/glass{name = "Mining Station Bridge"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/lobby) "ma" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/lobby) -"mb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/lobby) +"mb" = (/obj/machinery/camera{c_tag = "Mining Outpost Port Connector"; dir = 1; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/mine/living_quarters) "mc" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/mine/lobby) "md" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/mine/lobby) "me" = (/obj/machinery/light/small{dir = 4},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_west_sensor"; pixel_x = 25; pixel_y = -5},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_west_pump"; tag_exterior_door = "mining_west_outer"; frequency = 1379; id_tag = "mining_west_airlock"; tag_interior_door = "mining_west_inner"; pixel_x = 25; pixel_y = 5; req_access_txt = null; tag_chamber_sensor = "mining_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) @@ -633,7 +634,7 @@ "mj" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/living_quarters) "mk" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/living_quarters) "ml" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/mine/living_quarters) -"mm" = (/obj/machinery/camera{c_tag = "Mining Outpost Port Exterior Airlock"; dir = 4; network = list("Mining Outpost")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/living_quarters) +"mm" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/mine/lobby) "mn" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/space,/area/mine/lobby) "mo" = (/turf/simulated/floor/plasteel{icon_state = "loadingarea"},/area/mine/production) "mp" = (/obj/machinery/power/apc{dir = 2; name = "Mining EVA APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable,/turf/simulated/floor/plasteel,/area/mine/eva) @@ -642,7 +643,7 @@ "ms" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/west_outpost) "mt" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/living_quarters) "mu" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/eva) -"mv" = (/obj/machinery/camera{c_tag = "Mining Outpost Starboard External Airlock"; dir = 1; network = list("Mining Outpost")},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_east_sensor"; pixel_x = 0; pixel_y = -25},/obj/structure/ore_box,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) +"mv" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) "mw" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_east_pump"; tag_exterior_door = "mining_east_outer"; frequency = 1379; id_tag = "mining_east_airlock"; tag_interior_door = "mining_east_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = null; tag_chamber_sensor = "mining_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor/plasteel,/area/mine/eva) "mx" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 6},/area/space) "my" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/lobby) @@ -684,8 +685,8 @@ "ni" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/mine/production{name = "Mining Station Mech Bay"}) "nj" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/dangerous/explored) "nk" = (/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/dangerous/explored) -"nl" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/mine/living_quarters) -"nm" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/mine/living_quarters) +"nl" = (/obj/machinery/sleeper{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) +"nm" = (/obj/machinery/camera{c_tag = "Mining Outpost Port Exterior Airlock"; dir = 4; network = list("Mining Outpost")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_west_pump"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/mine/living_quarters) "nn" = (/obj/structure/table,/obj/item/storage/firstaid/regular{pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) "no" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Mining Outpost Sleeper Room"; dir = 1; network = list("Mining Outpost")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) "np" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/living_quarters) @@ -695,9 +696,9 @@ "nt" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/mining/glass{name = "Mining Station Mech Bay"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) "nu" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) "nv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/mine/lobby) -"nw" = (/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/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/living_quarters) +"nw" = (/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/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_west_pump"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/mine/living_quarters) "nx" = (/obj/machinery/mineral/equipment_vendor,/turf/simulated/floor/plasteel,/area/mine/production{name = "Mining Station Mech Bay"}) -"ny" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/living_quarters) +"ny" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/mine/living_quarters) "nz" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/mine/living_quarters) "nA" = (/obj/structure/ore_box,/obj/machinery/camera{c_tag = "Mining Outpost Mech Bay"; dir = 1; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/production{name = "Mining Station Mech Bay"}) "nB" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/dangerous/explored) @@ -724,7 +725,7 @@ "nW" = (/obj/item/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) "nX" = (/obj/machinery/alarm{pixel_y = 25},/obj/structure/closet/crate/can,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) "nY" = (/obj/machinery/door/firedoor,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/living_quarters{name = "Mining Station Break Room"}) -"nZ" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/lobby) +"nZ" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light/small{dir = 8},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/mine/production) "oa" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/mine/lobby) "ob" = (/turf/simulated/floor/plasteel/airless{tag = "icon-asteroidwarning (EAST)"; icon_state = "asteroidwarning"; dir = 4},/area/mine/dangerous/explored) "oc" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) @@ -751,12 +752,14 @@ "ox" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/lobby) "oy" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/light/small,/obj/structure/disposalpipe/junction,/turf/simulated/floor/plasteel,/area/mine/lobby) "oz" = (/obj/docking_port/stationary{dir = 8; dwidth = 3; height = 5; id = "mining_away"; name = "asteroid mine"; width = 7},/turf/space,/area/space) +"oA" = (/obj/machinery/conveyor{dir = 4; id = "mining_internal"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/mine/production) "oB" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) "oC" = (/obj/machinery/light/small,/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) "oD" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) "oE" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) "oF" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/dangerous/explored) "oG" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/production) +"oH" = (/obj/machinery/telepad_cargo,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/mine/production) "oI" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/turf/space,/area/mine/dangerous/explored) "oJ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/mine/production) "oK" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/light_switch{pixel_y = 25},/obj/machinery/light/small{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/mine/production) @@ -773,9 +776,6 @@ "oW" = (/obj/structure/window/reinforced,/obj/structure/closet/crate,/turf/simulated/floor/plasteel,/area/mine/production) "oX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/window/reinforced,/obj/structure/closet/crate,/turf/simulated/floor/plasteel,/area/mine/production) "oY" = (/obj/structure/closet/walllocker/emerglocker/east,/turf/simulated/floor/plasteel{icon_state = "loadingarea"},/area/mine/production) -"oZ" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production) -"pa" = (/obj/machinery/conveyor{dir = 4; id = "mining_internal"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production) -"pb" = (/obj/machinery/telepad_cargo,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production) "pi" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/turf/space,/area/space) "pr" = (/turf/simulated/wall,/area/mine/production) "pE" = (/turf/simulated/floor/plasteel,/area/mine/production) @@ -853,7 +853,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaEaEaEaEaEaEcHczaYaYaYaYaCaYcIbHaDbAaEcZdYdXdjaEaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbwcLbVbVbVbVbVbVbVbVbVbVbVbVbwbwbwaaaaaaaaaaaaaaajajaQcNbOcObKcPbOdgcFcGcsbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaeaeaeaeaeaEcAczaYaHcRcQataXaYbHaYbcaEamebebefaEdyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbwbwbVbVbVbVbVbVbVbVbVbVbVbVbwbwbwaaaaaaaaaaaaajajajaQaQbKbKaQaQaQdpbKcGcsbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXcVgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahvhvhvhvegegegegegegegegememegegeieieieieieieiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaEcAczaYaXaYaYcIaYaHczcAaEaEcTamebekejdydyaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeababbwbwbVbVbVbVbVbVbVbVbVbVbVbVcYcYdadOdOdOdOdOdOdbcYcYbVbVdcdeddaQdqdzdrcGcsbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXcVdhdhcVgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahvhvhvhvhvhvhveoeoeoeoeoeoememememaeaeeieieieieieiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaEdiczczczczczczczczczcAaEcTamcWamefeldydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbVbVbVbVbVbVbVbVbVbVbVbVbVbVdndmdmdmdmdmdmdmdmdnbVbVbVdododoaQgDgRgJcGcsbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXdhdscVgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahvhvhvhvhvhvhveoeoeoeoeoeoememememaeaeeieieieieieiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaEdiczczczczczczczczczcAaEcTamcWamefeldydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbVbVbVbVbVbVbVbVbVbVbVbVbVbVdndmdmdmdmdmdmdmdmdnbVbVbVdododoaQdZgDgAcGcsbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXdhdscVgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahveoeoeoeoeoeoepereqeseoemememeNeNememememegegegaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaEdicAcAcAdwdvcAcAcAdidiaEcTcWcWcWcXaEdydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbVbVbVbVbVbVbVbVbVbVbVbVbVcYcYdxeeeeeeeeeeeeeecYcYbVbVbVbVbVaQaQgUbKcGdAbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXcVcVcVgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahveoeuetewevexeyezezeAeocKcKcKcKcKcKeBeBeBeBeBeiaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaeaeaeaeaeaeaeaeaeaEaEaEaEaEaEaEaEaEaEaEaEaEaEdjeDecaEaEdydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbVbVbVbVbVbVbVbVbVbVbVbVbVbwaaaaaaaaaaaaaaaabwbwbwbVbVbVbVbVbVglixhpdNdMdPbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahveoeEeCeGeFexeHezeIeKeJeQeOeOcKeLeMeNememememememaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaedydydyaEebebcWaEdydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbVbVbVbVbVbVbVbVbVbVbVbVbwaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbVbVbVdJdLdLeaeadKbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -866,9 +866,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOfPfOfQfMezfaezezfNfRexfSfVfTeOeOeLeLeLeNakemem aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeoeoeoeofWezfaedfUexfXexfhfYfheLeLeLeLfZexememememememememememaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydydydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaabwbwbwbwgXgXgXgXbwbwbwbVbVenenbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagdgbgeezezgfgigggigjexiaibeLeLeLeLfreNeNememememememememememajajabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaabwbwbwgXgXgXgXbwbwbwbVbVenenbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaghghghipingkiDgmgmgmexgmgmiEeLeLeLeLfreNemememememememememememaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaabwbwbwbwgXgXgXbwbwbwbVbVenenbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaagoiFiHiGiQiIiSiRiViUiXiWgAgBiZfheLeLeLeNeNememememememememememememaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaabwbwbwbwgXgXgXgXbwbwbwbVenenbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaagoiFiHiGiQiIiSiRgJiUgQiWgRgBiZfheLeLeLeNeNememememememememememememaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaedydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaabwbwbwbwgXgXgXgXbwbwbwbVenenbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaghgmgmgmjaiDgmgmgEgFjugmgmjvfheLeLeNeNemememememememememememememaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaabwbwbwbwgXgXgXgXbwbwbwbVenenbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaghgIjygKjAjEgNgOgPgQjFjHjGjJjIjKeNeNemememememememememememememememaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaabwbwbwbwgXgXgXgXbwbwbwbVenffgcfgbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaghgIjygKjAjEgNgOgPhWjFjHjGjJjIjKeNeNemememememememememememememememaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaabwbwbwbwgXgXgXgXbwbwbwbVenffgcfgbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajgYgZgIhagIhbgmhchdhdklhfgmeNeNeNeNememememememememememememememememaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaabwbwbwgXgXgXgXbwbwbwbVffgcfgenbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakmhhhihjhkhlgmhmhnhoknhfgmeNememememememememememaeemememememememememaaaaaaaaabababaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaabwbwbwgXgXgXgXbwbwbwbVbVbVenenbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakpkskqghghghgmgmgmgmgmgmgmcKeBeBeBemememememememaeemememememememememaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaabwbwbwgXgXgXgXbwbwbwbVgldMdMdPbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -957,20 +957,20 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeae aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababbwbVbVbVbVbVbVbVbVhrhrhrbVbVbVbwababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeizaeaeidiogWhsjVhqbVbVbVbVbVbVbVbVbVaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbwbwbwbVbVbVkukubVbVbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeababbwbwbwbwbwbwbVbVbVbVbVbVbVbVhthxhwbVbVbVbwababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababbwbwbwbwbwbwbwabababababababaeaeaeaeaeaeaeaeaeaeididiTididididididjVhqbVbVbVbVbVbVbVbVbVbVbVaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbwbVbVbVbVbVkukwkvbVbVbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaeaeaeaeaeaeaeaeaeaeaeaeabbwbwbVbViYiYiYiYiYiYhyhyhyhyiYiYiYiYhzbVbVbwababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababbwbwbVbVbVbVbVbwbwbwbwbwabababababababaeaeaeaeidididhAjbhEjdidihjeidjXidididhqhqhqidbVbVbVbVbVbVaaaaaaaaaaaaaabwbwbwbwbwbVbVbVbVbVbVbVbVkwkvkubVbVbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababaeaeaeaeaeaeaeababbwbVbVbViYjkhHhGhyhLhNhMhShQhyjNhWhVdPbVbVbwbwbwbwababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababbwbwbVbVbVbVbVbVbVbVbVbVbwbwbwbwbwabababababaeaeidjwhXjxjzjxhYidiogWhZjVidjBjCjDjDjDhqbVbVbVbVbVbVbVaaaaaaaaaaaaaabwbwbwbVbVbVbVbVbVbVbVkykykSkSjLjLbVbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaeaeaeaeaeaeababbwbVbVbViYjMjNjOhyieieieieifigjNhWijikbVbVbVbVbVbwbwbwabababababababaeaeaeaeaeaeaeaeaeaeaeabababbwbwbwbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbwbwabababababaeidiljxjWimjYjZididididjVidjBkakakakbhqbVbVbVbVbVbVbVaaaaaaaaaaaaaabVbVbVbVbVbVbVbVbVbVbVkykfkUkUkVjLbVkibVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaababababababababaeaeaeababbwbVbVbViYiqjNjNirjNjNjNjNishyitiuhydKbVbVbVbVbVbVbVbwbwbwbwabababababaeaeaeaeaeaeaeaeababababbwbwbVbVbVbVbVbVbVbVbVbVgldPbVbVbVbVbVbVbwbwbwbwababaeidkojxivjxkrjxktkbiwiykFidkWkaiBkakGhqbVbVbVbVbVbVaaaaaaaaaaaaaaaaaaaabVbVbVbVbVkXkXkXkXkykYlbkelcjLjLjLjLllllbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababbwbwbVbViYkIjNkJiKiJiLkMjNiMiYiYiYiYiYgldPbVbVbVbVbVbVbVbVbwbwbwabababaeaeaeaeaeaeaeaeabababbwbwbVbVgngcgcgcgcgcgcgcgcgrgsgcgcgcgcfgbVbVbVbVbwbwababidididididididhqkHiNhqkHidididididkKididhqhqbVbVaaaaaaaaaaaaaaaaaaaaaaaaaabVbVlmlmkLlplolulslvkglwiclylxickhllbVbVbVbVcLbwbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababbwbVbViYlfjNjchyjfjhjgjNjijljjjmlqjngrgsgcgcgcgcgcfgbVbVbVbVbwbwbwababaeaeaeaeaeaeabababbwbwbVbVgngpgngcgcgcgcgcgcgcgrgsgcgcgcfgffgcfgbVbVbVbwabababababidjoltjpkakGjqkbkGktjrjskakbkGkakalAhqhqhqjtlClClClClClClBlBlBlBlBlBlmlmlmlElDlNlMlPlOlSkjkxkkkPkzkRkQllbVbVbVbVcLbwbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababbwbVbViYiYiYiYiYjPlRjQiYiYjSjRjRjRjRgrgsgcgcgcgcfgffgcgcfgbVbVbVbwbwabababaeaeababababbwbwbVbVgngpgngpbVbVbVbVbVbVbVdJdKbVbVbVffgcfgenbVbVbVbVbwbwbwbwabididididjTkGjUkOkOiykckdkdkTkTkdkdlakZldkZlhlhlhlhlhlhlhlUlUlUlUlUlUlZmalZmbmamdmcicmpmrmqmuicmwmvicmxllbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababbwbwbVbVbVbVbViYkAmskBkCiYkEkDhrbVbVdJdKbVbVbVbVffgcgcfgenbVbVbVbVbwbwbwababababababbwbwbVbVgngpgngpbVbVbVbVbwbVbVbVbVbVbVbVbVbVbVenenbVbVbVbVbVbVbVbwbwbwbwbwidkalkljlnlnljlzlJlIlnlnlKljlLhqhqhqmgmgmgmgmgmgmgmnmnmnmnmnmnlmlmlmnZlDmzmymGmGmHmGmGmGmGmGmGllllbVbVbVbVbVcLbwbwbwbwbwgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababaeaeaeaeaeaeaeababbwbVbVbViYjkhHhGhyhLhNhMhShQhyjNiehVdPbVbVbwbwbwbwababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababbwbwbVbVbVbVbVbVbVbVbVbVbwbwbwbwbwabababababaeaeidjwhXjxjzjxhYidiogWhZjVidjBjCjDjDjDhqbVbVbVbVbVbVbVaaaaaaaaaaaaaabwbwbwbVbVbVbVbVbVbVbVkykykSkSjLjLbVbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaeaeaeaeaeaeababbwbVbVbViYjMjNjOhyififififiuigjNieijikbVbVbVbVbVbwbwbwabababababababaeaeaeaeaeaeaeaeaeaeaeabababbwbwbwbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbwbwabababababaeidiljxjWimjYjZididididjVidjBkakakakbhqbVbVbVbVbVbVbVaaaaaaaaaaaaaabVbVbVbVbVbVbVbVbVbVbVkykfkUkUkVjLbVkibVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaababababababababaeaeaeababbwbVbVbViYiqjNjNirjNjNjNjNishyitiVhydKbVbVbVbVbVbVbVbwbwbwbwabababababaeaeaeaeaeaeaeaeababababbwbwbVbVbVbVbVbVbVbVbVbVgldPbVbVbVbVbVbVbwbwbwbwababaeidkojxivjxkrjxktkbiwiykFidkWkaiBkakGhqbVbVbVbVbVbVaaaaaaaaaaaaaaaaaaaabVbVbVbVbVkXkXkXkXkykYlbkelcjLjLjLjLllllbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababbwbwbVbViYkIjNkJiKiJiLkMjNiMiYiYiYiYiYgldPbVbVbVbVbVbVbVbVbwbwbwabababaeaeaeaeaeaeaeaeabababbwbwbVbVgngcgcgcgcgcgcgcgcgrgsgcgcgcgcfgbVbVbVbVbwbwababidididididididhqkHiNhqkHidididididkKididhqhqbVbVaaaaaaaaaaaaaaaaaaaaaaaaaabVbVlmlmkLlplolulslvkglwiclyiXickhllbVbVbVbVcLbwbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababbwbVbViYlfjNjchyjfjhjgjNjijljjjmlqjngrgsgcgcgcgcgcfgbVbVbVbVbwbwbwababaeaeaeaeaeaeabababbwbwbVbVgngpgngcgcgcgcgcgcgcgrgsgcgcgcfgffgcfgbVbVbVbwabababababidjoltjpkakGjqkbkGktjrjskakbkGkakakzhqhqhqjtlClClClClClClBlBlBlBlBlBlmlmlmlalDlNlMlPlOlSkjkxkkkPldkRkQllbVbVbVbVcLbwbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababbwbVbViYiYiYiYiYjPlRjQiYiYjSjRjRjRjRgrgsgcgcgcgcfgffgcgcfgbVbVbVbwbwabababaeaeababababbwbwbVbVgngpgngpbVbVbVbVbVbVbVdJdKbVbVbVffgcfgenbVbVbVbVbwbwbwbwabididididjTkGjUkOkOiykckdkdkTkTkdkdlxkZlAkZlhlhlhlhlhlhlhlUlUlUlUlUlUlZmalZlEmamdmcicmpmrmqmuicmwlLicmxllbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababbwbwbVbVbVbVbViYkAmskBkCiYkEkDhrbVbVdJdKbVbVbVbVffgcgcfgenbVbVbVbVbwbwbwababababababbwbwbVbVgngpgngpbVbVbVbVbwbVbVbVbVbVbVbVbVbVbVenenbVbVbVbVbVbVbVbwbwbwbwbwidkalkljlnlnljlzlJlIlnlnlKljmbhqhqhqmgmgmgmgmgmgmgmnmnmnmnmnmnlmlmlmmmlDmzmymGmGmHmGmGmGmGmGmGllllbVbVbVbVbVcLbwbwbwbwbwgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababbwbwbVbVbVbViYmSlemUlgiYbVbVbVbVbVbVbVbVbVbVbVbVbVbVenfffgbVbVbVbVbVbwbwbwbwbwbwbwbwbVbVgngpgngpbVbVbwbwbwbwbwbwbwbVbVbVbVbVbVbVenenbVgldPbVbVbVbVbVbVbwbwididhqlQhqididmXlilTidididlWhqidhqbVbVbVaaaaaaaaajaaajaaaaaaaaaaajaalmlmlDmzmhmGmKmMmLmOmNmPmGmRmQbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababbwbwbVbVbViYiYiYiYiYiYbVbVbwbwbwbwbwbwbwbwbwbVbVbVfffgffgcgcgcfgbVbVbVbVbVbVbVbVbVbVbVengngpbVbVbwbwabababababbwbVbVbVbVbVbVbVenffgcgrgsgcgcgcgcfgbVbVbwidmVmTmYmWidnplGlFlXlHidlYmfmeidbVbVbVbVbVbVaaaaajaaajajajajajajajajajnamZmAnbnendndnfngngninhnknjbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababbwbVbVbVbVbVbVbVbVbVbVbVbwabababababababbwbwbVbVbVffgcgcgcfgfffgbVgldPbVbVgngcgcgcgcgpenbVbVbwbwababababababbwbwbVbVbVbVbVbVffgcgcgrgsgcgcgcfgenbVbVbVidnmnlnonnidnMnNnNlVnPidmmnynwidbVbVbVbVbVbVajajajajajaaaaaaaaaaajaaaananqmBmhntnsnunsngngninhnknjbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababbwbVbVbVbVbVbVbVbVbVbVbVbwabababababababbwbwbVbVbVffgcgcgcfgfffgbVgldPbVbVgngcgcgcgcgpenbVbVbwbwababababababbwbwbVbVbVbVbVbVffgcgcgrgsgcgcgcfgenbVbVbVidnlmvnonnidnMnNnNlVnPidnmnynwidbVbVbVbVbVbVajajajajajaaaaaaaaaaajaaaananqmBmhntnsnunsngngninhnknjbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababbwbVbVbVbVbVbVbVbVbVbwbwbwabababaeaeabababbwbwbwbVbVbVbVbVfffgffgcgrgsgcgcgpgngcgcgcgcgpbVbwbwababababababababbwbwbwbVbVbVbVbVbVbVdJdKbVbVbVenenbVbVbVkNidididididmimkmjmlnPididnzhqkNbVbVbVbVbVbVaaaaajaaajaaaaaaaaaaajaalmlmnvmCmEmGnxnInAmOmNmPmGnCnBbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababbwbwbwbwbVbVbVbVbwbwbwababaeaeaeaeaeaeaeabababbwbwbwbVbVbVbVffgcgcgrgsgcgcgcgpbVbVbVbVbVbVbwababababababaeaeabababbwbwbwbwbVbVbVbVbVbVbVbVbVenffgcfgbVbVbVbVbVbVkNidididididkNnkouobmtbVbVbVbVbVaaaaaaajaaajaaaaaaaaaanDlmnEnGnFmDnHnanJnKnJnJnJnJnJnJbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababbwbwbwbwbwbwababababaeaeaeaeaeaeaeaeababababbwbwbwbwbVbVbVbVdJdKbVbVbVbVbVbVbwbwbwbwbwababababababaeaeaeabababababbwbwbwbwbwbwbwbwbVbVffgcfgfffgbVbVbVbVbVbVbVdJdLdLdLdLdLdLdKbVbVbVbVbVbVajajajajajajaaaaaaaaoznLlDnOlDlDmDnQnanRnTnSnVnUnXnWnYbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeabababababbwbwbVbVbVbVbVbVbVbVbVbwbwbwabababababababaeaeaeaeaeaeaeabababababababababababbwbwbVbVbVfffgfffgmJbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVaaaaaaaaajaaaaaaaaaalmlmlmnZlDmFoaodocofoeohogoioinYbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeabababababbwbwbVbVbVbVbVbVbVbVbVbwbwbwabababababababaeaeaeaeaeaeaeabababababababababababbwbwbVbVbVfffgfffgmJbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVaaaaaaaaajaaaaaaaaaalmlmlmmmlDmFoaodocofoeohogoioinYbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababbwbwbwbVbVbVbwbwbwbwbwabababababaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababbwbVbVbVbVfffgffgcgcgcgcgcgcgcgcgcgcgcgcgcgcgcfgbVbVbVbVbVbVllaaaaajaaaaaaaaaaajaalmlmlDmDojolokomoioiononoonJbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbwbwbwbwababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababbwbwbwbVbVbVffgcgcgcgcgcgcgcgcgcgcgcgcgcgcgcfgenbVgldPbVbVbVehhDajajaaaaaaaaaaajaaaanaopmDmhoqoioioiosororotnYbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababbwbwbwbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVenffgcgrgsgcgcgcovoIpipipipipipipipipipioxowmIoynaoBoDoCoioEoEoinYbVbVbVbVbwbwbwbwgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -978,7 +978,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababbwbwbwbwbwbwbwbwbwbwbwbVbVbVbVbVffgcgcgrgsgcgcgcovoIpipipipipipipipipipilroJnroKoNoMoOmocKbVbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababababababbwbVbVbVbVbVbVbVbVdJdKbVbVbVehbVhDaaaaaaaaaaaaaaaaaaproPoRoQoSpEpEoTcKbVbVbVbVbVbVbVbwbwbwgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababbwbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVaaaaaaaaaaaaaaaaaaproUoWoVoXpEpEoYcKbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababbwbwbVbVbVbVbVbVbVbVbVbwababababbwaaaaaaaaaaaaaaaaaaproZpapapapapbprcKbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababbwbwbVbVbVbVbVbVbVbVbVbwababababbwaaaaaaaaaaaaaaaaaaprnZoAoAoAoAoHprcKbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababbwbwbwbwbwbwbwbwbwbwbwabababababaaaaaaaaaaaaaaaaaaprprprprprprprprbVbVbVbVbwbVbwbwbwgXgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaabVbVbVbVbVbVbVbwbwbwbwbwbwgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababababababaeaeababababaaaaaaaaaaaaaaaaaaaaaabVbVbwbwbwbwbwbwbwbwbwbwgXgXgXgXgXgXgXbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/test_all_maps.dm b/_maps/test_all_maps.dm new file mode 100644 index 00000000000..5289988bf82 --- /dev/null +++ b/_maps/test_all_maps.dm @@ -0,0 +1,112 @@ +// This is for Travis testing. DO NOT SET THIS AS THE GAME'S MAP NORMALLY! + +#if !defined(USING_MAP_DATUM) + // Away missions + #include "map_files\RandomZLevels\beach.dmm" + #include "map_files\RandomZLevels\moonoutpost19.dmm" + #include "map_files\RandomZLevels\undergroundoutpost45.dmm" + #include "map_files\RandomZLevels\academy.dmm" + #include "map_files\RandomZLevels\blackmarketpackers.dmm" + #include "map_files\RandomZLevels\spacehotel.dmm" + #include "map_files\RandomZLevels\stationCollision.dmm" + #include "map_files\RandomZLevels\wildwest.dmm" + #include "map_files\RandomZLevels\evil_santa.dmm" + + // Space Ruins + #include "map_files\RandomRuins\SpaceRuins\abandonedzoo.dmm" + #include "map_files\RandomRuins\SpaceRuins\asteroid1.dmm" + #include "map_files\RandomRuins\SpaceRuins\asteroid2.dmm" + #include "map_files\RandomRuins\SpaceRuins\asteroid3.dmm" + #include "map_files\RandomRuins\SpaceRuins\asteroid4.dmm" + #include "map_files\RandomRuins\SpaceRuins\asteroid5.dmm" + #include "map_files\RandomRuins\SpaceRuins\deepstorage.dmm" + #include "map_files\RandomRuins\SpaceRuins\derelict1.dmm" + #include "map_files\RandomRuins\SpaceRuins\derelict2.dmm" + #include "map_files\RandomRuins\SpaceRuins\derelict3.dmm" + #include "map_files\RandomRuins\SpaceRuins\derelict4.dmm" + #include "map_files\RandomRuins\SpaceRuins\derelict5.dmm" + #include "map_files\RandomRuins\SpaceRuins\emptyshell.dmm" + #include "map_files\RandomRuins\SpaceRuins\gasthelizards.dmm" + #include "map_files\RandomRuins\SpaceRuins\intactemptyship.dmm" + #include "map_files\RandomRuins\SpaceRuins\listeningpost.dmm" + #include "map_files\RandomRuins\SpaceRuins\mechtransport.dmm" + #include "map_files\RandomRuins\SpaceRuins\onehalf.dmm" + #include "map_files\RandomRuins\SpaceRuins\spacebar.dmm" + #include "map_files\RandomRuins\SpaceRuins\turretedoutpost.dmm" + #include "map_files\RandomRuins\SpaceRuins\way_home.dmm" + + // Shuttle Templates + #include "map_files\shuttles\cargo_base.dmm" + #include "map_files\shuttles\emergency_bar.dmm" + #include "map_files\shuttles\emergency_clown.dmm" + #include "map_files\shuttles\emergency_cramped.dmm" + #include "map_files\shuttles\emergency_cyb.dmm" + #include "map_files\shuttles\emergency_dept.dmm" + #include "map_files\shuttles\emergency_meta.dmm" + #include "map_files\shuttles\emergency_mil.dmm" + #include "map_files\shuttles\emergency_narnar.dmm" + #include "map_files\shuttles\emergency_old.dmm" + #include "map_files\shuttles\ferry_base.dmm" + #include "map_files\shuttles\ferry_meat.dmm" + + // Other templates + #include "map_files\templates\spacehotel\n_01.dmm" + #include "map_files\templates\spacehotel\n_02.dmm" + #include "map_files\templates\spacehotel\n_03.dmm" + #include "map_files\templates\spacehotel\n_04.dmm" + #include "map_files\templates\spacehotel\n_05.dmm" + #include "map_files\templates\spacehotel\n_06.dmm" + #include "map_files\templates\spacehotel\n_07.dmm" + #include "map_files\templates\spacehotel\n_08.dmm" + #include "map_files\templates\spacehotel\n_09.dmm" + #include "map_files\templates\spacehotel\n_10.dmm" + #include "map_files\templates\spacehotel\n_11.dmm" + #include "map_files\templates\spacehotel\n_12.dmm" + #include "map_files\templates\spacehotel\n_13.dmm" + #include "map_files\templates\spacehotel\n_14.dmm" + #include "map_files\templates\spacehotel\n_15.dmm" + #include "map_files\templates\spacehotel\n_16.dmm" + #include "map_files\templates\spacehotel\n_17.dmm" + #include "map_files\templates\spacehotel\n_18.dmm" + #include "map_files\templates\spacehotel\n_19.dmm" + + #include "map_files\templates\spacehotel\s_01.dmm" + #include "map_files\templates\spacehotel\s_02.dmm" + #include "map_files\templates\spacehotel\s_03.dmm" + #include "map_files\templates\spacehotel\s_04.dmm" + #include "map_files\templates\spacehotel\s_05.dmm" + #include "map_files\templates\spacehotel\s_06.dmm" + + #include "map_files\templates\light_floor_1.dmm" + #include "map_files\templates\light_floor_2.dmm" + #include "map_files\templates\light_floor_3.dmm" + #include "map_files\templates\medium_shuttle1.dmm" + #include "map_files\templates\medium_shuttle2.dmm" + #include "map_files\templates\medium_shuttle3.dmm" + #include "map_files\templates\shelter_1.dmm" + #include "map_files\templates\shelter_2.dmm" + #include "map_files\templates\small_asteroid_1.dmm" + #include "map_files\templates\small_shuttle_1.dmm" + + // VR maps + #include "map_files\vr\blood_and_sand.dmm" + #include "map_files\vr\lobby.dmm" + + + // This is pointless, we don't run the server + /*#define MAP_TRANSITION_CONFIG list(AWAY_MISSION = UNAFFECTED, + AWAY_MISSION = UNAFFECTED, + AWAY_MISSION = UNAFFECTED, + AWAY_MISSION = UNAFFECTED, + AWAY_MISSION = UNAFFECTED, + AWAY_MISSION = UNAFFECTED, + AWAY_MISSION = UNAFFECTED, + AWAY_MISSION = UNAFFECTED, + AWAY_MISSION = UNAFFECTED, + AWAY_MISSION = UNAFFECTED) + + #define USING_MAP_DATUM /datum/map*/ + +#elif !defined(MAP_OVERRIDE) + #warn a map has already been included. +#endif diff --git a/_maps/test_away_missions.dm b/_maps/test_away_missions.dm deleted file mode 100644 index 42b068412bd..00000000000 --- a/_maps/test_away_missions.dm +++ /dev/null @@ -1,21 +0,0 @@ -// This is for Travis testing. DO NOT SET THIS AS THE GAME'S MAP NORMALLY! - -#if !defined(USING_MAP_DATUM) - #include "map_files\RandomZLevels\beach.dmm" - #include "map_files\RandomZLevels\moonoutpost19.dmm" - #include "map_files\RandomZLevels\undergroundoutpost45.dmm" - #include "map_files\RandomZLevels\academy.dmm" - #include "map_files\RandomZLevels\blackmarketpackers.dmm" - #include "map_files\RandomZLevels\spacehotel.dmm" - #include "map_files\RandomZLevels\stationCollision.dmm" - #include "map_files\RandomZLevels\wildwest.dmm" - - #include "map_files\RandomZLevels\evil_santa.dmm" - - #define MAP_TRANSITION_CONFIG list(AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED) - - #define USING_MAP_DATUM /datum/map - -#elif !defined(MAP_OVERRIDE) - #warn a map has already been included. -#endif diff --git a/code/LINDA/LINDA_turf_tile.dm b/code/LINDA/LINDA_turf_tile.dm index 21ce7a69b0d..a8f35105cd8 100644 --- a/code/LINDA/LINDA_turf_tile.dm +++ b/code/LINDA/LINDA_turf_tile.dm @@ -314,7 +314,7 @@ else if(!anchored && !pulledby) var/turf/target = get_turf(src) var/datum/gas_mixture/target_air = target.return_air() - if(isunsimulatedturf(target) || pressure_resistance > target_air.return_pressure()) + if(isspaceturf(target) || isunsimulatedturf(target) || pressure_resistance > target_air.return_pressure()) return 0 if(pressure_difference >= throw_pressure_limit) var/general_direction = get_edge_target_turf(src, direction) @@ -324,7 +324,7 @@ var/max_distance = 14 // reduce by one each calculation to prevent infinate loops. var/min_observed_pressure = INFINITY var/turf/possible_target = get_turf(src) - while(!isunsimulatedturf(target) && max_distance > 0) + while(!isspaceturf(target) && !isunsimulatedturf(target) && max_distance > 0) max_distance-- target_air = target.return_air() min_observed_pressure = target_air.return_pressure() diff --git a/code/__DEFINES/clothing.dm b/code/__DEFINES/clothing.dm index 69561ee97ef..f7fe5b8b28e 100644 --- a/code/__DEFINES/clothing.dm +++ b/code/__DEFINES/clothing.dm @@ -90,6 +90,6 @@ #define ONESIZEFITSALL 1 // determines if something can be worn by a fatty or not. //flags for muzzle speech blocking -#define MUTE_NONE 0 // Does not mute you. -#define MUTE_MUFFLE 1 // Muffles everything you say "MHHPHHMMM!!! -#define MUTE_ALL 2 // Completely mutes you. \ No newline at end of file +#define MUZZLE_MUTE_NONE 0 // Does not mute you. +#define MUZZLE_MUTE_MUFFLE 1 // Muffles everything you say "MHHPHHMMM!!! +#define MUZZLE_MUTE_ALL 2 // Completely mutes you. \ No newline at end of file diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 8b7f4830c13..c244dc0c7a7 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -39,8 +39,7 @@ #define IGNORESLOWDOWN 256 #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 XENO_HOST 16384 //Tracks whether we're gonna be a baby alien's mummy. //Grab levels @@ -64,6 +63,17 @@ #define THROWN_PROJECTILE_ATTACK 4 #define LEAP_ATTACK 5 +//attack visual effects +#define ATTACK_EFFECT_PUNCH "punch" +#define ATTACK_EFFECT_KICK "kick" +#define ATTACK_EFFECT_SMASH "smash" +#define ATTACK_EFFECT_CLAW "claw" +#define ATTACK_EFFECT_DISARM "disarm" +#define ATTACK_EFFECT_BITE "bite" +#define ATTACK_EFFECT_MECHFIRE "mech_fire" +#define ATTACK_EFFECT_MECHTOXIN "mech_toxin" +#define ATTACK_EFFECT_BOOP "boop" //Honk + //Embedded objects #define EMBEDDED_PAIN_CHANCE 15 //Chance for embedded objects to cause pain (damage user) #define EMBEDDED_ITEM_FALLOUT 5 //Chance for embedded object to fall out (causing pain but removing the object) diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm index 9d8ca0b3013..fa62fd7af4f 100644 --- a/code/__DEFINES/construction.dm +++ b/code/__DEFINES/construction.dm @@ -18,6 +18,11 @@ #define RWALL_SUPPORT_RODS 5 #define RWALL_SHEATH 6 +//window construction states +#define WINDOW_OUT_OF_FRAME 0 +#define WINDOW_IN_FRAME 1 +#define WINDOW_SCREWED_TO_FRAME 2 + //airlock assembly construction states #define AIRLOCK_ASSEMBLY_NEEDS_WIRES 0 #define AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS 1 @@ -32,6 +37,9 @@ //windows affected by nar-sie turn this color. #define NARSIE_WINDOW_COLOUR "#7D1919" +//let's just pretend fulltile windows being children of border windows is fine +#define FULLTILE_WINDOW_DIR NORTHEAST + //Material defines, for determining how much of a given material an item contains #define MAT_METAL "$metal" #define MAT_GLASS "$glass" diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index d480bb6bbbd..2862010d316 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -26,6 +26,16 @@ var/list/static/global/pointed_types = typecacheof(list( #define is_pointed(W) (is_type_in_typecache(W, pointed_types)) +GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list( + /obj/item/stack/sheet/glass, + /obj/item/stack/sheet/rglass, + /obj/item/stack/sheet/plasmaglass, + /obj/item/stack/sheet/plasmarglass, + /obj/item/stack/sheet/titaniumglass, + /obj/item/stack/sheet/plastitaniumglass))) + +#define is_glass_sheet(O) (is_type_in_typecache(O, GLOB.glass_sheet_types)) + //Turfs #define issimulatedturf(A) istype(A, /turf/simulated) diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 8ec06dbcbd4..3ad2900bfa1 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -7,22 +7,35 @@ #define PLANE_SPACE_PARALLAX -90 #define GAME_PLANE 0 + +#define SPACE_LAYER 1.8 //#define TURF_LAYER 2 //For easy recordkeeping; this is a byond define #define MID_TURF_LAYER 2.02 #define HIGH_TURF_LAYER 2.03 +#define TURF_PLATING_DECAL_LAYER 2.031 +#define TURF_DECAL_LAYER 2.039 //Makes turf decals appear in DM how they will look inworld. #define ABOVE_OPEN_TURF_LAYER 2.04 #define CLOSED_TURF_LAYER 2.05 +#define BULLET_HOLE_LAYER 2.06 #define ABOVE_NORMAL_TURF_LAYER 2.08 #define LATTICE_LAYER 2.2 #define DISPOSAL_PIPE_LAYER 2.3 -#define GAS_PIPE_LAYER 2.35 +#define GAS_PIPE_HIDDEN_LAYER 2.35 #define WIRE_LAYER 2.4 #define WIRE_TERMINAL_LAYER 2.45 +#define GAS_SCRUBBER_LAYER 2.46 +#define GAS_PIPE_VISIBLE_LAYER 2.47 +#define GAS_FILTER_LAYER 2.48 +#define GAS_PUMP_LAYER 2.49 #define LOW_OBJ_LAYER 2.5 +#define LOW_SIGIL_LAYER 2.52 +#define SIGIL_LAYER 2.54 +#define HIGH_SIGIL_LAYER 2.56 #define BELOW_OPEN_DOOR_LAYER 2.6 #define BLASTDOOR_LAYER 2.65 #define OPEN_DOOR_LAYER 2.7 +#define DOOR_HELPER_LAYER 2.71 //keep this above OPEN_DOOR_LAYER #define PROJECTILE_HIT_THRESHHOLD_LAYER 2.75 //projectiles won't hit objects at or below this layer if possible #define TABLE_LAYER 2.8 #define BELOW_OBJ_LAYER 2.9 @@ -51,9 +64,13 @@ #define SPACEVINE_LAYER 4.8 #define SPACEVINE_MOB_LAYER 4.9 //#define FLY_LAYER 5 //For easy recordkeeping; this is a byond define +#define GASFIRE_LAYER 5.05 #define RIPPLE_LAYER 5.1 #define GHOST_LAYER 6 +#define LOW_LANDMARK_LAYER 9 +#define MID_LANDMARK_LAYER 9.1 +#define HIGH_LANDMARK_LAYER 9.2 #define AREA_LAYER 10 #define MASSIVE_OBJ_LAYER 11 #define POINT_LAYER 12 @@ -61,6 +78,26 @@ #define LIGHTING_PLANE 15 #define LIGHTING_LAYER 15 +#define ABOVE_LIGHTING_PLANE 16 +#define ABOVE_LIGHTING_LAYER 16 + +#define BYOND_LIGHTING_PLANE 17 +#define BYOND_LIGHTING_LAYER 17 + //HUD layer defines + +#define FULLSCREEN_PLANE 18 +#define FLASH_LAYER 18 +#define FULLSCREEN_LAYER 18.1 +#define UI_DAMAGE_LAYER 18.2 +#define BLIND_LAYER 18.3 +#define CRIT_LAYER 18.4 +#define CURSE_LAYER 18.5 + +#define HUD_PLANE 19 #define HUD_LAYER 19 -#define HUD_PLANE 90 \ No newline at end of file +#define ABOVE_HUD_PLANE 20 +#define ABOVE_HUD_LAYER 20 + +#define SPLASHSCREEN_LAYER 21 +#define SPLASHSCREEN_PLANE 21 \ No newline at end of file diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm index b23c5699e4b..3db7c467c24 100644 --- a/code/__DEFINES/lighting.dm +++ b/code/__DEFINES/lighting.dm @@ -2,7 +2,6 @@ #define LIGHTING_LAMBERTIAN 0 // use lambertian shading for light sources #define LIGHTING_HEIGHT 1 // height off the ground of light sources on the pseudo-z-axis, you should probably leave this alone -#define LIGHTING_LAYER 10 // drawing layer for lighting overlays #define LIGHTING_ICON 'icons/effects/lighting_overlay.dmi' // icon used for lighting shading effects #define LIGHTING_ROUND_VALUE (1 / 128) //Value used to round lumcounts, values smaller than 1/255 don't matter (if they do, thanks sinking points), greater values will make lighting less precise, but in turn increase performance, VERY SLIGHTLY. diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm index 160fa30a5c6..5b38b592ac6 100644 --- a/code/__DEFINES/machines.dm +++ b/code/__DEFINES/machines.dm @@ -7,6 +7,11 @@ #define STATIC_LIGHT 6 #define STATIC_ENVIRON 7 +//Power use +#define NO_POWER_USE 0 +#define IDLE_POWER_USE 1 +#define ACTIVE_POWER_USE 2 + //computer3 error codes, move lower in the file when it passes dev -Sayu #define PROG_CRASH 1 // Generic crash #define MISSING_PERIPHERAL 2 // Missing hardware diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 4f38a183a80..f2e72125a1b 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -200,7 +200,7 @@ #define MARKINGS_LAYER 4 #define UNDERWEAR_LAYER 5 #define MUTATIONS_LAYER 6 -#define DAMAGE_LAYER 7 +#define H_DAMAGE_LAYER 7 #define UNIFORM_LAYER 8 #define ID_LAYER 9 #define SHOES_LAYER 10 @@ -328,7 +328,6 @@ #define SECOND_DIAG_STEP 2 #define ARBITRARY_VIEWRANGE_NOHUD 2 -#define SECOND_DIAG_STEP 2 //Bloody shoes/footprints #define MAX_SHOE_BLOODINESS 100 @@ -344,5 +343,18 @@ //for obj explosion block calculation #define EXPLOSION_BLOCK_PROC -1 +#define INVESTIGATE_BOMB "bombs" + // The SQL version required by this version of the code -#define SQL_VERSION 2 +#define SQL_VERSION 4 + +// Vending machine stuff +#define CAT_NORMAL 1 +#define CAT_HIDDEN 2 +#define CAT_COIN 4 + +// Jobs +// used for alternate_option +#define GET_RANDOM_JOB 0 +#define BE_ASSISTANT 1 +#define RETURN_TO_LOBBY 2 diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index b59b2a94182..f465317db9c 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -15,7 +15,6 @@ #define CHAT_GHOSTSIGHT 8 #define CHAT_PRAYER 16 #define CHAT_RADIO 32 -#define CHAT_ATTACKLOGS 64 #define CHAT_DEBUGLOGS 128 #define CHAT_LOOC 256 #define CHAT_GHOSTRADIO 512 @@ -27,7 +26,14 @@ #define DONATOR_PUBLIC 32768 #define CHAT_NO_TICKETLOGS 65536 -#define TOGGLES_DEFAULT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_ATTACKLOGS|CHAT_LOOC|MEMBER_PUBLIC|DONATOR_PUBLIC) +#define TOGGLES_DEFAULT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_LOOC|MEMBER_PUBLIC|DONATOR_PUBLIC) + +// Admin attack logs filter system, see /proc/add_attack_logs and /proc/msg_admin_attack +#define ATKLOG_ALL 0 +#define ATKLOG_ALMOSTALL 1 +#define ATKLOG_MOST 2 +#define ATKLOG_FEW 3 +#define ATKLOG_NONE 4 // Playtime tracking system, see jobs_exp.dm #define EXP_TYPE_LIVING "Living" diff --git a/code/__DEFINES/qdel.dm b/code/__DEFINES/qdel.dm index 14fd6ea0e36..8d504edaf41 100644 --- a/code/__DEFINES/qdel.dm +++ b/code/__DEFINES/qdel.dm @@ -22,11 +22,4 @@ #define QDELING(X) (X.gc_destroyed) #define QDELETED(X) (!X || QDELING(X)) -#define QDESTROYING(X) (!X || X.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) - -/proc/check_datum_qdeleted(datum/D) //for checking if something is a datum, first, then checking gc_destroyed; get rid of this eventually. TO-DO - if(!istype(D)) - return FALSE - if(D.gc_destroyed) - return TRUE - return FALSE \ No newline at end of file +#define QDESTROYING(X) (!X || X.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) \ No newline at end of file diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm index 3acd09a1a81..22e13f87f8a 100644 --- a/code/__DEFINES/vv.dm +++ b/code/__DEFINES/vv.dm @@ -18,4 +18,5 @@ #define VV_NEW_LIST "New List" #define VV_NULL "NULL" #define VV_RESTORE_DEFAULT "Restore to Default" -#define VV_MARKED_DATUM "Marked Datum" \ No newline at end of file +#define VV_MARKED_DATUM "Marked Datum" +#define VV_REGEX "Regex" \ No newline at end of file diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 5c483b310fe..b62f32c2da9 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -490,19 +490,26 @@ proc/pollCandidates(Question, be_special_type, antag_age_check = 0, poll_time = return candidates -/proc/pollCandidatesByKeyWithVeto(adminclient, adminusr, max_slots, Question, be_special_type, antag_age_check = 0, poll_time = 300, ignore_respawnability = 0, min_hours = 0, flashwindow = TRUE, check_antaghud = TRUE) +/proc/pollCandidatesWithVeto(adminclient, adminusr, max_slots, Question, be_special_type, antag_age_check = 0, poll_time = 300, ignore_respawnability = 0, min_hours = 0, flashwindow = TRUE, check_antaghud = TRUE) var/list/willing_ghosts = pollCandidates(Question, be_special_type, antag_age_check, poll_time, ignore_respawnability, min_hours, flashwindow, check_antaghud) - var/list/candidate_ckeys = list() - var/list/selected_ckeys = list() + var/list/selected_ghosts = list() if(!willing_ghosts.len) - return selected_ckeys - for(var/mob/dead/observer/G in willing_ghosts) - candidate_ckeys += G.key - for(var/i = max_slots, (i > 0 && candidate_ckeys.len), i--) - var/this_ckey = input("Pick players. This will go on until there either no more ghosts to pick from or the slots are full.", "Candidates") as null|anything in candidate_ckeys - candidate_ckeys -= this_ckey - selected_ckeys += this_ckey - return selected_ckeys + return selected_ghosts + + var/list/candidate_ghosts = willing_ghosts.Copy() + + to_chat(adminusr, "Candidate Ghosts:"); + for(var/mob/dead/observer/G in candidate_ghosts) + if(G.key && G.client) + to_chat(adminusr, "- [G] ([G.key])"); + else + candidate_ghosts -= G + + for(var/i = max_slots, (i > 0 && candidate_ghosts.len), i--) + var/this_ghost = input("Pick players. This will go on until there either no more ghosts to pick from or the [i] remaining slot(s) are full.", "Candidates") as null|anything in candidate_ghosts + candidate_ghosts -= this_ghost + selected_ghosts += this_ghost + return selected_ghosts /proc/window_flash(client/C) if(ismob(C)) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 7f7b9715907..8628e6957cf 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -248,23 +248,35 @@ Proc for attack log creation, because really why not This is always put in the attack log. */ -/proc/add_attack_logs(mob/user, mob/target, what_done, admin_notify = TRUE) +/proc/add_attack_logs(mob/user, mob/target, what_done, custom_level) if(islist(target)) // Multi-victim adding var/list/targets = target for(var/mob/M in targets) - add_attack_logs(user, M, what_done, admin_notify) + add_attack_logs(user, M, what_done, custom_level) return - var/user_str = key_name(user) - var/target_str = key_name(target) + var/user_str = key_name_log(user) + var/target_str = key_name_log(target) if(istype(user)) user.create_attack_log("Attacked [target_str]: [what_done]") if(istype(target)) target.create_attack_log("Attacked by [user_str]: [what_done]") log_attack(user_str, target_str, what_done) - if(admin_notify) - msg_admin_attack("[key_name_admin(user)] vs [key_name_admin(target)]: [what_done]") + + var/loglevel = ATKLOG_MOST + + if(!isnull(custom_level)) + loglevel = custom_level + else if(istype(target)) + if(isLivingSSD(target)) // Attacks on SSDs are shown to admins with any log level except ATKLOG_NONE + loglevel = ATKLOG_FEW + else if(istype(user) && !user.ckey && !target.ckey) // Attacks between NPCs are only shown to admins with ATKLOG_ALL + loglevel = ATKLOG_ALL + else if(!target.ckey) // Attacks by players on NPCs are only shown to admins with ATKLOG_ALL or ATKLOG_ALMOSTALL + loglevel = ATKLOG_ALMOSTALL + + msg_admin_attack("[key_name_admin(user)] vs [key_name_admin(target)]: [what_done]", loglevel) /proc/do_mob(var/mob/user, var/mob/target, var/time = 30, var/uninterruptible = 0, progress = 1, datum/callback/extra_checks = null) if(!user || !target) @@ -478,4 +490,17 @@ This is always put in the attack log. /proc/update_all_mob_security_hud() for(var/mob/living/carbon/human/H in mob_list) - H.sec_hud_set_security_status() \ No newline at end of file + H.sec_hud_set_security_status() + +/proc/getviewsize(view) + var/viewX + var/viewY + if(isnum(view)) + var/totalviewrange = 1 + 2 * view + viewX = totalviewrange + viewY = totalviewrange + else + var/list/viewrangelist = splittext(view, "x") + viewX = text2num(viewrangelist[1]) + viewY = text2num(viewrangelist[2]) + return list(viewX, viewY) \ No newline at end of file diff --git a/code/__HELPERS/pronouns.dm b/code/__HELPERS/pronouns.dm new file mode 100644 index 00000000000..607ba3495d3 --- /dev/null +++ b/code/__HELPERS/pronouns.dm @@ -0,0 +1,224 @@ +//pronoun procs, for getting pronouns without using the text macros that only work in certain positions +//datums don't have gender, but most of their subtypes do! +/datum/proc/p_they(capitalized, temp_gender) + . = "it" + if(capitalized) + . = capitalize(.) + +/datum/proc/p_their(capitalized, temp_gender) + . = "its" + if(capitalized) + . = capitalize(.) + +/datum/proc/p_them(capitalized, temp_gender) + . = "it" + if(capitalized) + . = capitalize(.) + +/datum/proc/p_have(temp_gender) + . = "has" + +/datum/proc/p_are(temp_gender) + . = "is" + +/datum/proc/p_were(temp_gender) + . = "was" + +/datum/proc/p_do(temp_gender) + . = "does" + +/datum/proc/p_theyve(capitalized, temp_gender) + . = p_they(capitalized, temp_gender) + "'" + copytext(p_have(temp_gender), 3) + +/datum/proc/p_theyre(capitalized, temp_gender) + . = p_they(capitalized, temp_gender) + "'" + copytext(p_are(temp_gender), 2) + +// For help conjugating verbs, eg they look, but she looks +/datum/proc/p_s(temp_gender) + . = "s" + +/datum/proc/p_es(temp_gender) + . = p_s(temp_gender) + if(.) + . = "e[.]" + +//like clients, which do have gender. +/client/proc/p_they(capitalized, temp_gender) + if(!temp_gender) + temp_gender = gender + . = "they" + switch(temp_gender) + if(FEMALE) + . = "she" + if(MALE) + . = "he" + if(capitalized) + . = capitalize(.) + +/client/proc/p_their(capitalized, temp_gender) + if(!temp_gender) + temp_gender = gender + . = "their" + switch(temp_gender) + if(FEMALE) + . = "her" + if(MALE) + . = "his" + if(capitalized) + . = capitalize(.) + +/client/proc/p_them(capitalized, temp_gender) + if(!temp_gender) + temp_gender = gender + . = "them" + switch(temp_gender) + if(FEMALE) + . = "her" + if(MALE) + . = "him" + if(capitalized) + . = capitalize(.) + +/client/proc/p_have(temp_gender) + if(!temp_gender) + temp_gender = gender + . = "has" + if(temp_gender == PLURAL || temp_gender == NEUTER) + . = "have" + +/client/proc/p_are(temp_gender) + if(!temp_gender) + temp_gender = gender + . = "is" + if(temp_gender == PLURAL || temp_gender == NEUTER) + . = "are" + +/client/proc/p_were(temp_gender) + if(!temp_gender) + temp_gender = gender + . = "was" + if(temp_gender == PLURAL || temp_gender == NEUTER) + . = "were" + +/client/proc/p_do(temp_gender) + if(!temp_gender) + temp_gender = gender + . = "does" + if(temp_gender == PLURAL || temp_gender == NEUTER) + . = "do" + +/client/proc/p_s(temp_gender) + if(!temp_gender) + temp_gender = gender + if(temp_gender != PLURAL && temp_gender != NEUTER) + . = "s" + +//mobs(and atoms but atoms don't really matter write your own proc overrides) also have gender! +/mob/p_they(capitalized, temp_gender) + if(!temp_gender) + temp_gender = gender + . = "it" + switch(temp_gender) + if(FEMALE) + . = "she" + if(MALE) + . = "he" + if(PLURAL) + . = "they" + if(capitalized) + . = capitalize(.) + +/mob/p_their(capitalized, temp_gender) + if(!temp_gender) + temp_gender = gender + . = "its" + switch(temp_gender) + if(FEMALE) + . = "her" + if(MALE) + . = "his" + if(PLURAL) + . = "their" + if(capitalized) + . = capitalize(.) + +/mob/p_them(capitalized, temp_gender) + if(!temp_gender) + temp_gender = gender + . = "it" + switch(temp_gender) + if(FEMALE) + . = "her" + if(MALE) + . = "him" + if(PLURAL) + . = "them" + if(capitalized) + . = capitalize(.) + +/mob/p_have(temp_gender) + if(!temp_gender) + temp_gender = gender + . = "has" + if(temp_gender == PLURAL) + . = "have" + +/mob/p_are(temp_gender) + if(!temp_gender) + temp_gender = gender + . = "is" + if(temp_gender == PLURAL) + . = "are" + +/mob/p_were(temp_gender) + if(!temp_gender) + temp_gender = gender + . = "was" + if(temp_gender == PLURAL) + . = "were" + +/mob/p_do(temp_gender) + if(!temp_gender) + temp_gender = gender + . = "does" + if(temp_gender == PLURAL) + . = "do" + +/mob/p_s(temp_gender) + if(!temp_gender) + temp_gender = gender + if(temp_gender != PLURAL) + . = "s" + +//humans need special handling, because they can have their gender hidden +/mob/living/carbon/human/p_they(capitalized, temp_gender) + temp_gender = get_visible_gender() + return ..() + +/mob/living/carbon/human/p_their(capitalized, temp_gender) + temp_gender = get_visible_gender() + return ..() + +/mob/living/carbon/human/p_them(capitalized, temp_gender) + temp_gender = get_visible_gender() + return ..() + +/mob/living/carbon/human/p_have(temp_gender) + temp_gender = get_visible_gender() + return ..() + +/mob/living/carbon/human/p_are(temp_gender) + temp_gender = get_visible_gender() + return ..() + +/mob/living/carbon/human/p_were(temp_gender) + temp_gender = get_visible_gender() + return ..() + +/mob/living/carbon/human/p_do(temp_gender) + temp_gender = get_visible_gender() + return ..() + +/mob/living/carbon/human/p_s(temp_gender) + temp_gender = get_visible_gender() + return ..() diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 54c79d26a7f..5fb559651d5 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -547,3 +547,5 @@ proc/checkhtml(var/t) text = replacetext(text, "", "\[cell\]") text = replacetext(text, "", "\[logo\]") return text + +#define string2charlist(string) (splittext(string, regex("(\\x0A|.)")) - splittext(string, "")) \ No newline at end of file diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 20c707b38f7..35d271461df 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -170,9 +170,12 @@ Turf and target are seperate in case you want to teleport some distance from a t // Checks if doors are open /proc/DirBlocked(turf/loc,var/dir) for(var/obj/structure/window/D in loc) - if(!D.density) continue - if(D.is_fulltile()) return 1 - if(D.dir == dir) return 1 + if(!D.density) + continue + if(D.fulltile) + return 1 + if(D.dir == dir) + return 1 for(var/obj/machinery/door/D in loc) if(!D.density)//if the door is open @@ -1052,6 +1055,8 @@ proc/get_mob_with_client_list() //Find coordinates var/turf/T = get_turf(AM) //use AM's turfs, as it's coords are the same as AM's AND AM's coords are lost if it is inside another atom + if(!T) + return null var/final_x = T.x + rough_x var/final_y = T.y + rough_y @@ -1500,6 +1505,22 @@ var/mob/dview/dview_mob = new return TRUE return FALSE +//can a window be here, or is there a window blocking it? +/proc/valid_window_location(turf/T, dir_to_check) + if(!T) + return FALSE + for(var/obj/O in T) + if(istype(O, /obj/machinery/door/window) && (O.dir == dir_to_check || dir_to_check == FULLTILE_WINDOW_DIR)) + return FALSE + if(istype(O, /obj/structure/windoor_assembly)) + var/obj/structure/windoor_assembly/W = O + if(W.ini_dir == dir_to_check || dir_to_check == FULLTILE_WINDOW_DIR) + return FALSE + if(istype(O, /obj/structure/window)) + var/obj/structure/window/W = O + if(W.ini_dir == dir_to_check || W.ini_dir == FULLTILE_WINDOW_DIR || dir_to_check == FULLTILE_WINDOW_DIR) + return FALSE + return TRUE //Get the dir to the RIGHT of dir if they were on a clock //NORTH --> NORTHEAST diff --git a/code/_globalvars/configuration.dm b/code/_globalvars/configuration.dm index d26dc711339..1e35e150a25 100644 --- a/code/_globalvars/configuration.dm +++ b/code/_globalvars/configuration.dm @@ -2,6 +2,7 @@ var/datum/configuration/config = null var/host = null var/join_motd = null +GLOBAL_VAR(join_tos) var/game_version = "Custom ParaCode" var/changelog_hash = md5('html/changelog.html') //used to check if the CL changed var/game_year = (text2num(time2text(world.realtime, "YYYY")) + 544) diff --git a/code/_globalvars/logging.dm b/code/_globalvars/logging.dm index f96e83cb7a1..c48600ca40c 100644 --- a/code/_globalvars/logging.dm +++ b/code/_globalvars/logging.dm @@ -10,7 +10,6 @@ GLOBAL_VAR(world_href_log) GLOBAL_PROTECT(world_href_log) var/list/jobMax = list() -var/list/bombers = list( ) var/list/admin_log = list ( ) var/list/lastsignalers = list( ) //keeps last 100 signals here in format: "[src] used \ref[src] @ location [src.loc]: [freq]/[code]" var/list/lawchanges = list( ) //Stores who uploaded laws to which silicon-based lifeform, and what the law was @@ -20,4 +19,4 @@ var/list/IClog = list() var/list/OOClog = list() var/list/adminlog = list() -var/list/investigate_log_subjects = list("notes", "watchlist", "hrefs") \ No newline at end of file +var/list/investigate_log_subjects = list("notes", "watchlist", "hrefs") diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index d88ff6201f8..b2521527a98 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -35,6 +35,17 @@ return var/turf/pixel_turf = get_turf_pixel(A) + if(isnull(pixel_turf)) + return + if(!can_see(A)) + if(isturf(A)) //On unmodified clients clicking the static overlay clicks the turf underneath + return // So there's no point messaging admins + message_admins("[key_name_admin(src)] might be running a modified client! (failed can_see on AI click of [A]([ADMIN_COORDJMP(pixel_turf)]))") + var/message = "[key_name(src)] might be running a modified client! (failed can_see on AI click of [A]([COORD(pixel_turf)]))" + log_admin(message) + send2irc_adminless_only("NOCHEAT", "[key_name(src)] might be running a modified client! (failed checkTurfVis on AI click of [A]([COORD(pixel_turf)]))") + + var/turf_visible if(pixel_turf) turf_visible = cameranet.checkTurfVis(pixel_turf) @@ -157,9 +168,6 @@ return /atom/proc/AICtrlClick(var/mob/living/silicon/ai/user) - if(user.holo) - var/obj/machinery/hologram/holopad/H = user.holo - H.face_atom(src) return /obj/machinery/door/airlock/AICtrlClick() // Bolts doors diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index f300608e699..9679935bdaa 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -70,6 +70,12 @@ changeNext_click(1) var/list/modifiers = params2list(params) + if(modifiers["middle"] && modifiers["shift"] && modifiers["ctrl"]) + MiddleShiftControlClickOn(A) + return + if(modifiers["middle"] && modifiers["shift"]) + MiddleShiftClickOn(A) + return if(modifiers["shift"] && modifiers["ctrl"]) CtrlShiftClickOn(A) return @@ -225,6 +231,32 @@ else ..() +/* + Middle shift-click + Makes the mob face the direction of the clicked thing +*/ +/mob/proc/MiddleShiftClickOn(atom/A) + var/face_dir = get_cardinal_dir(src, A) + if(forced_look == face_dir) + forced_look = null + to_chat(src, "You are no longer facing any direction.") + return + forced_look = face_dir + to_chat(src, "You are now facing [dir2text(forced_look)].") + +/* + Middle shift-control-click + Makes the mob constantly face the object (until it's out of sight) +*/ +/mob/proc/MiddleShiftControlClickOn(atom/A) + var/face_uid = A.UID() + if(forced_look == face_uid) + forced_look = null + to_chat(src, "You are no longer facing [A].") + return + forced_look = face_uid + to_chat(src, "You are now facing [A].") + // In case of use break glass /* /atom/proc/MiddleClick(var/mob/M as mob) diff --git a/code/_onclick/click_override.dm b/code/_onclick/click_override.dm index 5fb4757a74f..7dfa8020cb8 100644 --- a/code/_onclick/click_override.dm +++ b/code/_onclick/click_override.dm @@ -39,7 +39,7 @@ var/atom/movable/newObject = new summon_path newObject.loc = get_turf(A) to_chat(user, "You release the power you had stored up, summoning \a [newObject.name]! ") - usr.loc.visible_message("[user] waves \his hand and summons \a [newObject.name]") + usr.loc.visible_message("[user] waves [user.p_their()] hand and summons \a [newObject.name]") ..() /datum/middleClickOverride/power_gloves diff --git a/code/_onclick/hud/movable_screen_objects.dm b/code/_onclick/hud/movable_screen_objects.dm index 315fce5bf65..668e0e67fc7 100644 --- a/code/_onclick/hud/movable_screen_objects.dm +++ b/code/_onclick/hud/movable_screen_objects.dm @@ -11,6 +11,8 @@ /obj/screen/movable var/snap2grid = FALSE var/moved = FALSE + var/x_off = -16 + var/y_off = -16 //Snap Screen Object //Tied to the grid, snaps to the nearest turf @@ -39,8 +41,8 @@ screen_loc = "[screen_loc_X[1]],[screen_loc_Y[1]]" else //Normalise Pixel Values (So the object drops at the center of the mouse, not 16 pixels off) - var/pix_X = text2num(screen_loc_X[2]) - 16 - var/pix_Y = text2num(screen_loc_Y[2]) - 16 + var/pix_X = text2num(screen_loc_X[2]) + x_off + var/pix_Y = text2num(screen_loc_Y[2]) + y_off screen_loc = "[screen_loc_X[1]]:[pix_X],[screen_loc_Y[1]]:[pix_Y]" moved = screen_loc diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 6a658886f83..ddd6e14a5b0 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -62,11 +62,11 @@ user.lastattacked = M M.lastattacker = user - if(user != M) - user.do_attack_animation(M) + user.do_attack_animation(M) M.attacked_by(src, user, def_zone) - add_attack_logs(user, M, "Attacked with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])", admin_notify = (force > 0 && damtype != STAMINA)) + add_attack_logs(user, M, "Attacked with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])", (M.ckey && force > 0 && damtype != STAMINA) ? null : ATKLOG_ALMOSTALL) + add_fingerprint(user) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 87b78259593..dcac994c7c7 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -12,6 +12,11 @@ if(proximity && istype(G) && G.Touch(A, 1)) return + if(HULK in mutations) + if(proximity) //no telekinetic hulk attack + if(A.attack_hulk(src)) + return + A.attack_hand(src) /atom/proc/attack_hand(mob/user as mob) diff --git a/code/controllers/Processes/nanoui.dm b/code/controllers/Processes/nanoui.dm deleted file mode 100644 index 1667af943da..00000000000 --- a/code/controllers/Processes/nanoui.dm +++ /dev/null @@ -1,19 +0,0 @@ -/datum/controller/process/nanoui/setup() - name = "nanoui" - schedule_interval = 20 // every 2 seconds - -/datum/controller/process/nanoui/statProcess() - ..() - stat(null, "[nanomanager.processing_uis.len] UIs") - -/datum/controller/process/nanoui/doWork() - for(last_object in nanomanager.processing_uis) - var/datum/nanoui/NUI = last_object - if(istype(NUI) && isnull(NUI.gcDestroyed)) - try - NUI.process() - catch(var/exception/e) - catchException(e, NUI) - else - catchBadType(NUI) - nanomanager.processing_uis -= NUI diff --git a/code/controllers/Processes/weather.dm b/code/controllers/Processes/weather.dm deleted file mode 100644 index 919352313c6..00000000000 --- a/code/controllers/Processes/weather.dm +++ /dev/null @@ -1,54 +0,0 @@ -//Used for all kinds of weather, ex. lavaland ash storms. -// TODO: This could probably be better-integrated with the space manager -var/global/datum/controller/process/weather/weather_master - -/datum/controller/process/weather - var/list/processing_weather = list() - var/list/existing_weather = list() - var/list/eligible_zlevels = list() - -/datum/controller/process/weather/setup() - name = "weather" - schedule_interval = 10 - - for(var/V in subtypesof(/datum/weather)) - var/datum/weather/W = V - existing_weather |= new W - -/datum/controller/process/weather/statProcess() - ..() - stat(null, "[processing_weather.len] weather") - -/datum/controller/process/weather/doWork() - for(var/V in processing_weather) - var/datum/weather/W = V - if(W.aesthetic) - continue - for(var/mob/living/L in mob_list) - if(W.can_impact(L)) - W.impact(L) - SCHECK - for(var/Z in eligible_zlevels) - var/list/possible_weather_for_this_z = list() - for(var/V in existing_weather) - var/datum/weather/WE = V - if(WE.target_z == Z && WE.probability) //Another check so that it doesn't run extra weather - possible_weather_for_this_z[WE] = WE.probability - var/datum/weather/W = pickweight(possible_weather_for_this_z) - run_weather(W.name) - eligible_zlevels -= Z - addtimer(CALLBACK(src, .proc/make_z_eligible, Z), rand(3000, 6000) + W.weather_duration_upper, TIMER_UNIQUE) //Around 5-10 minutes between weathers - -DECLARE_GLOBAL_CONTROLLER(weather, weather_master) - -/datum/controller/process/weather/proc/run_weather(weather_name) - if(!weather_name) - return - for(var/V in existing_weather) - var/datum/weather/W = V - if(W.name == weather_name) - W.telegraph() - SCHECK - -/datum/controller/process/weather/proc/make_z_eligible(zlevel) - eligible_zlevels |= zlevel diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 4c2774d58db..d46ec164e35 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -367,5 +367,5 @@ SUBSYSTEM_DEF(air) #undef SSAIR_ACTIVETURFS #undef SSAIR_EXCITEDGROUPS #undef SSAIR_HIGHPRESSURE -#undef SSAIR_HOTSPOT +#undef SSAIR_HOTSPOTS #undef SSAIR_SUPERCONDUCTIVITY diff --git a/code/controllers/subsystem/weather.dm b/code/controllers/subsystem/weather.dm new file mode 100644 index 00000000000..4f5798e4ae4 --- /dev/null +++ b/code/controllers/subsystem/weather.dm @@ -0,0 +1,83 @@ +#define STARTUP_STAGE 1 +#define MAIN_STAGE 2 +#define WIND_DOWN_STAGE 3 +#define END_STAGE 4 + +//Used for all kinds of weather, ex. lavaland ash storms. +SUBSYSTEM_DEF(weather) + name = "Weather" + flags = SS_BACKGROUND + wait = 10 + runlevels = RUNLEVEL_GAME + var/list/processing = list() + var/list/eligible_zlevels = list() + var/list/next_hit_by_zlevel = list() //Used by barometers to know when the next storm is coming + +/datum/controller/subsystem/weather/fire() + // process active weather + for(var/V in processing) + var/datum/weather/W = V + if(W.aesthetic || W.stage != MAIN_STAGE) + continue + for(var/i in living_mob_list) + var/mob/living/L = i + if(W.can_weather_act(L)) + W.weather_act(L) + + // start random weather on relevant levels + for(var/z in eligible_zlevels) + var/possible_weather = eligible_zlevels[z] + var/datum/weather/W = pickweight(possible_weather) + run_weather(W, list(text2num(z))) + eligible_zlevels -= z + var/randTime = rand(3000, 6000) + addtimer(CALLBACK(src, .proc/make_eligible, z, possible_weather), randTime + initial(W.weather_duration_upper), TIMER_UNIQUE) //Around 5-10 minutes between weathers + next_hit_by_zlevel["[z]"] = world.time + randTime + initial(W.telegraph_duration) + +/datum/controller/subsystem/weather/Initialize(start_timeofday) + for(var/V in subtypesof(/datum/weather)) + var/datum/weather/W = V + var/probability = initial(W.probability) + var/target_trait = initial(W.target_trait) + + // any weather with a probability set may occur at random + if(probability) + for(var/z in levels_by_trait(target_trait)) + LAZYINITLIST(eligible_zlevels["[z]"]) + eligible_zlevels["[z]"][W] = probability + ..() + +/datum/controller/subsystem/weather/proc/run_weather(datum/weather/weather_datum_type, z_levels) + if(istext(weather_datum_type)) + for(var/V in subtypesof(/datum/weather)) + var/datum/weather/W = V + if(initial(W.name) == weather_datum_type) + weather_datum_type = V + break + if(!ispath(weather_datum_type, /datum/weather)) + CRASH("run_weather called with invalid weather_datum_type: [weather_datum_type || "null"]") + return + + if(isnull(z_levels)) + z_levels = levels_by_trait(initial(weather_datum_type.target_trait)) + else if(isnum(z_levels)) + z_levels = list(z_levels) + else if(!islist(z_levels)) + CRASH("run_weather called with invalid z_levels: [z_levels || "null"]") + return + + var/datum/weather/W = new weather_datum_type(z_levels) + W.telegraph() + +/datum/controller/subsystem/weather/proc/make_eligible(z, possible_weather) + eligible_zlevels[z] = possible_weather + next_hit_by_zlevel["[z]"] = null + +/datum/controller/subsystem/weather/proc/get_weather(z, area/active_area) + var/datum/weather/A + for(var/V in processing) + var/datum/weather/W = V + if((z in W.impacted_z_levels) && W.area_type == active_area.type) + A = W + break + return A \ No newline at end of file diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index 3315cafb399..4e9380e2fed 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -94,7 +94,7 @@ debug_variables(SStimer) feedback_add_details("admin_verb","DTimer") if("Weather") - debug_variables(weather_master) + debug_variables(SSweather) feedback_add_details("admin_verb","DWeather") if("Space") debug_variables(space_manager) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 71c1bd74a28..435ccad80cd 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -438,5 +438,3 @@ var/list/advance_cures = list( var/datum/symptom/S = i total_transmittable += S.transmittable return total_transmittable - -#undef RANDOM_STARTING_LEVEL diff --git a/code/datums/diseases/berserker.dm b/code/datums/diseases/berserker.dm index 646d64b78f2..3efb4d9e06a 100644 --- a/code/datums/diseases/berserker.dm +++ b/code/datums/diseases/berserker.dm @@ -48,8 +48,8 @@ var/damage = rand(1, 5) if(prob(80)) playsound(affected_mob.loc, "punch", 25, 1, -1) - affected_mob.visible_message("[affected_mob] hits [M] with their thrashing!") + affected_mob.visible_message("[affected_mob] hits [M] with [affected_mob.p_their()] thrashing!") M.adjustBruteLoss(damage) else playsound(affected_mob.loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - affected_mob.visible_message("[affected_mob] fails to hit [M] with their thrashing!") \ No newline at end of file + affected_mob.visible_message("[affected_mob] fails to hit [M] with [affected_mob.p_their()] thrashing!") \ No newline at end of file diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm new file mode 100644 index 00000000000..a98a65cb1a2 --- /dev/null +++ b/code/datums/holocall.dm @@ -0,0 +1,190 @@ +#define HOLOPAD_MAX_DIAL_TIME 200 + +/mob/camera/aiEye/remote/holo/setLoc() + . = ..() + var/obj/machinery/hologram/holopad/H = origin + H.move_hologram(eye_user, loc) + +//this datum manages it's own references + +/datum/holocall + var/mob/living/user //the one that called + var/obj/machinery/hologram/holopad/calling_holopad //the one that sent the call + var/obj/machinery/hologram/holopad/connected_holopad //the one that answered the call (may be null) + var/list/dialed_holopads //all things called, will be cleared out to just connected_holopad once answered + + var/mob/camera/aiEye/remote/holo/eye //user's eye, once connected + var/obj/effect/overlay/holo_pad_hologram/hologram //user's hologram, once connected + var/datum/action/innate/end_holocall/hangup //hangup action + + var/call_start_time + +//creates a holocall made by `caller` from `calling_pad` to `callees` +/datum/holocall/New(mob/living/caller, obj/machinery/hologram/holopad/calling_pad, list/callees) + call_start_time = world.time + user = caller + calling_pad.outgoing_call = src + calling_holopad = calling_pad + dialed_holopads = list() + + for(var/I in callees) + var/obj/machinery/hologram/holopad/H = I + if(!QDELETED(H) && !(H.stat & NOPOWER)) + dialed_holopads += H + var/area/area = get_area(H) + LAZYADD(H.holo_calls, src) + H.atom_say("[area] pad beeps: Incoming call from [caller]!") + + if(!dialed_holopads.len) + calling_holopad.atom_say("Connection failure.") + qdel(src) + return + +//cleans up ALL references :) +/datum/holocall/Destroy() + QDEL_NULL(hangup) + + var/user_good = !QDELETED(user) + if(user_good) + user.reset_perspective() + user.remote_control = null + + if(!QDELETED(eye)) + eye.RemoveImages() + QDEL_NULL(eye) + + if(connected_holopad && !QDELETED(hologram)) + hologram = null + connected_holopad.clear_holo(user) + + user = null + + //Hologram survived holopad destro + if(!QDELETED(hologram)) + hologram.HC = null + QDEL_NULL(hologram) + + + for(var/I in dialed_holopads) + var/obj/machinery/hologram/holopad/H = I + LAZYREMOVE(H.holo_calls, src) + dialed_holopads.Cut() + + if(calling_holopad) + calling_holopad.outgoing_call = null + calling_holopad.SetLightsAndPower() + calling_holopad = null + if(connected_holopad) + connected_holopad.SetLightsAndPower() + connected_holopad = null + + + return ..() + + +//Gracefully disconnects a holopad `H` from a call. Pads not in the call are ignored. Notifies participants of the disconnection +/datum/holocall/proc/Disconnect(obj/machinery/hologram/holopad/H) + if(H == connected_holopad) + var/area/A = get_area(connected_holopad) + calling_holopad.atom_say("[A] holopad disconnected.") + else if(H == calling_holopad && connected_holopad) + connected_holopad.atom_say("[user] disconnected.") + + user.unset_machine(H) + if(istype(hangup)) + hangup.Remove(user) + + ConnectionFailure(H, TRUE) + +//Forcefully disconnects a holopad `H` from a call. Pads not in the call are ignored. +/datum/holocall/proc/ConnectionFailure(obj/machinery/hologram/holopad/H, graceful = FALSE) + if(H == connected_holopad || H == calling_holopad) + if(!graceful && H != calling_holopad) + calling_holopad.atom_say("Connection failure.") + qdel(src) + return + + LAZYREMOVE(H.holo_calls, src) + dialed_holopads -= H + if(!dialed_holopads.len) + if(graceful) + calling_holopad.atom_say("Call rejected.") + qdel(src) + +//Answers a call made to a holopad `H` which cannot be the calling holopad. Pads not in the call are ignored +/datum/holocall/proc/Answer(obj/machinery/hologram/holopad/H) + if(H == calling_holopad) + return + + if(!(H in dialed_holopads)) + return + + if(connected_holopad) + return + + for(var/I in dialed_holopads) + if(I == H) + continue + Disconnect(I) + + for(var/I in H.holo_calls) + var/datum/holocall/HC = I + if(HC != src) + HC.Disconnect(H) + + connected_holopad = H + + if(!Check()) + return + + hologram = H.activate_holo(user) + hologram.HC = src + + user.unset_machine(H) + //eyeobj code is horrid, this is the best copypasta I could make + eye = new() + eye.origin = H + eye.eye_initialized = TRUE + eye.eye_user = user + eye.name = "Camera Eye ([user.name])" + user.remote_control = eye + user.remote_view = 1 + user.reset_perspective(eye) + eye.setLoc(get_turf(H)) + + hangup = new(eye,src) + hangup.Grant(user) + +//Checks the validity of a holocall and qdels itself if it's not. Returns TRUE if valid, FALSE otherwise +/datum/holocall/proc/Check() + for(var/I in dialed_holopads) + var/obj/machinery/hologram/holopad/H = I + if((H.stat & NOPOWER)) + ConnectionFailure(H) + + if(QDELETED(src)) + return FALSE + + . = !QDELETED(user) && !user.incapacitated() && !QDELETED(calling_holopad) && !(calling_holopad.stat & NOPOWER) && user.loc == calling_holopad.loc + + if(.) + if(!connected_holopad) + . = world.time < (call_start_time + HOLOPAD_MAX_DIAL_TIME) + if(!.) + calling_holopad.atom_say("No answer received.") + calling_holopad.temp = "" + + else if(!.) + qdel(src) + +/datum/action/innate/end_holocall + name = "End Holocall" + button_icon_state = "camera_off" + var/datum/holocall/hcall + +/datum/action/innate/end_holocall/New(Target, datum/holocall/HC) + ..() + hcall = HC + +/datum/action/innate/end_holocall/Activate() + hcall.Disconnect(hcall.calling_holopad) diff --git a/code/datums/looping_sounds/weather.dm b/code/datums/looping_sounds/weather.dm new file mode 100644 index 00000000000..d355bc59c14 --- /dev/null +++ b/code/datums/looping_sounds/weather.dm @@ -0,0 +1,47 @@ +/datum/looping_sound/active_outside_ashstorm + mid_sounds = list( + 'sound/weather/ashstorm/outside/active_mid1.ogg' = 1, + 'sound/weather/ashstorm/outside/active_mid1.ogg' = 1, + 'sound/weather/ashstorm/outside/active_mid1.ogg' = 1 + ) + mid_length = 80 + start_sound = 'sound/weather/ashstorm/outside/active_start.ogg' + start_length = 130 + end_sound = 'sound/weather/ashstorm/outside/active_end.ogg' + volume = 80 + +/datum/looping_sound/active_inside_ashstorm + mid_sounds = list( + 'sound/weather/ashstorm/inside/active_mid1.ogg' = 1, + 'sound/weather/ashstorm/inside/active_mid2.ogg' = 1, + 'sound/weather/ashstorm/inside/active_mid3.ogg' = 1 + ) + mid_length = 80 + start_sound = 'sound/weather/ashstorm/inside/active_start.ogg' + start_length = 130 + end_sound = 'sound/weather/ashstorm/inside/active_end.ogg' + volume = 60 + +/datum/looping_sound/weak_outside_ashstorm + mid_sounds = list( + 'sound/weather/ashstorm/outside/weak_mid1.ogg' = 1, + 'sound/weather/ashstorm/outside/weak_mid2.ogg' = 1, + 'sound/weather/ashstorm/outside/weak_mid3.ogg' = 1 + ) + mid_length = 80 + start_sound = 'sound/weather/ashstorm/outside/weak_start.ogg' + start_length = 130 + end_sound = 'sound/weather/ashstorm/outside/weak_end.ogg' + volume = 50 + +/datum/looping_sound/weak_inside_ashstorm + mid_sounds = list( + 'sound/weather/ashstorm/inside/weak_mid1.ogg' = 1, + 'sound/weather/ashstorm/inside/weak_mid2.ogg' = 1, + 'sound/weather/ashstorm/inside/weak_mid3.ogg' = 1 + ) + mid_length = 80 + start_sound = 'sound/weather/ashstorm/inside/weak_start.ogg' + start_length = 130 + end_sound = 'sound/weather/ashstorm/inside/weak_end.ogg' + volume = 30 diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 8bc1034206e..3f62c8ffaed 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -177,7 +177,7 @@ if(ismindshielded(H)) text = "Mindshield Implant:Remove|Implanted
" else - text = "Mindshield Implant:No Implant|Implant him!
" + text = "Mindshield Implant:No Implant|Implant [H.p_them()]!
" sections["implant"] = text /** REVOLUTION ***/ text = "revolution" @@ -483,9 +483,11 @@ var/new_memo = copytext(input("Write new memory", "Memory", memory) as null|message,1,MAX_MESSAGE_LEN) if(isnull(new_memo)) return - memory = new_memo - log_admin("[key_name(usr)] has edited [key_name(current)]'s memory") - message_admins("[key_name_admin(usr)] has edited [key_name_admin(current)]'s memory") + var/confirmed = alert(usr, "Are you sure?", "Edit Memory", "Yes", "No") + if(confirmed == "Yes") // Because it is too easy to accidentally wipe someone's memory + memory = new_memo + log_admin("[key_name(usr)] has edited [key_name(current)]'s memory") + message_admins("[key_name_admin(usr)] has edited [key_name_admin(current)]'s memory") else if(href_list["obj_edit"] || href_list["obj_add"]) var/datum/objective/objective @@ -630,7 +632,7 @@ new_objective = new /datum/objective/escape/escape_with_identity new_objective.owner = src new_objective.target = new_target - new_objective.explanation_text = "Escape on the shuttle or an escape pod with the identity of [targ.current.real_name], the [targ.assigned_role] while wearing their identification card." + new_objective.explanation_text = "Escape on the shuttle or an escape pod with the identity of [targ.current.real_name], the [targ.assigned_role] while wearing [targ.current.p_their()] identification card." if("custom") var/expl = sanitize(copytext(input("Custom objective:", "Objective", objective ? objective.explanation_text : "") as text|null,1,MAX_MESSAGE_LEN)) if(!expl) @@ -742,7 +744,7 @@ if(src in ticker.mode.revolutionaries) ticker.mode.revolutionaries -= src ticker.mode.update_rev_icons_removed(src) - to_chat(current, "\red You have proven your devotion to revolution! You are a head revolutionary now!") + to_chat(current, "You have proven your devotion to revolution! You are a head revolutionary now!") else if(!(src in ticker.mode.head_revolutionaries)) to_chat(current, "You are a member of the revolutionaries' leadership now!") else @@ -1217,12 +1219,8 @@ message_admins("[key_name_admin(usr)] has given [key_name_admin(current)] an uplink") else if(href_list["obj_announce"]) - var/obj_count = 1 - to_chat(current, "
Your current objectives:") - for(var/datum/objective/objective in objectives) - to_chat(current, "Objective #[obj_count]: [objective.explanation_text]") - obj_count++ - current << 'sound/ambience/alarm4.ogg' + announce_objectives() + SEND_SOUND(current, sound('sound/ambience/alarm4.ogg')) log_admin("[key_name(usr)] has announced [key_name(current)]'s objectives") message_admins("[key_name_admin(usr)] has announced [key_name_admin(current)]'s objectives") @@ -1230,15 +1228,32 @@ // Datum antag mind procs -/datum/mind/proc/add_antag_datum(datum_type, on_gain = TRUE) - if(!datum_type) +/datum/mind/proc/add_antag_datum(datum_type_or_instance, team) + if(!datum_type_or_instance) return - if(!can_hold_antag_datum(datum_type)) + var/datum/antagonist/A + if(!ispath(datum_type_or_instance)) + A = datum_type_or_instance + if(!istype(A)) + return + else + A = new datum_type_or_instance() + //Choose snowflake variation if antagonist handles it + var/datum/antagonist/S = A.specialization(src) + if(S && S != A) + qdel(A) + A = S + if(!A.can_be_owned(src)) + qdel(A) return - var/datum/antagonist/A = new datum_type(src) - antag_datums += A - if(on_gain) - A.on_gain() + A.owner = src + LAZYADD(antag_datums, A) + A.create_team(team) + var/datum/team/antag_team = A.get_team() + if(antag_team) + antag_team.add_member(src) + A.on_gain() + return A /datum/mind/proc/remove_antag_datum(datum_type) if(!datum_type) @@ -1248,6 +1263,7 @@ A.on_removal() return TRUE + /datum/mind/proc/remove_all_antag_datums() //For the Lazy amongst us. for(var/a in antag_datums) var/datum/antagonist/A = a @@ -1264,17 +1280,13 @@ else if(A.type == datum_type) return A -/datum/mind/proc/can_hold_antag_datum(datum_type) - if(!datum_type) - return - . = TRUE - if(has_antag_datum(datum_type)) - return FALSE - for(var/i in antag_datums) - var/datum/antagonist/A = i - if(is_type_in_typecache(A, A.typecache_datum_blacklist)) - return FALSE - +/datum/mind/proc/announce_objectives() + var/obj_count = 1 + to_chat(current, "Your current objectives:") + for(var/objective in objectives) + var/datum/objective/O = objective + to_chat(current, "Objective #[obj_count]: [O.explanation_text]") + obj_count++ /datum/mind/proc/find_syndicate_uplink() var/list/L = current.get_contents() @@ -1288,7 +1300,7 @@ if(H) qdel(H) -/datum/mind/proc/make_Tratior() +/datum/mind/proc/make_Traitor() if(!(src in ticker.mode.traitors)) ticker.mode.traitors += src special_role = SPECIAL_ROLE_TRAITOR @@ -1328,7 +1340,16 @@ ticker.mode.equip_syndicate(current) -/datum/mind/proc/make_Changling() +/datum/mind/proc/make_Vampire() + if(!(src in ticker.mode.vampires)) + ticker.mode.vampires += src + ticker.mode.grant_vampire_powers(current) + special_role = SPECIAL_ROLE_VAMPIRE + ticker.mode.forge_vampire_objectives(src) + ticker.mode.greet_vampire(src) + ticker.mode.update_change_icons_added(src) + +/datum/mind/proc/make_Changeling() if(!(src in ticker.mode.changelings)) ticker.mode.changelings += src ticker.mode.grant_changeling_powers(current) @@ -1357,42 +1378,6 @@ ticker.mode.greet_wizard(src) ticker.mode.update_wiz_icons_added(src) - -/datum/mind/proc/make_Cultist() - if(!(src in ticker.mode.cult)) - ticker.mode.cult += src - ticker.mode.update_cult_icons_added(src) - special_role = SPECIAL_ROLE_CULTIST - to_chat(current, "You catch a glimpse of the Realm of [ticker.cultdat.entity_name], [ticker.cultdat.entity_title2]. You now see how flimsy the world is, you see that it should be open to the knowledge of [ticker.cultdat.entity_name].") - to_chat(current, "Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.") - var/datum/game_mode/cult/cult = ticker.mode - if(GAMEMODE_IS_CULT) - cult.memorize_cult_objectives(src) - else - var/explanation = "Summon [ticker.cultdat.entity_name] via the use of the appropriate rune. It will only work if nine cultists stand on and around it." - to_chat(current, "Objective #1: [explanation]") - current.memory += "Objective #1: [explanation]
" - - - var/mob/living/carbon/human/H = current - if(istype(H)) - var/obj/item/tome/T = new(H) - - var/list/slots = list ( - "backpack" = slot_in_backpack, - "left pocket" = slot_l_store, - "right pocket" = slot_r_store, - "left hand" = slot_l_hand, - "right hand" = slot_r_hand, - ) - var/where = H.equip_in_one_of_slots(T, slots) - if(!where) - else - to_chat(H, "A tome, a message from your new master, appears in your [where].") - - if(!ticker.mode.equip_cultist(current)) - to_chat(H, "Summoning an amulet from your Master failed.") - /datum/mind/proc/make_Rev() if(ticker.mode.head_revolutionaries.len>0) // copy targets @@ -1543,7 +1528,7 @@ ticker.mode.implanter[ref] = implanters ticker.mode.traitors += src special_role = "traitor" - to_chat(current, "You're now a loyal zealot of [missionary.name]! You now must lay down your life to protect them and assist in their goals at any cost.") + to_chat(current, "You're now a loyal zealot of [missionary.name]! You now must lay down your life to protect [missionary.p_them()] and assist in [missionary.p_their()] goals at any cost.") var/datum/objective/protect/mindslave/MS = new MS.owner = src MS.target = missionary.mind diff --git a/code/datums/spell.dm b/code/datums/spell.dm index cc3b85bf94e..04949130a07 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -115,7 +115,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin caster.reset_perspective(0) return 0 - if(is_admin_level(user.z) && (!centcom_cancast || ticker.mode.name == "ragin' mages")) //Certain spells are not allowed on the centcom zlevel + if(is_admin_level(user.z) && !centcom_cancast) //Certain spells are not allowed on the centcom zlevel return 0 if(!skipcharge) @@ -171,10 +171,13 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin /obj/effect/proc_holder/spell/proc/invocation(mob/user = usr) //spelling the spell out and setting it on recharge/reducing charges amount switch(invocation_type) if("shout") - if(prob(50))//Auto-mute? Fuck that noise - user.say(invocation) + if(!user.IsVocal()) + user.emote("makes frantic gestures!") else - user.say(replacetext(invocation," ","`")) + if(prob(50))//Auto-mute? Fuck that noise + user.say(invocation) + else + user.say(replacetext(invocation," ","`")) if("whisper") if(prob(50)) user.whisper(invocation) diff --git a/code/datums/spells/emplosion.dm b/code/datums/spells/emplosion.dm index 1ba430ad27e..b2f0a228282 100644 --- a/code/datums/spells/emplosion.dm +++ b/code/datums/spells/emplosion.dm @@ -10,6 +10,6 @@ /obj/effect/proc_holder/spell/targeted/emplosion/cast(list/targets, mob/user = usr) for(var/mob/living/target in targets) - empulse(target.loc, emp_heavy, emp_light) + empulse(target.loc, emp_heavy, emp_light, 1) - return \ No newline at end of file + return diff --git a/code/datums/spells/mime.dm b/code/datums/spells/mime.dm index 296521405a0..19b30674bf6 100644 --- a/code/datums/spells/mime.dm +++ b/code/datums/spells/mime.dm @@ -21,7 +21,7 @@ if(!usr.mind.miming) to_chat(usr, "You must dedicate yourself to silence first.") return - invocation = "[usr.real_name] looks as if a wall is in front of them." + invocation = "[usr.real_name] looks as if a wall is in front of [usr.p_them()]." else invocation_type ="none" ..() diff --git a/code/datums/spells/mind_transfer.dm b/code/datums/spells/mind_transfer.dm index 2a8408dfe4a..d6a48d25c68 100644 --- a/code/datums/spells/mind_transfer.dm +++ b/code/datums/spells/mind_transfer.dm @@ -32,7 +32,7 @@ Also, you never added distance checking after target is selected. I've went ahea return if(!target.key || !target.mind) - to_chat(user, "They appear to be catatonic. Not even magic can affect their vacant mind.") + to_chat(user, "[target.p_they(TRUE)] appear[target.p_s()] to be catatonic. Not even magic can affect [target.p_their()] vacant mind.") return if(user.suiciding) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 9a5bf86665c..bc49aa3550a 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -97,6 +97,7 @@ var/list/uplink_items = list() if(I) if(ishuman(user)) var/mob/living/carbon/human/A = user + log_game("[key_name(user)] purchased [I.name]") A.put_in_any_hand_if_possible(I) if(istype(I,/obj/item/storage/box/) && I.contents.len>0) @@ -394,6 +395,13 @@ var/list/uplink_items = list() gamemodes = list(/datum/game_mode/nuclear) surplus = 0 +/datum/uplink_item/dangerous/rapid + name = "Gloves of the North Star" + desc = "These gloves let the user punch people very fast. Does not improve weapon attack speed." + reference = "RPGD" + item = /obj/item/clothing/gloves/fingerless/rapid + cost = 8 + /datum/uplink_item/dangerous/sniper name = "Sniper Rifle" desc = "Ranged fury, Syndicate style. guaranteed to cause shock and awe or your TC back!" @@ -1418,6 +1426,7 @@ var/list/uplink_items = list() for(var/category in temp_uplink_list) buyable_items += temp_uplink_list[category] var/list/bought_items = list() + var/list/itemlog = list() U.uses -= cost U.used_TC = 20 var/remaining_TC = 50 @@ -1433,8 +1442,10 @@ var/list/uplink_items = list() continue bought_items += I.item remaining_TC -= I.cost + itemlog += I.name // To make the name more readable for the log compared to just i.item U.purchase_log += "[bicon(C)]" for(var/item in bought_items) new item(C) U.purchase_log += "[bicon(item)]" + log_game("[key_name(usr)] purchased a surplus crate with [jointext(itemlog, ", ")]") diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm index 320cc137806..7ee152648c2 100644 --- a/code/datums/weather/weather.dm +++ b/code/datums/weather/weather.dm @@ -1,10 +1,5 @@ //The effects of weather occur across an entire z-level. For instance, lavaland has periodic ash storms that scorch most unprotected creatures. -#define STARTUP_STAGE 1 -#define MAIN_STAGE 2 -#define WIND_DOWN_STAGE 3 -#define END_STAGE 4 - /datum/weather var/name = "space wind" var/desc = "Heavy gusts of wind blanket the area, periodically knocking down anyone caught in the open." @@ -29,24 +24,25 @@ var/area_type = /area/space //Types of area to affect var/list/impacted_areas = list() //Areas to be affected by the weather, calculated when the weather begins - var/target_z = MAIN_STATION //The z-level to affect var/list/protected_areas = list()//Areas that are protected and excluded from the affected areas. + var/impacted_z_levels // The list of z-levels that this weather is actively affecting - var/overlay_layer = 10 //Since it's above everything else, this is the layer used by default. 2 is below mobs and walls if you need to use that. + var/overlay_layer = AREA_LAYER //Since it's above everything else, this is the layer used by default. TURF_LAYER is below mobs and walls if you need to use that. var/aesthetic = FALSE //If the weather has no purpose other than looks var/immunity_type = "storm" //Used by mobs to prevent them from being affected by the weather var/stage = END_STAGE //The stage of the weather, from 1-4 - var/probability = FALSE //Percent chance to happen if there are other possible weathers on the z-level + // These are read by the weather subsystem and used to determine when and where to run the weather. + var/probability = 0 // Weight amongst other eligible weather. If zero, will never happen randomly. + var/target_trait = STATION_LEVEL // The z-level trait to affect when run randomly or when not overridden. -/datum/weather/New() + var/barometer_predictable = FALSE + var/next_hit_time = 0 //For barometers to know when the next storm will hit + +/datum/weather/New(z_levels) ..() - weather_master.existing_weather |= src - -/datum/weather/Destroy() - weather_master.existing_weather -= src - return ..() + impacted_z_levels = z_levels /datum/weather/proc/telegraph() if(stage == STARTUP_STAGE) @@ -59,17 +55,18 @@ affectareas -= get_areas(V) for(var/V in affectareas) var/area/A = V - if(is_on_level_name(A,target_z)) + if(A.z in impacted_z_levels) impacted_areas |= A weather_duration = rand(weather_duration_lower, weather_duration_upper) + START_PROCESSING(SSweather, src) update_areas() - for(var/V in player_list) - var/mob/M = V - if(is_on_level_name(M,target_z)) + for(var/M in player_list) + var/turf/mob_turf = get_turf(M) + if(mob_turf && (mob_turf.z in impacted_z_levels)) if(telegraph_message) to_chat(M, telegraph_message) if(telegraph_sound) - M << sound(telegraph_sound) + SEND_SOUND(M, sound(telegraph_sound)) addtimer(CALLBACK(src, .proc/start), telegraph_duration) /datum/weather/proc/start() @@ -77,14 +74,13 @@ return stage = MAIN_STAGE update_areas() - for(var/V in player_list) - var/mob/M = V - if(is_on_level_name(M,target_z)) + for(var/M in player_list) + var/turf/mob_turf = get_turf(M) + if(mob_turf && (mob_turf.z in impacted_z_levels)) if(weather_message) to_chat(M, weather_message) if(weather_sound) - M << sound(weather_sound) - weather_master.processing_weather |= src + SEND_SOUND(M, sound(weather_sound)) addtimer(CALLBACK(src, .proc/wind_down), weather_duration) /datum/weather/proc/wind_down() @@ -92,24 +88,25 @@ return stage = WIND_DOWN_STAGE update_areas() - for(var/V in player_list) - var/mob/M = V - if(is_on_level_name(M,target_z)) + for(var/M in player_list) + var/turf/mob_turf = get_turf(M) + if(mob_turf && (mob_turf.z in impacted_z_levels)) if(end_message) to_chat(M, end_message) if(end_sound) - M << sound(end_sound) - weather_master.processing_weather -= src + SEND_SOUND(M, sound(end_sound)) addtimer(CALLBACK(src, .proc/end), end_duration) /datum/weather/proc/end() if(stage == END_STAGE) - return + return 1 stage = END_STAGE + STOP_PROCESSING(SSweather, src) update_areas() -/datum/weather/proc/can_impact(mob/living/L) //Can this weather impact a mob? - if(!is_on_level_name(L,target_z)) +/datum/weather/proc/can_weather_act(mob/living/L) //Can this weather impact a mob? + var/turf/mob_turf = get_turf(L) + if(mob_turf && !(mob_turf.z in impacted_z_levels)) return if(immunity_type in L.weather_immunities) return @@ -117,7 +114,7 @@ return return 1 -/datum/weather/proc/impact(mob/living/L) //What effect does this weather have on the hapless mob? +/datum/weather/proc/weather_act(mob/living/L) //What effect does this weather have on the hapless mob? return /datum/weather/proc/update_areas() @@ -136,8 +133,8 @@ N.icon_state = end_overlay if(END_STAGE) N.color = null - N.icon_state = initial(N.icon_state) + N.icon_state = "" N.icon = 'icons/turf/areas.dmi' - N.layer = 10 //Just default back to normal area stuff since I assume setting a var is faster than initial + N.layer = AREA_LAYER //Just default back to normal area stuff since I assume setting a var is faster than initial N.invisibility = INVISIBILITY_MAXIMUM - N.opacity = 0 + N.set_opacity(FALSE) diff --git a/code/datums/weather/weather_types.dm b/code/datums/weather/weather_types.dm deleted file mode 100644 index 1581938bd96..00000000000 --- a/code/datums/weather/weather_types.dm +++ /dev/null @@ -1,118 +0,0 @@ -//Different types of weather. - -/datum/weather/floor_is_lava //The Floor is Lava: Makes all turfs damage anyone on them unless they're standing on a solid object. - name = "the floor is lava" - desc = "The ground turns into surprisingly cool lava, lightly damaging anything on the floor." - - telegraph_message = "Waves of heat emanate from the ground..." - telegraph_duration = 150 - - weather_message = "The floor is lava! Get on top of something!" - weather_duration_lower = 300 - weather_duration_upper = 600 - weather_overlay = "lava" - - end_message = "The ground cools and returns to its usual form." - end_duration = 0 - - area_type = /area - target_z = MAIN_STATION - - overlay_layer = 2 //Covers floors only - immunity_type = "lava" - -/datum/weather/floor_is_lava/impact(mob/living/L) - for(var/obj/structure/O in L.loc) - if(O.density) - return - if(L.loc.density) - return - if(!L.client) //Only sentient people are going along with it! - return - L.adjustFireLoss(3) - -/datum/weather/floor_is_lava/fake - name = "fake lava" - aesthetic = TRUE - -/datum/weather/advanced_darkness //Advanced Darkness: Restricts the vision of all affected mobs to a single tile in the cardinal directions. - name = "advanced darkness" - desc = "Everything in the area is effectively blinded, unable to see more than a foot or so around itself." - - telegraph_message = "The lights begin to dim... is the power going out?" - telegraph_duration = 150 - - weather_message = "This isn't your everyday darkness... this is advanced darkness!" - weather_duration_lower = 300 - weather_duration_upper = 300 - - end_message = "At last, the darkness recedes." - end_duration = 0 - - area_type = /area - target_z = MAIN_STATION - -/datum/weather/advanced_darkness/update_areas() - for(var/V in impacted_areas) - var/area/A = V - if(stage == MAIN_STAGE) - A.invisibility = 0 - A.opacity = 1 - A.layer = overlay_layer - A.icon = 'icons/effects/weather_effects.dmi' - A.icon_state = "darkness" - else - A.invisibility = INVISIBILITY_MAXIMUM - A.opacity = 0 - - -/datum/weather/ash_storm //Ash Storms: Common happenings on lavaland. Heavily obscures vision and deals heavy fire damage to anyone caught outside. - name = "ash storm" - desc = "An intense atmospheric storm lifts ash off of the planet's surface and billows it down across the area, dealing intense fire damage to the unprotected." - - telegraph_message = "An eerie moan rises on the wind. Sheets of burning ash blacken the horizon. Seek shelter." - telegraph_duration = 300 - telegraph_sound = 'sound/lavaland/ash_storm_windup.ogg' - telegraph_overlay = "light_ash" - - weather_message = "Smoldering clouds of scorching ash billow down around you! Get inside!" - weather_duration_lower = 600 - weather_duration_upper = 1500 - weather_sound = 'sound/lavaland/ash_storm_start.ogg' - weather_overlay = "ash_storm" - - end_message = "The shrieking wind whips away the last of the ash falls to its usual murmur. It should be safe to go outside now." - end_duration = 300 - end_sound = 'sound/lavaland/ash_storm_end.ogg' - end_overlay = "light_ash" - - area_type = /area/mine/dangerous - target_z = MINING - - immunity_type = "ash" - - probability = 90 - -/datum/weather/ash_storm/impact(mob/living/L) - if(istype(L.loc, /obj/mecha)) - return - if(ishuman(L)) - var/mob/living/carbon/human/H = L - var/thermal_protection = H.get_thermal_protection() - if(thermal_protection >= FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT) - return - L.adjustFireLoss(4) - -/datum/weather/ash_storm/emberfall //Emberfall: An ash storm passes by, resulting in harmless embers falling like snow. 10% to happen in place of an ash storm. - name = "emberfall" - desc = "A passing ash storm blankets the area in harmless embers." - - weather_message = "Gentle embers waft down around you like grotesque snow. The storm seems to have passed you by..." - weather_sound = 'sound/lavaland/ash_storm_windup.ogg' - weather_overlay = "light_ash" - - end_message = "The emberfall slows, stops. Another layer of hardened soot to the basalt beneath your feet." - - aesthetic = TRUE - - probability = 10 diff --git a/code/datums/weather/weather_types/ash_storm.dm b/code/datums/weather/weather_types/ash_storm.dm new file mode 100644 index 00000000000..3f4c57c4196 --- /dev/null +++ b/code/datums/weather/weather_types/ash_storm.dm @@ -0,0 +1,108 @@ +//Ash storms happen frequently on lavaland. They heavily obscure vision, and cause high fire damage to anyone caught outside. +/datum/weather/ash_storm + name = "ash storm" + desc = "An intense atmospheric storm lifts ash off of the planet's surface and billows it down across the area, dealing intense fire damage to the unprotected." + + telegraph_message = "An eerie moan rises on the wind. Sheets of burning ash blacken the horizon. Seek shelter." + telegraph_duration = 300 + telegraph_overlay = "light_ash" + + weather_message = "Smoldering clouds of scorching ash billow down around you! Get inside!" + weather_duration_lower = 600 + weather_duration_upper = 1200 + weather_overlay = "ash_storm" + + end_message = "The shrieking wind whips away the last of the ash and falls to its usual murmur. It should be safe to go outside now." + end_duration = 300 + end_overlay = "light_ash" + + area_type = /area/mine/dangerous // /area/lavaland/surface/outdoors + target_trait = ORE_LEVEL + + immunity_type = "ash" + +// probability = 90 + + barometer_predictable = TRUE + + var/datum/looping_sound/active_outside_ashstorm/sound_ao = new(list(), FALSE, TRUE) + var/datum/looping_sound/active_inside_ashstorm/sound_ai = new(list(), FALSE, TRUE) + var/datum/looping_sound/weak_outside_ashstorm/sound_wo = new(list(), FALSE, TRUE) + var/datum/looping_sound/weak_inside_ashstorm/sound_wi = new(list(), FALSE, TRUE) + +/datum/weather/ash_storm/telegraph() + . = ..() + var/list/inside_areas = list() + var/list/outside_areas = list() + var/list/eligible_areas = list() + for(var/z in impacted_z_levels) + eligible_areas += space_manager.areas_in_z["[z]"] + for(var/i in 1 to eligible_areas.len) + var/area/place = eligible_areas[i] + if(place.outdoors) + outside_areas += place + else + inside_areas += place + CHECK_TICK + + sound_ao.output_atoms = outside_areas + sound_ai.output_atoms = inside_areas + sound_wo.output_atoms = outside_areas + sound_wi.output_atoms = inside_areas + + sound_wo.start() + sound_wi.start() + +/datum/weather/ash_storm/start() + . = ..() + sound_wo.stop() + sound_wi.stop() + + sound_ao.start() + sound_ai.start() + +/datum/weather/ash_storm/wind_down() + . = ..() + sound_ao.stop() + sound_ai.stop() + + sound_wo.start() + sound_wi.start() + +/datum/weather/ash_storm/end() + . = ..() + sound_wo.stop() + sound_wi.stop() + +/datum/weather/ash_storm/proc/is_ash_immune(atom/L) + while(L && !isturf(L)) + if(ismecha(L)) //Mechs are immune + return TRUE + if(ishuman(L)) //Are you immune? + var/mob/living/carbon/human/H = L + var/thermal_protection = H.get_thermal_protection() + if(thermal_protection >= FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT) + return TRUE + L = L.loc //Matryoshka check + return FALSE //RIP you + +/datum/weather/ash_storm/weather_act(mob/living/L) + if(is_ash_immune(L)) + return + L.adjustFireLoss(4) + + +//Emberfalls are the result of an ash storm passing by close to the playable area of lavaland. They have a 10% chance to trigger in place of an ash storm. +/datum/weather/ash_storm/emberfall + name = "emberfall" + desc = "A passing ash storm blankets the area in harmless embers." + + weather_message = "Gentle embers waft down around you like grotesque snow. The storm seems to have passed you by..." + weather_overlay = "light_ash" + + end_message = "The emberfall slows, stops. Another layer of hardened soot to the basalt beneath your feet." + end_sound = null + + aesthetic = TRUE + +// probability = 10 \ No newline at end of file diff --git a/code/datums/weather/weather_types/floor_is_lava.dm b/code/datums/weather/weather_types/floor_is_lava.dm new file mode 100644 index 00000000000..fe7391ec9f0 --- /dev/null +++ b/code/datums/weather/weather_types/floor_is_lava.dm @@ -0,0 +1,39 @@ +//Causes fire damage to anyone not standing on a dense object. +/datum/weather/floor_is_lava + name = "the floor is lava" + desc = "The ground turns into surprisingly cool lava, lightly damaging anything on the floor." + + telegraph_message = "You feel the ground beneath you getting hot. Waves of heat distort the air." + telegraph_duration = 150 + + weather_message = "The floor is lava! Get on top of something!" + weather_duration_lower = 300 + weather_duration_upper = 600 + weather_overlay = "lava" + + end_message = "The ground cools and returns to its usual form." + end_duration = 0 + + area_type = /area + protected_areas = list(/area/space) + target_trait = STATION_LEVEL + + overlay_layer = ABOVE_OPEN_TURF_LAYER //Covers floors only + immunity_type = "lava" + + +/datum/weather/floor_is_lava/weather_act(mob/living/L) + if(issilicon(L)) + return + for(var/obj/structure/O in L.loc) + if(O.density || O.buckled_mob && istype(O, /obj/structure/stool/bed)) + return + if(L.loc.density) + return + if(!L.client) //Only sentient people are going along with it! + return + L.adjustFireLoss(3) + +/datum/weather/floor_is_lava/fake + name = "the floor is lava (fake)" + aesthetic = TRUE \ No newline at end of file diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm new file mode 100644 index 00000000000..acd155e7560 --- /dev/null +++ b/code/datums/weather/weather_types/radiation_storm.dm @@ -0,0 +1,61 @@ +//Radiation storms occur when the station passes through an irradiated area, and irradiate anyone not standing in protected areas (maintenance, emergency storage, etc.) +/datum/weather/rad_storm + name = "radiation storm" + desc = "A cloud of intense radiation passes through the area dealing rad damage to those who are unprotected." + + telegraph_duration = 400 + telegraph_message = "The air begins to grow warm." + + weather_message = "You feel waves of heat wash over you! Find shelter!" + weather_overlay = "ash_storm" + weather_duration_lower = 600 + weather_duration_upper = 1500 + weather_color = "green" + weather_sound = 'sound/misc/bloblarm.ogg' + + end_duration = 100 + end_message = "The air seems to be cooling off again." + + area_type = /area + protected_areas = list(/area/maintenance, /area/turret_protected/ai_upload, /area/turret_protected/ai_upload_foyer, + /area/turret_protected/ai, /area/storage/emergency, /area/storage/emergency2, /area/crew_quarters/sleep, /area/security/brig, /area/shuttle) + target_trait = STATION_LEVEL + + immunity_type = "rad" + +/datum/weather/rad_storm/telegraph() + ..() + status_alarm(TRUE) + make_maint_all_access() + + +/datum/weather/rad_storm/weather_act(mob/living/L) + var/resist = L.getarmor(null, "rad") + if(prob(40)) + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(!(RADIMMUNE in H.species.species_traits)) + if(prob(max(0, 100 - resist))) + randmuti(H) // Applies bad mutation + if(prob(50)) + if(prob(90)) + randmutb(H) + else + randmutg(H) + domutcheck(H, null, 1) + + L.apply_effect(20, IRRADIATE, resist) + +/datum/weather/rad_storm/end() + if(..()) + return + priority_announcement.Announce("The radiation threat has passed. Please return to your workplaces.", "Anomaly Alert") + status_alarm(FALSE) + revoke_maint_all_access() + +/datum/weather/rad_storm/proc/status_alarm(active) //Makes the status displays show the radiation warning for those who missed the announcement. + if(active) + post_status("alert", "radiation") + else + post_status("blank") + post_status("shuttle") \ No newline at end of file diff --git a/code/datums/weather/weather_types/snow_storm.dm b/code/datums/weather/weather_types/snow_storm.dm new file mode 100644 index 00000000000..4e4d5aab59d --- /dev/null +++ b/code/datums/weather/weather_types/snow_storm.dm @@ -0,0 +1,28 @@ +/datum/weather/snow_storm + name = "snow storm" + desc = "Harsh snowstorms roam the topside of this arctic planet, burying any area unfortunate enough to be in its path." +// probability = 90 + + telegraph_message = "Drifting particles of snow begin to dust the surrounding area.." + telegraph_duration = 300 + telegraph_overlay = "light_snow" + + weather_message = "Harsh winds pick up as dense snow begins to fall from the sky! Seek shelter!" + weather_overlay = "snow_storm" + weather_duration_lower = 600 + weather_duration_upper = 1500 + + end_duration = 100 + end_message = "The snowfall dies down, it should be safe to go outside again." + +// area_type = /area/awaymission/snowdin/outside + target_trait = AWAY_LEVEL + + immunity_type = "snow" + + barometer_predictable = TRUE + + +/datum/weather/snow_storm/weather_act(mob/living/L) + L.adjust_bodytemperature(-rand(5, 15)) + diff --git a/code/datums/wires/vending.dm b/code/datums/wires/vending.dm index 286ac454efc..054a7e4f669 100644 --- a/code/datums/wires/vending.dm +++ b/code/datums/wires/vending.dm @@ -1,5 +1,3 @@ -#define CAT_HIDDEN 2 // Also in code/game/machinery/vending.dm - /datum/wires/vending holder_type = /obj/machinery/vending wire_count = 4 diff --git a/code/defines/procs/admin.dm b/code/defines/procs/admin.dm index 0f2a2bd4393..cdf25ce9651 100644 --- a/code/defines/procs/admin.dm +++ b/code/defines/procs/admin.dm @@ -76,6 +76,10 @@ var/message = "[key_name(whom, 1)] [isLivingSSD(whom) ? "(SSD!)" : ""] ([admin_jump_link(whom)])" return message +/proc/key_name_log(whom) + // Key_name_admin, but does not include (?) or jump link - For logging purpose to reduce clutter while figuring out who is SSD and/or antag when being attacked. Also remove formatting since it is not displayed + var/message = "[key_name(whom, 0)][isAntag(whom) ? "(ANTAG)" : ""][isLivingSSD(whom) ? "(SSD!)": ""]" + return message /proc/log_and_message_admins(var/message as text) log_admin("[key_name(usr)] " + message) diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 90b45a19170..e331376a0dc 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -20,13 +20,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station var/atmosalm = ATMOS_ALARM_NONE var/poweralm = 1 var/party = null - var/radalert = 0 var/report_alerts = 1 // Should atmos alerts notify the AI/computers level = null name = "Space" icon = 'icons/turf/areas.dmi' icon_state = "unknown" - layer = 10 + layer = AREA_LAYER luminosity = 0 mouse_opacity = 0 invisibility = INVISIBILITY_LIGHTING @@ -141,9 +140,6 @@ var/list/ghostteleportlocs = list() /area/space/readyalert() return -/area/space/radiation_alert() - return - /area/space/partyalert() return diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 8a9a108c7b3..44a9ae7e522 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -22,7 +22,7 @@ ..() icon_state = "" - layer = 10 + layer = AREA_LAYER uid = ++global_uid all_areas += src map_name = name // Save the initial (the name set in the map) name of the area. @@ -45,7 +45,24 @@ blend_mode = BLEND_MULTIPLY // Putting this in the constructor so that it stops the icons being screwed up in the map editor. /area/Initialize() - ..() + . = ..() + + if(contents.len) + var/list/areas_in_z = space_manager.areas_in_z + var/z + for(var/i in 1 to contents.len) + var/atom/thing = contents[i] + if(!thing) + continue + z = thing.z + break + if(!z) + WARNING("No z found for [src]") + return + if(!areas_in_z["[z]"]) + areas_in_z["[z]"] = list() + areas_in_z["[z]"] += src + return INITIALIZE_HINT_LATELOAD /area/LateInitialize() @@ -160,16 +177,6 @@ eject = 0 updateicon() -/area/proc/radiation_alert() - if(!radalert) - radalert = 1 - updateicon() - -/area/proc/reset_radiation_alert() - if(radalert) - radalert = 0 - updateicon() - /area/proc/partyalert() if(!party) party = 1 @@ -183,11 +190,8 @@ updateicon() /area/proc/updateicon() - if(radalert) // always show the radiation alert, regardless of power - icon_state = "radiation" - invisibility = INVISIBILITY_LIGHTING - else if((fire || eject || party) && (!requires_power||power_environ))//If it doesn't require power, can still activate this proc. - if(fire && !radalert && !eject && !party) + if((fire || eject || party) && (!requires_power||power_environ))//If it doesn't require power, can still activate this proc. + if(fire && !eject && !party) icon_state = "red" else if(!fire && eject && !party) icon_state = "red" @@ -197,9 +201,15 @@ icon_state = "blue-red" invisibility = INVISIBILITY_LIGHTING else - // new lighting behaviour with obj lights - icon_state = null - invisibility = INVISIBILITY_MAXIMUM + var/weather_icon + for(var/V in SSweather.processing) + var/datum/weather/W = V + if(W.stage != END_STAGE && (src in W.impacted_areas)) + W.update_areas() + weather_icon = TRUE + if(!weather_icon) + icon_state = null + invisibility = INVISIBILITY_MAXIMUM /area/space/updateicon() icon_state = null @@ -384,4 +394,4 @@ for(var/obj/machinery/door/airlock/temp_airlock in src) temp_airlock.prison_open() for(var/obj/machinery/door/window/temp_windoor in src) - temp_windoor.open() + temp_windoor.open() \ No newline at end of file diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 19af319aa20..136c8950028 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -143,6 +143,12 @@ /atom/proc/setDir(newdir) dir = newdir +/atom/proc/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(does_attack_animation) + user.changeNext_move(CLICK_CD_MELEE) + add_attack_logs(user, src, "Punched with hulk powers") + user.do_attack_animation(src, ATTACK_EFFECT_SMASH) + /atom/proc/CheckParts(list/parts_list) for(var/A in parts_list) if(istype(A, /datum/reagent)) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index c7e6401e204..7ab561f0814 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -363,3 +363,70 @@ target.fingerprints += fingerprints target.fingerprintshidden += fingerprintshidden target.fingerprintslast = fingerprintslast + +/atom/movable/proc/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect, end_pixel_y) + if(!no_effect && (visual_effect_icon || used_item)) + do_item_attack_animation(A, visual_effect_icon, used_item) + + if(A == src) + return //don't do an animation if attacking self + var/pixel_x_diff = 0 + var/pixel_y_diff = 0 + var/final_pixel_y = initial(pixel_y) + if(end_pixel_y) + final_pixel_y = end_pixel_y + + var/direction = get_dir(src, A) + if(direction & NORTH) + pixel_y_diff = 8 + else if(direction & SOUTH) + pixel_y_diff = -8 + + if(direction & EAST) + pixel_x_diff = 8 + else if(direction & WEST) + pixel_x_diff = -8 + + animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff, time = 2) + animate(pixel_x = initial(pixel_x), pixel_y = final_pixel_y, time = 2) + +/atom/movable/proc/do_item_attack_animation(atom/A, visual_effect_icon, obj/item/used_item) + var/image/I + if(visual_effect_icon) + I = image('icons/effects/effects.dmi', A, visual_effect_icon, A.layer + 0.1) + else if(used_item) + I = image(used_item.icon, A, used_item.icon_state, A.layer + 0.1) + + // Scale the icon. + I.transform *= 0.75 + // The icon should not rotate. + I.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA + + // Set the direction of the icon animation. + var/direction = get_dir(src, A) + if(direction & NORTH) + I.pixel_y = -16 + else if(direction & SOUTH) + I.pixel_y = 16 + + if(direction & EAST) + I.pixel_x = -16 + else if(direction & WEST) + I.pixel_x = 16 + + if(!direction) // Attacked self?! + I.pixel_z = 16 + + if(!I) + return + + // Who can see the attack? + var/list/viewing = list() + for(var/mob/M in viewers(A)) + if(M.client && M.client.prefs.show_ghostitem_attack) + viewing |= M.client + + flick_overlay(I, viewing, 5) // 5 ticks/half a second + + // And animate the attack! + animate(I, alpha = 175, pixel_x = 0, pixel_y = 0, pixel_z = 0, time = 3) \ No newline at end of file diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index 99355320491..93d9977b5e8 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -192,7 +192,7 @@ return for(var/mob/living/carbon/slime/M in range(1,L)) if(M.Victim == L) - to_chat(usr, "[L.name] will not fit into the [src] because they have a slime latched onto their head.") + to_chat(usr, "[L.name] will not fit into the [src] because [L.p_they()] [L.p_have()] a slime latched onto [L.p_their()] head.") return if(L == user) visible_message("[user] climbs into the [src].") diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm index 6fbc30883ca..37292beb8fe 100644 --- a/code/game/dna/genes/goon_powers.dm +++ b/code/game/dna/genes/goon_powers.dm @@ -179,8 +179,7 @@ C.ExtinguishMob() C.visible_message("[user] sprays a cloud of fine ice crystals, engulfing [C]!") - log_attack(user, C, "Used cryokinesis on a victim without internals or a suit") - msg_admin_attack("[key_name_admin(user)] has cast cryokinesis on [key_name_admin(C)] (NO SUIT)") + add_attack_logs(user, C, "Cryokinesis- NO SUIT/INTERNALS") //playsound(user.loc, 'bamf.ogg', 50, 0) @@ -318,14 +317,6 @@ var/atom/movable/the_item = targets[1] if(ishuman(the_item)) - //My gender - var/m_his = "his" - if(user.gender == FEMALE) - m_his = "her" - // Their gender - var/t_his = "his" - if(the_item.gender == FEMALE) - t_his = "her" var/mob/living/carbon/human/H = the_item var/obj/item/organ/external/limb = H.get_organ(user.zone_sel.selecting) if(!istype(limb)) @@ -334,15 +325,15 @@ return 0 if(istype(limb,/obj/item/organ/external/head)) // Bullshit, but prevents being unable to clone someone. - to_chat(user, "You try to put \the [limb] in your mouth, but [t_his] ears tickle your throat!") + to_chat(user, "You try to put \the [limb] in your mouth, but [the_item.p_their()] ears tickle your throat!") revert_cast() return 0 if(istype(limb,/obj/item/organ/external/chest)) // Bullshit, but prevents being able to instagib someone. - to_chat(user, "You try to put their [limb] in your mouth, but it's too big to fit!") + to_chat(user, "You try to put [the_item.p_their()] [limb] in your mouth, but it's too big to fit!") revert_cast() return 0 - user.visible_message("[user] begins stuffing [the_item]'s [limb.name] into [m_his] gaping maw!") + user.visible_message("[user] begins stuffing [the_item]'s [limb.name] into [user.p_their()] gaping maw!") var/oldloc = H.loc if(!do_mob(user,H,EAT_MOB_DELAY)) to_chat(user, "You were interrupted before you could eat [the_item]!") @@ -434,7 +425,7 @@ user.flying = prevFlying if(FAT in user.mutations && prob(66)) - user.visible_message("[user.name] crashes due to their heavy weight!") + user.visible_message("[user.name] crashes due to [user.p_their()] heavy weight!") //playsound(user.loc, 'zhit.wav', 50, 1) user.AdjustWeakened(10) user.AdjustStunned(5) @@ -559,10 +550,10 @@ return if(M.stat == 2) - to_chat(user, "[M.name] is dead and cannot have their mind read.") + to_chat(user, "[M.name] is dead and cannot have [M.p_their()] mind read.") return if(M.health < 0) - to_chat(user, "[M.name] is dying, and their thoughts are too scrambled to read.") + to_chat(user, "[M.name] is dying, and [M.p_their()] thoughts are too scrambled to read.") return to_chat(user, "Mind Reading of [M.name]:") @@ -570,8 +561,8 @@ var/pain_condition = M.health / M.maxHealth // lower health means more pain var/list/randomthoughts = list("what to have for lunch","the future","the past","money", - "their hair","what to do next","their job","space","amusing things","sad things", - "annoying things","happy things","something incoherent","something they did wrong") + "[M.p_their()] hair","what to do next","[M.p_their()] job","space","amusing things","sad things", + "annoying things","happy things","something incoherent","something [M.p_they()] did wrong") var/thoughts = "thinking about [pick(randomthoughts)]" if(M.fire_stacks) @@ -592,7 +583,7 @@ to_chat(user, "Condition: [M.name] is suffering severe pain.") else to_chat(user, "Condition: [M.name] is suffering excruciating pain.") - thoughts = "haunted by their own mortality" + thoughts = "haunted by [M.p_their()] own mortality" switch(M.a_intent) if(INTENT_HELP) @@ -655,7 +646,7 @@ action_icon_state = "superfart" /obj/effect/proc_holder/spell/aoe_turf/superfart/invocation(mob/user = usr) - invocation = "[user] hunches down and grits their teeth!" + invocation = "[user] hunches down and grits [user.p_their()] teeth!" invocation_emote_self = "You hunch down and grit your teeth!" ..(user) diff --git a/code/game/dna/genes/vg_powers.dm b/code/game/dna/genes/vg_powers.dm index bfd75f486e0..3e709560a45 100644 --- a/code/game/dna/genes/vg_powers.dm +++ b/code/game/dna/genes/vg_powers.dm @@ -173,7 +173,7 @@ M.update_dna() - M.visible_message("[src] morphs and changes [M.get_visible_gender() == MALE ? "his" : M.get_visible_gender() == FEMALE ? "her" : "their"] appearance!", "You change your appearance!", "Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!") + M.visible_message("[src] morphs and changes [p_their()] appearance!", "You change your appearance!", "Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!") /datum/dna/gene/basic/grant_spell/remotetalk name="Telepathy" diff --git a/code/game/gamemodes/autotraitor/autotraitor.dm b/code/game/gamemodes/autotraitor/autotraitor.dm index 93fe05ffa10..eb32bed006d 100644 --- a/code/game/gamemodes/autotraitor/autotraitor.dm +++ b/code/game/gamemodes/autotraitor/autotraitor.dm @@ -191,7 +191,7 @@ //message_admins("The probability of a new traitor is [traitor_prob]%") if(prob(traitor_prob)) message_admins("New traitor roll passed. Making a new Traitor.") - character.mind.make_Tratior() //TEMP: Add proper checks for loyalty here. uc_guy + character.mind.make_Traitor() //TEMP: Add proper checks for loyalty here. uc_guy //else //message_admins("New traitor roll failed. No new traitor.") //else diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm index 0bcd942b7a0..80bba117a20 100644 --- a/code/game/gamemodes/blob/blob.dm +++ b/code/game/gamemodes/blob/blob.dm @@ -119,7 +119,7 @@ var/list/blob_nodes = list() if(!is_station_level(location.z) || istype(location, /turf/space)) if(!warned) to_chat(C, "You feel ready to burst, but this isn't an appropriate place! You must return to the station!") - message_admins("[key_name_admin(C)] was in space when the blobs burst, and will die if he doesn't return to the station.") + message_admins("[key_name_admin(C)] was in space when the blobs burst, and will die if [C.p_they()] [C.p_do()] not return to the station.") spawn(300) burst_blob(blob, 1) else diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index e53a74c8daa..15a3b2e222f 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -147,6 +147,9 @@ ..() take_damage(power/400, BURN) +/obj/structure/blob/hulk_damage() + return 15 + /obj/structure/blob/attackby(var/obj/item/W, var/mob/living/user, params) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index a9c5882094d..329408bffce 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -113,7 +113,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" identity_theft.target_real_name = kill_objective.target.current.real_name //Whoops, forgot this. var/mob/living/carbon/human/H = identity_theft.target.current if(can_absorb_species(H.species)) // For species that can't be absorbed - should default to an escape objective - identity_theft.explanation_text = "Escape on the shuttle or an escape pod with the identity of [identity_theft.target_real_name], the [identity_theft.target.assigned_role] while wearing their identification card." + identity_theft.explanation_text = "Escape on the shuttle or an escape pod with the identity of [identity_theft.target_real_name], the [identity_theft.target.assigned_role] while wearing [identity_theft.target.p_their()] identification card." changeling.objectives += identity_theft else qdel(identity_theft) diff --git a/code/game/gamemodes/changeling/evolution_menu.dm b/code/game/gamemodes/changeling/evolution_menu.dm index d690f095236..a7af2b94482 100644 --- a/code/game/gamemodes/changeling/evolution_menu.dm +++ b/code/game/gamemodes/changeling/evolution_menu.dm @@ -20,7 +20,7 @@ var/list/sting_paths /obj/effect/proc_holder/changeling/evolution_menu/proc/create_menu(var/datum/changeling/changeling) var/dat - dat +="Changling Evolution Menu" + dat +="Changeling Evolution Menu" //javascript, the part that does most of the work~ dat += {" diff --git a/code/game/gamemodes/changeling/powers/absorb.dm b/code/game/gamemodes/changeling/powers/absorb.dm index e9ae34d2cfa..b60cfee4718 100644 --- a/code/game/gamemodes/changeling/powers/absorb.dm +++ b/code/game/gamemodes/changeling/powers/absorb.dm @@ -73,8 +73,8 @@ recent_speech = target.say_log.Copy() if(recent_speech.len) - user.mind.store_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!") + user.mind.store_memory("Some of [target]'s speech patterns. We should study these to better impersonate [target.p_them()]!") + to_chat(user, "Some of [target]'s speech patterns. We should study these to better impersonate [target.p_them()]!") for(var/spoken_memory in recent_speech) user.mind.store_memory("\"[spoken_memory]\"") to_chat(user, "\"[spoken_memory]\"") diff --git a/code/game/gamemodes/changeling/powers/biodegrade.dm b/code/game/gamemodes/changeling/powers/biodegrade.dm index 3103416b9e4..5142734183b 100644 --- a/code/game/gamemodes/changeling/powers/biodegrade.dm +++ b/code/game/gamemodes/changeling/powers/biodegrade.dm @@ -16,7 +16,7 @@ var/obj/O = user.get_item_by_slot(slot_handcuffed) if(!istype(O)) return FALSE - user.visible_message("[user] vomits a glob of acid on \his [O]!", \ + user.visible_message("[user] vomits a glob of acid on [user.p_their()] [O.name]!", \ "We vomit acidic ooze onto our restraints!") addtimer(CALLBACK(src, .proc/dissolve_handcuffs, user, O), 30) used = TRUE @@ -25,7 +25,7 @@ var/obj/item/clothing/suit/S = user.get_item_by_slot(slot_wear_suit) if(!istype(S)) return FALSE - user.visible_message("[user] vomits a glob of acid across the front of \his [S]!", \ + user.visible_message("[user] vomits a glob of acid across the front of [user.p_their()] [S.name]!", \ "We vomit acidic ooze onto our straight jacket!") addtimer(CALLBACK(src, .proc/dissolve_straightjacket, user, S), 30) used = TRUE diff --git a/code/game/gamemodes/changeling/powers/linglink.dm b/code/game/gamemodes/changeling/powers/linglink.dm index 4b59c255128..52de921d7ec 100644 --- a/code/game/gamemodes/changeling/powers/linglink.dm +++ b/code/game/gamemodes/changeling/powers/linglink.dm @@ -47,7 +47,7 @@ to_chat(user, "We stealthily stab [target] with a minor proboscis...") to_chat(target, "You experience a stabbing sensation and your ears begin to ring...") if(3) - to_chat(user, "You mold the [target]'s mind like clay, they can now speak in the hivemind!") + to_chat(user, "You mold the [target]'s mind like clay, [target.p_they()] can now speak in the hivemind!") to_chat(target, "A migraine throbs behind your eyes, you hear yourself screaming - but your mouth has not opened!") for(var/mob/M in mob_list) if(all_languages["Changeling"] in M.languages) diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm index 4e084e8b720..4cf998cf043 100644 --- a/code/game/gamemodes/changeling/powers/mutations.dm +++ b/code/game/gamemodes/changeling/powers/mutations.dm @@ -25,13 +25,13 @@ if(istype(user.l_hand, weapon_type)) //Not the nicest way to do it, but eh qdel(user.l_hand) if(!silent) - user.visible_message("With a sickening crunch, [user] reforms his [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "With a sickening crunch, [user] reforms [user.p_their()] [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "With a sickening crunch, [user] reforms his [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "With a sickening crunch, [user] reforms [user.p_their()] [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "[H] casts off their [suit_name_simple]!", "We cast off our [suit_name_simple][genetic_damage > 0 ? ", temporarily weakening our genomes." : "."]", "You hear the organic matter ripping and tearing!") + H.visible_message("[H] casts off [H.p_their()] [suit_name_simple]!", "We cast off our [suit_name_simple][genetic_damage > 0 ? ", temporarily weakening our genomes." : "."]", "You hear the organic matter ripping and tearing!") qdel(H.wear_suit) qdel(H.head) H.update_inv_wear_suit() @@ -138,7 +138,7 @@ loc.visible_message("A grotesque blade forms around [loc.name]\'s arm!", "Our arm twists and mutates, transforming it into a deadly blade.", "You hear organic matter ripping and tearing!") /obj/item/melee/arm_blade/dropped(mob/user) - user.visible_message("With a sickening crunch, [user] reforms his blade into an arm!", "We assimilate the blade back into our body.", "With a sickening crunch, [user] reforms [user.p_their()] blade into an arm!", "We assimilate the blade back into our body.", "[user] forces the airlock to open with \his [src]!", "We force the airlock to open.", "You hear a metal screeching sound.") + user.visible_message("[user] forces the airlock to open with [user.p_their()] [name]!", "We force the airlock to open.", "You hear a metal screeching sound.") A.open(2) /***************************************\ @@ -219,7 +219,7 @@ to_chat(user, "The [name] is not ready yet.") /obj/item/gun/magic/tentacle/suicide_act(mob/user) - user.visible_message("[user] coils [src] tightly around \his neck! It looks like \he's trying to commit suicide.") + user.visible_message("[user] coils [src] tightly around [user.p_their()] neck! It looks like [user.p_theyre()] trying to commit suicide.") return (OXYLOSS) /obj/item/ammo_casing/magic/tentacle @@ -278,7 +278,7 @@ C.visible_message("[src] impales [C] with [I]!", "[src] impales you with [I]!") C.apply_damage(I.force, BRUTE, "chest") - do_attack_animation(C) + do_item_attack_animation(C, used_item = I) add_blood(C) playsound(get_turf(src), I.hitsound, 75, 1) @@ -386,7 +386,7 @@ if(remaining_uses < 1) if(ishuman(loc)) var/mob/living/carbon/human/H = loc - H.visible_message("With a sickening crunch, [H] reforms his shield into an arm!", "We assimilate our shield into our body", "With a sickening crunch, [H] reforms [H.p_their()] shield into an arm!", "We assimilate our shield into our body", "[loc.name]\'s flesh rapidly inflates, forming a bloated mass around their body!", "We inflate our flesh, creating a spaceproof suit!", "You hear organic matter ripping and tearing!") + loc.visible_message("[loc.name]\'s flesh rapidly inflates, forming a bloated mass around [loc.p_their()] body!", "We inflate our flesh, creating a spaceproof suit!", "You hear organic matter ripping and tearing!") processing_objects += src /obj/item/clothing/suit/space/changeling/process() @@ -485,4 +485,4 @@ icon_state = "lingarmorhelmet" flags = BLOCKHAIR | NODROP | DROPDEL armor = list(melee = 30, bullet = 30, laser = 40, energy = 20, bomb = 10, bio = 4, rad = 0) - flags_inv = HIDEEARS \ No newline at end of file + flags_inv = HIDEEARS diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm index 23efc38b403..b3881ee54fb 100644 --- a/code/game/gamemodes/changeling/powers/revive.dm +++ b/code/game/gamemodes/changeling/powers/revive.dm @@ -24,13 +24,13 @@ user.CureNearsighted() user.reagents.clear_reagents() user.germ_level = 0 - user.next_pain_time = 0 user.timeofdeath = 0 if(ishuman(user)) var/mob/living/carbon/human/H = user H.restore_blood() H.traumatic_shock = 0 H.shock_stage = 0 + H.next_pain_time = 0 H.species.create_organs(H) // Now that recreating all organs is necessary, the rest of this organ stuff probably // isn't, but I don't want to remove it, just in case. diff --git a/code/game/gamemodes/changeling/powers/swap_form.dm b/code/game/gamemodes/changeling/powers/swap_form.dm index 99eb634a2ff..9015677c70e 100644 --- a/code/game/gamemodes/changeling/powers/swap_form.dm +++ b/code/game/gamemodes/changeling/powers/swap_form.dm @@ -36,7 +36,7 @@ to_chat(user, "The body swap has been interrupted!") return - to_chat(target, "[user] tightens their grip as a painful sensation invades your body.") + to_chat(target, "[user] tightens [user.p_their()] grip as a painful sensation invades your body.") changeling.absorbed_dna -= changeling.find_dna(user.dna) changeling.protected_dna -= changeling.find_dna(user.dna) diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index b12a50bce13..f2e8db26b40 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -203,7 +203,7 @@ var/global/list/all_cults = list() update_cult_icons_removed(cult_mind) if(show_message) for(var/mob/M in viewers(cult_mind.current)) - to_chat(M, "[cult_mind.current] looks like they just reverted to their old faith!") + to_chat(M, "[cult_mind.current] looks like [cult_mind.current.p_they()] just reverted to [cult_mind.current.p_their()] old faith!") /datum/game_mode/proc/update_cult_icons_added(datum/mind/cult_mind) diff --git a/code/game/gamemodes/cult/cult_objectives.dm b/code/game/gamemodes/cult/cult_objectives.dm index 5ddc8ccdf98..34955ed42d4 100644 --- a/code/game/gamemodes/cult/cult_objectives.dm +++ b/code/game/gamemodes/cult/cult_objectives.dm @@ -24,7 +24,7 @@ spilltarget = 100 + rand(0,player_list.len * 3) explanation = "We must prepare this place for [ticker.cultdat.entity_title1]'s coming. Spill blood and gibs over [spilltarget] floor tiles." if("sacrifice") - explanation = "We need to sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role], for their blood is the key that will lead our master to this realm. You will need 3 cultists around a Sacrifice rune to perform the ritual." + explanation = "We need to sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role], for [sacrifice_target.p_their()] blood is the key that will lead our master to this realm. You will need 3 cultists around a Sacrifice rune to perform the ritual." for(var/datum/mind/cult_mind in cult) to_chat(cult_mind.current, "Objective #[current_objective]: [explanation]") @@ -81,7 +81,7 @@ spilltarget = 100 + rand(0,player_list.len * 3) explanation = "We must prepare this place for [ticker.cultdat.entity_title1]'s coming. Spread blood and gibs over [spilltarget] of the Station's floor tiles." if("sacrifice") - explanation = "We need to sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role], for their blood is the key that will lead our master to this realm. You will need 3 cultists around a Sacrifice rune to perform the ritual." + explanation = "We need to sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role], for [sacrifice_target.p_their()] blood is the key that will lead our master to this realm. You will need 3 cultists around a Sacrifice rune to perform the ritual." for(var/datum/mind/cult_mind in cult) if(cult_mind) diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index d8d7d03b6c4..84941f4d7a7 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -161,7 +161,7 @@ var/obj/item/organ/external/head/head = C.get_organ("head") if(head) C.apply_damage(30, BURN, "head") //30 fire damage because it's FUCKING LAVA - head.disfigure("burn") //Your face is unrecognizable because it's FUCKING LAVA + head.disfigure() //Your face is unrecognizable because it's FUCKING LAVA return 1 else ..() diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 19f9f57e9e7..a16cf76d9f1 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -294,7 +294,7 @@ var/mob/living/carbon/human/H = user var/dam_zone = pick("head", "chest", "groin", "l_arm", "l_hand", "r_arm", "r_hand", "l_leg", "l_foot", "r_leg", "r_foot") var/obj/item/organ/external/affecting = H.get_organ(ran_zone(dam_zone)) - user.visible_message("[user] cuts open their [affecting] and begins writing in their own blood!", "You slice open your [affecting] and begin drawing a sigil of [ticker.cultdat.entity_title3].") + user.visible_message("[user] cuts open [user.p_their()] [affecting] and begins writing in [user.p_their()] own blood!", "You slice open your [affecting] and begin drawing a sigil of [ticker.cultdat.entity_title3].") user.apply_damage(initial(rune_to_scribe.scribe_damage), BRUTE , affecting) if(!do_after(user, initial(rune_to_scribe.scribe_delay)-scribereduct, target = get_turf(user))) for(var/V in shields) @@ -305,7 +305,7 @@ if(locate(/obj/effect/rune) in runeturf) to_chat(user, "There is already a rune here.") return - user.visible_message("[user] creates a strange circle in their own blood.", \ + user.visible_message("[user] creates a strange circle in [user.p_their()] own blood.", \ "You finish drawing the arcane markings of [ticker.cultdat.entity_title3].") for(var/V in shields) var/obj/machinery/shield/S = V diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 2bf4933e108..087bfbb4008 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -1,4 +1,4 @@ -/var/list/sacrificed = list() +var/list/sacrificed = list() var/list/non_revealed_runes = (subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) /* @@ -153,7 +153,10 @@ structure_check() searches for nearby cultist structures required for the invoca for(var/M in invokers) var/mob/living/L = M if(invocation) - L.say(invocation) + if(!L.IsVocal()) + L.emote("gestures ominously.") + else + L.say(invocation) L.changeNext_move(CLICK_CD_MELEE)//THIS IS WHY WE CAN'T HAVE NICE THINGS if(invoke_damage) L.apply_damage(invoke_damage, BRUTE) @@ -473,7 +476,6 @@ var/list/teleport_runes = list() rune_in_use = 0 - //Ritual of Dimensional Rending: Calls forth the avatar of Nar-Sie upon the station. /obj/effect/rune/narsie cultist_name = "Tear Reality (God)" @@ -700,7 +702,7 @@ var/list/teleport_runes = list() return mob_to_revive.revive() //This does remove disabilities and such, but the rune might actually see some use because of it! 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 their eyes.", \ + 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!") rune_in_use = 0 @@ -740,7 +742,7 @@ var/list/teleport_runes = list() to_chat(L, "You chant in unison and a colossal burst of energy knocks you backward!") L.Weaken(2) 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 + empulse(E, 9*invokers.len, 12*invokers.len, 1) // Scales now, from a single room to most of the station depending on # of chanters //Rite of Astral Communion: Separates one's spirit from their body. They will take damage while it is active. /obj/effect/rune/astral @@ -787,11 +789,11 @@ var/list/teleport_runes = list() return affecting.apply_damage(1, BRUTE) if(!(user in T.contents)) - user.visible_message("A spectral tendril wraps around [user] and pulls them back to the rune!") + user.visible_message("A spectral tendril wraps around [user] and pulls [user.p_them()] back to the rune!") Beam(user,icon_state="drainbeam",time=2) user.forceMove(get_turf(src)) //NO ESCAPE :^) if(user.key) - user.visible_message("[user] slowly relaxes, the glow around them dimming.", \ + user.visible_message("[user] slowly relaxes, the glow around [user.p_them()] dimming.", \ "You are re-united with your physical form. [src] releases its hold over you.") user.color = initial(user.color) user.Weaken(3) @@ -833,7 +835,7 @@ var/list/teleport_runes = list() var/mob/living/user = invokers[1] ..() density = !density - user.visible_message("[user] places their hands on [src], and [density ? "the air above it begins to shimmer" : "the shimmer above it fades"].", \ + user.visible_message("[user] places [user.p_their()] hands on [src], and [density ? "the air above it begins to shimmer" : "the shimmer above it fades"].", \ "You channel your life energy into [src], [density ? "preventing" : "allowing"] passage above it.") if(iscarbon(user)) var/mob/living/carbon/C = user @@ -875,7 +877,7 @@ var/list/teleport_runes = list() fail_invoke() log_game("Summon Cultist rune failed - target in away mission") return - if((cultist_to_summon.reagents.has_reagent("holywater") || cultist_to_summon.restrained()) && invokers < 3) + if((cultist_to_summon.reagents.has_reagent("holywater") || cultist_to_summon.restrained()) && invokers.len < 3) to_chat(user, "The summoning of [cultist_to_summon] is being blocked somehow! You need 3 chanters to counter it!") fail_invoke() new /obj/effect/temp_visual/cult/sparks(get_turf(cultist_to_summon)) //observer warning diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index e909a33410f..8d858c6fade 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -151,7 +151,7 @@ if(!src || QDELETED(src) || !user || user.l_hand != src && user.r_hand != src || user.incapacitated() || !actual_selected_rune) return ..(user, 0) - user.visible_message("Dust flows from [user]'s hand, and they disappear in a flash of red light!", \ + user.visible_message("Dust flows from [user]'s hand, and [user.p_they()] disappear[user.p_s()] in a flash of red light!", \ "You speak the words of the talisman and find yourself somewhere else!") user.forceMove(get_turf(actual_selected_rune)) return ..() @@ -220,7 +220,7 @@ . = ..() 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) + empulse(src, 4, 8, 1) //Rite of Disorientation: Stuns and inhibit speech on a single target for quite some time @@ -419,4 +419,4 @@ /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!") - . = ..() \ No newline at end of file + . = ..() diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 4a2622c536d..760868e8435 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -107,7 +107,7 @@ tries_left = 5 //reset our tries since we found a new chump //make sure we have chumps before we try misinforming them. if we don't make a note of it. if(!chumps.len) - log_debug("Game mode failed to find ANY chumps. This is likely due to the server being in extreme low-pop with no one set to opposed or skeptical.") + log_debug("Game mode failed to find ANY chumps. This is likely due to the server being in extreme low-pop with no one set to opposed or skeptical.") return 0 //we've got chumps! misinform them! for(var/mob/living/carbon/human/chump in chumps) @@ -490,34 +490,39 @@ proc/display_roundstart_logout_report() M.ghostize() M.key = theghost.key else - message_admins("[M] ([M.key] has been converted into [role_type] with an active antagonist jobban for said role since no ghost has volunteered to take their place.") + message_admins("[M] ([M.key] has been converted into [role_type] with an active antagonist jobban for said role since no ghost has volunteered to take [M.p_their()] place.") to_chat(M, "You have been converted into [role_type] with an active jobban. Any further violations of the rules on your part are likely to result in a permanent ban.") -/datum/game_mode/proc/printplayer(datum/mind/ply, fleecheck) - var/text = "
[ply.key] was [ply.name] the [ply.assigned_role] and" +/proc/printplayer(datum/mind/ply, fleecheck) + var/jobtext = "" + if(ply.assigned_role) + jobtext = " the [ply.assigned_role]" + var/text = "[ply.key] was [ply.name][jobtext] and" if(ply.current) if(ply.current.stat == DEAD) - text += " died" + text += " died" else - text += " survived" - if(fleecheck && !is_station_level(ply.current.z)) - text += " while fleeing the station" + text += " survived" + if(fleecheck) + var/turf/T = get_turf(ply.current) + if(!T || !is_station_level(T.z)) + text += " while fleeing the station" if(ply.current.real_name != ply.name) text += " as [ply.current.real_name]" else - text += " had their body destroyed" + text += " had [ply.p_their()] body destroyed" return text -/datum/game_mode/proc/printobjectives(datum/mind/ply) - var/text = "" +/proc/printobjectives(datum/mind/ply) + var/list/objective_parts = list() var/count = 1 for(var/datum/objective/objective in ply.objectives) if(objective.check_completion()) - text += "
Objective #[count]: [objective.explanation_text] Success!" + objective_parts += "Objective #[count]: [objective.explanation_text] Success!" else - text += "
Objective #[count]: [objective.explanation_text] Fail." + objective_parts += "Objective #[count]: [objective.explanation_text] Fail." count++ - return text + return objective_parts.Join("
") /datum/game_mode/proc/generate_station_goals() var/list/possible = list() diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index 0b1962b1717..9a43df56926 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -176,7 +176,7 @@ if(ishuman(target)) if(console!=null) console.AddSnapshot(target) - to_chat(user, "You scan [target] and add them to the database.") + to_chat(user, "You scan [target] and add [target.p_them()] to the database.") /obj/item/abductor/gizmo/proc/mark(atom/target, mob/living/user) if(marked == target) diff --git a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm index 588900bb3e8..8682b50fc05 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm @@ -29,7 +29,7 @@ return for(var/mob/living/carbon/slime/M in range(1, target)) if(M.Victim == target) - to_chat(user, "[target] has a slime attached to them, deal with that first.") + to_chat(user, "[target] has a slime attached to [target.p_them()], deal with that first.") return visible_message("[user] puts [target] into the [src].") diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index 00bf335c576..11ec158db84 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -325,7 +325,7 @@ to_chat(src, "You cannot infest someone who is already infested!") return - to_chat(src, "You slither up [M] and begin probing at their ear canal...") + to_chat(src, "You slither up [M] and begin probing at [M.p_their()] ear canal...") if(!do_after(src, 50, target = M)) to_chat(src, "As [M] moves away, you are dislodged and fall to the ground.") @@ -500,7 +500,7 @@ to_chat(src, "You cannot dominate someone who is already infested!") return - to_chat(src, "You focus your psychic lance on [M] and freeze their limbs with a wave of terrible dread.") + to_chat(src, "You focus your psychic lance on [M] and freeze [M.p_their()] limbs with a wave of terrible dread.") to_chat(M, "You feel a creeping, horrible sense of dread come over you, freezing your limbs and setting your heart racing.") M.Weaken(3) @@ -531,7 +531,7 @@ to_chat(src, "You decide against leaving your host.") return - to_chat(src, "You begin disconnecting from [host]'s synapses and prodding at their internal ear canal.") + to_chat(src, "You begin disconnecting from [host]'s synapses and prodding at [host.p_their()] internal ear canal.") leaving = TRUE @@ -623,7 +623,7 @@ to_chat(src,"You are feeling far too docile to do that.") return else - to_chat(src, "You plunge your probosci deep into the cortex of the host brain, interfacing directly with their nervous system.") + to_chat(src, "You plunge your probosci deep into the cortex of the host brain, interfacing directly with [host.p_their()] nervous system.") to_chat(host, "You feel a strange shifting sensation behind your eyes as an alien consciousness displaces yours.") var/borer_key = src.key add_attack_logs(src, host, "Assumed control of (borer)") diff --git a/code/game/gamemodes/miniantags/guardian/guardian.dm b/code/game/gamemodes/miniantags/guardian/guardian.dm index f76830910b1..68e8c16c5da 100644 --- a/code/game/gamemodes/miniantags/guardian/guardian.dm +++ b/code/game/gamemodes/miniantags/guardian/guardian.dm @@ -448,6 +448,14 @@ Support:Has two modes. Combat: Medium power attacks and damage resist. Healer: Attacks heal damage, but low damage resist and slow movemen. Can deploy a bluespace beacon and warp targets to it (including you) in either mode.

Explosive: High damage resist and medium power attack. Can turn any object into a bomb, dealing explosive damage to the next person to touch it. The object will return to normal after the trap is triggered.
+
+ Assassin: Medium damage with no damage resistance, can enter stealth which massively increases the damage of the next attack causing it to ignore armour. +
+ Charger: Medium damage and defense, very fast and has a special charge attack which damages a target and knocks items out of their hands. +
+ Lightning: Applies lightning chains to any targets on attack with a link to your summoner, lightning chains will shock anyone nearby. +
+ Protector: You will become leashed to your holoparasite instead of them to you. Has two modes, a medium attack/defense mode and a protection mode which greatly reduces incoming damage to the holoparasite. "} /obj/item/paper/guardian/update_icon() diff --git a/code/game/gamemodes/miniantags/guardian/types/charger.dm b/code/game/gamemodes/miniantags/guardian/types/charger.dm index abdc349f175..17ed569f256 100644 --- a/code/game/gamemodes/miniantags/guardian/types/charger.dm +++ b/code/game/gamemodes/miniantags/guardian/types/charger.dm @@ -6,7 +6,7 @@ ranged_cooldown_time = 40 speed = -1 damage_transfer = 0.6 - playstyle_string = "As a Charger type you do medium damage, have medium damage resistance, move very fast, and can charge at a location, damaging any target hit and forcing them to drop any items they are holding." + playstyle_string = "As a Charger type you do medium damage, have medium damage resistance, move very fast, and can charge at a location, damaging any target hit and forcing them to drop any items they are holding. (Click a tile to use your charge ability)" magic_fluff_string = "..And draw the Hunter, an alien master of rapid assault." tech_fluff_string = "Boot sequence complete. Charge modules loaded. Holoparasite swarm online." bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, ready to deal damage." diff --git a/code/game/gamemodes/miniantags/guardian/types/protector.dm b/code/game/gamemodes/miniantags/guardian/types/protector.dm index fe8b4897c42..9206b0d1b0b 100644 --- a/code/game/gamemodes/miniantags/guardian/types/protector.dm +++ b/code/game/gamemodes/miniantags/guardian/types/protector.dm @@ -51,7 +51,7 @@ Recall(TRUE) else to_chat(summoner, "You moved out of range, and were pulled back! You can only move [range] meters from [src]!") - summoner.visible_message("[summoner] jumps back to their protector.") + summoner.visible_message("[summoner] jumps back to [summoner.p_their()] protector.") new /obj/effect/temp_visual/guardian/phase/out(get_turf(summoner)) summoner.forceMove(get_turf(src)) new /obj/effect/temp_visual/guardian/phase(get_turf(summoner))//Protector \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm index 32d51b579c4..5a7825c0cfe 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm @@ -73,7 +73,7 @@ icon_state = "revenant_draining" reveal(27) stun(27) - target.visible_message("[target] suddenly rises slightly into the air, their skin turning an ashy gray.") + target.visible_message("[target] suddenly rises slightly into the air, [target.p_their()] skin turning an ashy gray.") target.Beam(src,icon_state="drain_life",icon='icons/effects/effects.dmi',time=26) if(do_after(src, 30, 0, target)) //As one cannot prove the existance of ghosts, ghosts cannot prove the existance of the target they were draining. change_essence_amount(essence_drained, 0, target) @@ -263,8 +263,8 @@ new/obj/effect/temp_visual/revenant(T) T.ChangeTurf(/turf/simulated/wall/r_wall/rust) for(var/obj/structure/window/window in T.contents) - window.hit(rand(30,80)) - if(window && window.is_fulltile()) + window.take_damage(rand(30,80)) + if(window && window.fulltile) new/obj/effect/temp_visual/revenant/cracks(window.loc) for(var/obj/structure/closet/closet in T.contents) closet.open() diff --git a/code/game/gamemodes/miniantags/slaughter/slaughter.dm b/code/game/gamemodes/miniantags/slaughter/slaughter.dm index aeb26f58822..6b5705cfa7f 100644 --- a/code/game/gamemodes/miniantags/slaughter/slaughter.dm +++ b/code/game/gamemodes/miniantags/slaughter/slaughter.dm @@ -149,7 +149,7 @@ if(!A) to_chat(usr, "You could not locate any sapient heretics for the Slaughter.") return 0 - to_chat(usr, "You sense a terrified soul at [A]. Show them the error of their ways.") + to_chat(usr, "You sense a terrified soul at [A]. Show [A.p_them()] the error of [A.p_their()] ways.") /mob/living/simple_animal/slaughter/cult/New() ..() @@ -241,7 +241,7 @@ return // Just so people don't accidentally waste it /obj/item/organ/internal/heart/demon/attack_self(mob/living/user) - user.visible_message("[user] raises [src] to their mouth and tears into it with their teeth!", \ + user.visible_message("[user] raises [src] to [user.p_their()] mouth and tears into it with [user.p_their()] teeth!", \ "An unnatural hunger consumes you. You raise [src] to your mouth and devour it!") playsound(user, 'sound/misc/Demon_consume.ogg', 50, 1) for(var/obj/effect/proc_holder/spell/knownspell in user.mind.spell_list) diff --git a/code/game/gamemodes/nuclear/nuclear_challenge.dm b/code/game/gamemodes/nuclear/nuclear_challenge.dm index 6bb181b4136..8fbeb2d9690 100644 --- a/code/game/gamemodes/nuclear/nuclear_challenge.dm +++ b/code/game/gamemodes/nuclear/nuclear_challenge.dm @@ -20,7 +20,7 @@ return declaring_war = TRUE - var/are_you_sure = alert(user, "Consult your team carefully before you declare war on [station_name()]]. Are you sure you want to alert the enemy crew? You have [-round((world.time-round_start_time - CHALLENGE_TIME_LIMIT)/10)] seconds to decide.", "Declare war?", "Yes", "No") + var/are_you_sure = alert(user, "Consult your team carefully before you declare war on [station_name()]. Are you sure you want to alert the enemy crew? You have [-round((world.time-round_start_time - CHALLENGE_TIME_LIMIT)/10)] seconds to decide.", "Declare war?", "Yes", "No") declaring_war = FALSE if(!check_allowed(user)) @@ -30,7 +30,7 @@ to_chat(user, "On second thought, the element of surprise isn't so bad after all.") return - var/war_declaration = "[user.real_name] has declared his intent to utterly destroy [station_name()] with a nuclear device, and dares the crew to try and stop them." + var/war_declaration = "[user.real_name] has declared [user.p_their()] intent to utterly destroy [station_name()] with a nuclear device, and dares the crew to try and stop them." declaring_war = TRUE var/custom_threat = alert(user, "Do you want to customize your declaration?", "Customize?", "Yes", "No") @@ -71,7 +71,7 @@ if(!is_admin_level(user.z)) to_chat(user, "You have to be at your base to use this.") return FALSE - if(world.time > CHALLENGE_TIME_LIMIT) + if((world.time - round_start_time) > CHALLENGE_TIME_LIMIT) // Only count after the round started to_chat(user, "It's too late to declare hostilities. Your benefactors are already busy with other schemes. You'll have to make do with what you have on hand.") return FALSE for(var/obj/machinery/computer/shuttle/syndicate/S in machines) diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index 6a38b36b3df..e9bea1d8b1d 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -341,7 +341,7 @@ if(active) active = FALSE icon_state = icon_off - user.visible_message("[user] deactivates their pinpointer.", "You deactivate your pinpointer.") + user.visible_message("[user] deactivates [user.p_their()] pinpointer.", "You deactivate your pinpointer.") return var/list/name_counts = list() @@ -373,7 +373,7 @@ var/target = names[A] active = TRUE - user.visible_message("[user] activates their pinpointer.", "You activate your pinpointer.") + user.visible_message("[user] activates [user.p_their()] pinpointer.", "You activate your pinpointer.") point_at(target) /obj/item/pinpointer/crew/point_at(atom/target, spawnself = 1) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 151f7606351..07395aa0578 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -287,7 +287,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu target = pick(possible_targets) if(target && target.current) target_real_name = target.current.real_name - explanation_text = "Escape on the shuttle or an escape pod with the identity of [target_real_name], the [target.assigned_role] while wearing their identification card." + explanation_text = "Escape on the shuttle or an escape pod with the identity of [target_real_name], the [target.assigned_role] while wearing [target.p_their()] identification card." else explanation_text = "Free Objective" @@ -528,7 +528,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu target = pick(possible_targets) if(target && target.current) - explanation_text = "The Shoal has a need for [target.current.real_name], the [target.assigned_role]. Take them alive." + explanation_text = "The Shoal has a need for [target.current.real_name], the [target.assigned_role]. Take [target.current.p_them()] alive." else explanation_text = "Free Objective" return target diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 4f500825065..089cad71a3a 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -279,7 +279,7 @@ to_chat(M, "The frame beeps contentedly, purging the hostile memory engram from the MMI before initalizing it.") else - to_chat(M, "[rev_mind.current] looks like they just remembered their real allegiance!") + to_chat(M, "[rev_mind.current] looks like [rev_mind.current.p_they()] just remembered [rev_mind.current.p_their()] real allegiance!") ///////////////////////////////////// //Adds the rev hud to a new convert// diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm index ed8603360fe..1d0bb3adf03 100644 --- a/code/game/gamemodes/shadowling/shadowling.dm +++ b/code/game/gamemodes/shadowling/shadowling.dm @@ -188,7 +188,7 @@ Made by Xhuis M.audible_message("[M] lets out a short blip.", \ "You have been turned into a robot! You are no longer a thrall! Though you try, you cannot remember anything about your servitude...") else - M.visible_message("[M] looks like their mind is their own again!", \ + M.visible_message("[M] looks like [M.p_their()] mind is [M.p_their()] own again!", \ "A piercing white light floods your eyes. Your mind is your own again! Though you try, you cannot remember anything about the shadowlings or your time \ under their command...") return 1 diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index 06f7bc9440c..89aee290422 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -40,9 +40,9 @@ return var/mob/living/carbon/human/M = target user.visible_message("[user]'s eyes flash a blinding red!") - target.visible_message("[target] freezes in place, their eyes glazing over...") + target.visible_message("[target] freezes in place, [target.p_their()] eyes glazing over...") if(in_range(target, user)) - to_chat(target, "Your gaze is forcibly drawn into [user]'s eyes, and you are mesmerized by their heavenly beauty...") + to_chat(target, "Your gaze is forcibly drawn into [user]'s eyes, and you are mesmerized by [user.p_their()] heavenly beauty...") else //Only alludes to the shadowling if the target is close by to_chat(target, "Red lights suddenly dance in your vision, and you are mesmerized by the heavenly lights...") target.Stun(10) @@ -306,7 +306,7 @@ switch(progress) if(1) to_chat(user, "You place your hands to [target]'s head...") - user.visible_message("[user] places their hands onto the sides of [target]'s head!") + user.visible_message("[user] places [user.p_their()] hands onto the sides of [target]'s head!") if(2) to_chat(user, "You begin preparing [target]'s mind as a blank slate...") user.visible_message("[user]'s palms flare a bright red against [target]'s temples!") @@ -315,7 +315,7 @@ sleep(20) if(ismindshielded(target)) to_chat(user, "They have a mindshield implant. You begin to deactivate it - this will take some time.") - user.visible_message("[user] pauses, then dips their head in concentration!") + user.visible_message("[user] pauses, then dips [user.p_their()] head in concentration!") to_chat(target, "Your mindshield implant becomes hot as it comes under attack!") sleep(100) //10 seconds - not spawn() so the enthralling takes longer to_chat(user, "The nanobots composing the mindshield implant have been rendered inert. Now to continue.") @@ -361,7 +361,7 @@ if(!istype(target) || !ishuman(target)) return var/mob/living/carbon/human/H = target - H.visible_message("[H]'s skin suddenly bubbles and shifts around their body!", \ + H.visible_message("[H]'s skin suddenly bubbles and shifts around [H.p_their()] body!", \ "You regenerate your protective armor and cleanse your form of defects.") H.adjustCloneLoss(-target.getCloneLoss()) H.equip_to_slot_or_del(new /obj/item/clothing/under/shadowling(H), slot_w_uniform) @@ -493,7 +493,7 @@ to_chat(M, "You breathe in the black smoke, and your eyes burn horribly!") M.EyeBlind(5) if(prob(25)) - M.visible_message("[M] claws at their eyes!") + M.visible_message("[M] claws at [M.p_their()] eyes!") M.Stun(3) else to_chat(M, "You breathe in the black smoke, and you feel revitalized!") @@ -540,9 +540,7 @@ sp.start() S.Weaken(6) for(var/obj/structure/window/W in T.contents) - W.hit(rand(80, 100)) - - + W.take_damage(rand(80, 100)) /obj/effect/proc_holder/spell/aoe_turf/drainLife name = "Drain Life" @@ -627,9 +625,9 @@ to_chat(user, "You cannot spare this much energy. There are too many empowered thralls.") charge_counter = charge_max return - user.visible_message("[user] places their hands over [thrallToRevive]'s face, red light shining from beneath.", \ + user.visible_message("[user] places [user.p_their()] hands over [thrallToRevive]'s face, red light shining from beneath.", \ "You place your hands on [thrallToRevive]'s face and begin gathering energy...") - to_chat(thrallToRevive, "[user] places their hands over your face. You feel energy gathering. Stand still...") + to_chat(thrallToRevive, "[user] places [user.p_their()] hands over your face. You feel energy gathering. Stand still...") if(!do_mob(user, thrallToRevive, 80)) to_chat(user, "Your concentration snaps. The flow of energy ebbs.") charge_counter = charge_max @@ -640,7 +638,7 @@ playsound(thrallToRevive, 'sound/machines/defib_zap.ogg', 50, 1) user.Beam(thrallToRevive,icon_state="red_lightning",icon='icons/effects/effects.dmi',time=1) thrallToRevive.Weaken(5) - thrallToRevive.visible_message("[thrallToRevive] collapses, their skin and face distorting!", \ + thrallToRevive.visible_message("[thrallToRevive] collapses, [thrallToRevive.p_their()] skin and face distorting!", \ "AAAAAAAAAAAAAAAAAAAGH-") sleep(20) thrallToRevive.visible_message("[thrallToRevive] slowly rises, no longer recognizable as human.", \ @@ -659,7 +657,7 @@ to_chat(user, "[thrallToRevive] is not dead.") charge_counter = charge_max return - user.visible_message("[user] kneels over [thrallToRevive], placing their hands on \his chest.", \ + user.visible_message("[user] kneels over [thrallToRevive], placing [user.p_their()] hands on [thrallToRevive.p_their()] chest.", \ "You crouch over the body of your thrall and begin gathering energy...") thrallToRevive.notify_ghost_cloning("Your masters are resuscitating you! Re-enter your corpse if you wish to be brought to life.", source = thrallToRevive) if(!do_mob(user, thrallToRevive, 30)) @@ -673,7 +671,7 @@ user.Beam(thrallToRevive,icon_state="red_lightning",icon='icons/effects/effects.dmi',time=1) sleep(10) if(thrallToRevive.revive()) - thrallToRevive.visible_message("[thrallToRevive] heaves in breath, dim red light shining in their eyes.", \ + thrallToRevive.visible_message("[thrallToRevive] heaves in breath, dim red light shining in [thrallToRevive.p_their()] eyes.", \ "You have returned. One of your masters has brought you from the darkness beyond.") thrallToRevive.Weaken(4) thrallToRevive.emote("gasp") @@ -710,7 +708,7 @@ var/mob/living/carbon/human/M = target user.visible_message("[user]'s eyes flash a bright red!", \ "You begin to draw [M]'s life force.") - M.visible_message("[M]'s face falls slack, their jaw slightly distending.", \ + M.visible_message("[M]'s face falls slack, [M.p_their()] jaw slightly distending.", \ "You are suddenly transported... far, far away...") if(!do_after(user, 50, target = M)) to_chat(M, "You are snapped back to reality, your haze dissipating!") @@ -754,7 +752,7 @@ to_chat(user, "Making an ally explode seems unwise.") charge_counter = charge_max return - user.visible_message("[user]'s markings flare as they gesture at [boom]!", \ + user.visible_message("[user]'s markings flare as [user.p_they()] gesture[user.p_s()] at [boom]!", \ "You direct a lance of telekinetic energy at [boom].") sleep(4) if(iscarbon(boom)) @@ -798,7 +796,7 @@ charge_counter = charge_max return - to_chat(user, "You instantly rearrange [target]'s memories, hyptonitizing them into a thrall.") + to_chat(user, "You instantly rearrange [target]'s memories, hyptonitizing [target.p_them()] into a thrall.") to_chat(target, "An agonizing spike of pain drives into your mind, and--") ticker.mode.add_thrall(target.mind) target.mind.special_role = SPECIAL_ROLE_SHADOWLING_THRALL diff --git a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm index 5c05a028df0..4239b5db327 100644 --- a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm @@ -43,7 +43,7 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N var/temp_flags = H.status_flags H.status_flags |= GODMODE //Can't die while hatching - H.visible_message("A chrysalis forms around [H], sealing them inside.", \ + H.visible_message("A chrysalis forms around [H], sealing [H.p_them()] inside.", \ "You create your chrysalis and begin to contort within.") sleep(100) @@ -51,7 +51,7 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N "Spines pierce your back. Your claws break apart your fingers. You feel excruciating pain as your true form begins its exit.") sleep(90) - H.visible_message("[H], skin shifting, begins tearing at the walls around them.", \ + H.visible_message("[H], skin shifting, begins tearing at the walls around [H.p_them()].", \ "Your false skin slips away. You begin tearing at the fragile membrane protecting you.") sleep(80) diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index ec8a1643c27..9234043976c 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -346,7 +346,7 @@ // Tell them about people they might want to contact. var/mob/living/carbon/human/M = get_nt_opposed() if(M && M != traitor_mob) - to_chat(traitor_mob, "We have received credible reports that [M.real_name] might be willing to help our cause. If you need assistance, consider contacting them.") + to_chat(traitor_mob, "We have received credible reports that [M.real_name] might be willing to help our cause. If you need assistance, consider contacting [M.p_them()].") traitor_mob.mind.store_memory("Potential Collaborator: [M.real_name]") //let's also inform their contact that they might be called upon, but leave it vague. inform_collab(M) diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index c2431f17318..14ba6fb9dd0 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -279,8 +279,8 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha to_chat(owner, "[owner.wear_mask] prevents you from biting [H]!") draining = null return - add_attack_logs(owner, H, "vampirebit & is draining their blood.", FALSE) - owner.visible_message("[owner] grabs [H]'s neck harshly and sinks in their fangs!", "You sink your fangs into [H] and begin to drain their blood.", "You hear a soft puncture and a wet sucking noise.") + add_attack_logs(owner, H, "vampirebit & is draining their blood.", ATKLOG_ALMOSTALL) + owner.visible_message("[owner] grabs [H]'s neck harshly and sinks in [owner.p_their()] fangs!", "You sink your fangs into [H] and begin to drain [owner.p_their()] blood.", "You hear a soft puncture and a wet sucking noise.") if(!iscarbon(owner)) H.LAssailant = null else diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index e9a249d8412..c9dad5c510d 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -175,7 +175,7 @@ /obj/effect/proc_holder/spell/vampire/targetted/hypnotise/cast(list/targets, mob/user = usr) for(var/mob/living/target in targets) - user.visible_message("[user]'s eyes flash briefly as he stares into [target]'s eyes") + user.visible_message("[user]'s eyes flash briefly as [user.p_they()] stare[user.p_s()] into [target]'s eyes") if(do_mob(user, target, 50)) if(!affects(target)) to_chat(user, "Your piercing gaze fails to knock out [target].") @@ -270,7 +270,7 @@ C.Stun(4) C.Jitter(150) for(var/obj/structure/window/W in view(4)) - W.destroy() + W.deconstruct(FALSE) playsound(user.loc, 'sound/effects/creepyshriek.ogg', 100, 1) @@ -345,8 +345,8 @@ ticker.mode.vampire_enthralled.Add(H.mind) ticker.mode.vampire_enthralled[H.mind] = user.mind H.mind.special_role = SPECIAL_ROLE_VAMPIRE_THRALL - to_chat(H, "You have been Enthralled by [user]. Follow their every command.") - to_chat(user, "You have successfully Enthralled [H]. If they refuse to do as you say just adminhelp.") + to_chat(H, "You have been Enthralled by [user]. Follow [user.p_their()] every command.") + to_chat(user, "You have successfully Enthralled [H]. If [H.p_they()] refuse[H.p_s()] to do as you say just adminhelp.") add_attack_logs(user, H, "Vampire-thralled") diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 2e99f0238c5..7c1a3526002 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -56,7 +56,7 @@ new /obj/effect/particle_effect/smoke(H.loc) var/mob/living/carbon/human/M = new/mob/living/carbon/human(H.loc) M.key = C.key - to_chat(M, "You are the [H.real_name]'s apprentice! You are bound by magic contract to follow their orders and help them in accomplishing their goals.") + to_chat(M, "You are the [H.real_name]'s apprentice! You are bound by magic contract to follow [H.p_their()] orders and help [H.p_them()] in accomplishing their goals.") switch(href_list["school"]) if("destruction") M.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile(null)) @@ -213,7 +213,7 @@ /obj/item/scrying/attack_self(mob/user as mob) to_chat(user, " You can see...everything!") - visible_message("[user] stares into [src], their eyes glazing over.") + visible_message("[user] stares into [src], [user.p_their()] eyes glazing over.") user.ghostize(1) /////////////////////Multiverse Blade//////////////////// @@ -277,7 +277,7 @@ var/global/list/multiverse = list() var/datum/objective/hijackclone/hijack_objective = new /datum/objective/hijackclone hijack_objective.owner = usr.mind usr.mind.objectives += hijack_objective - hijack_objective.explanation_text = "Ensure only [usr.real_name] and their copies are on the shuttle!" + hijack_objective.explanation_text = "Ensure only [usr.real_name] and [usr.p_their()] copies are on the shuttle!" to_chat(usr, "Objective #[1]: [hijack_objective.explanation_text]") ticker.mode.traitors += usr.mind usr.mind.special_role = "[usr.real_name] Prime" @@ -318,7 +318,7 @@ var/global/list/multiverse = list() C.prefs.copy_to(M) M.key = C.key M.mind.name = user.real_name - to_chat(M, "You are an alternate version of [user.real_name] from another universe! Help them accomplish their goals at all costs.") + to_chat(M, "You are an alternate version of [user.real_name] from another universe! Help [user.p_them()] accomplish [user.p_their()] goals at all costs.") M.faction = list("[user.real_name]") if(duplicate_self) M.set_species(user.get_species()) //duplicate the sword user's species. @@ -342,7 +342,7 @@ var/global/list/multiverse = list() var/datum/objective/hijackclone/hijack_objective = new /datum/objective/hijackclone hijack_objective.owner = M.mind M.mind.objectives += hijack_objective - hijack_objective.explanation_text = "Ensure only [usr.real_name] and their copies are on the shuttle!" + hijack_objective.explanation_text = "Ensure only [usr.real_name] and [usr.p_their()] copies are on the shuttle!" to_chat(M, "Objective #[1]: [hijack_objective.explanation_text]") M.mind.special_role = SPECIAL_ROLE_MULTIVERSE log_game("[M.key] was made a multiverse traveller with the objective to help [usr.real_name] hijack.") @@ -350,7 +350,7 @@ var/global/list/multiverse = list() var/datum/objective/protect/new_objective = new /datum/objective/protect new_objective.owner = M.mind new_objective.target = usr.mind - new_objective.explanation_text = "Protect [usr.real_name], your copy, and help them defend the innocent from the mobs of multiverse clones." + new_objective.explanation_text = "Protect [usr.real_name], your copy, and help [usr.p_them()] defend the innocent from the mobs of multiverse clones." M.mind.objectives += new_objective to_chat(M, "Objective #[1]: [new_objective.explanation_text]") M.mind.special_role = SPECIAL_ROLE_MULTIVERSE @@ -652,7 +652,7 @@ var/global/list/multiverse = list() equip_skeleton(M) spooky_scaries |= M to_chat(M, "You have been revived by [user.real_name]!") - to_chat(M, "They are your master now, assist them even if it costs you your new life!") + to_chat(M, "[user.p_theyre(TRUE)] your master now, assist them even if it costs you your new life!") desc = "A shard capable of resurrecting humans as skeleton thralls[unlimited ? "." : ", [spooky_scaries.len]/3 active thralls."]" /obj/item/necromantic_stone/proc/check_spooky() diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index cb303a90932..4bd7f3004d8 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -167,9 +167,9 @@ icon_state = "soulstone" name = initial(name) if(iswizard(usr) || usability) - to_chat(A, "You have been released from your prison, but you are still bound to [usr.real_name]'s will. Help them succeed in their goals at all costs.") + to_chat(A, "You have been released from your prison, but you are still bound to [usr.real_name]'s will. Help [usr.p_them()] succeed in [usr.p_their()] goals at all costs.") else if(iscultist(usr)) - to_chat(A, "You have been released from your prison, but you are still bound to the cult's will. Help them succeed in their goals at all costs.") + to_chat(A, "You have been released from your prison, but you are still bound to the cult's will. Help [usr.p_them()] succeed in [usr.p_their()] goals at all costs.") was_used() attack_self(U) @@ -280,7 +280,7 @@ ticker.mode.update_cult_icons_added(Z.mind) qdel(T) to_chat(Z, "You are a Juggernaut. Though slow, your shell can withstand extreme punishment, create shield walls and even deflect energy weapons, and rip apart enemies and walls alike.") - to_chat(Z, "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") + to_chat(Z, "You are still bound to serve your creator, follow [U.p_their()] orders and help [U.p_them()] complete [U.p_their()] goals at all costs.") Z.cancel_camera() qdel(C) @@ -296,7 +296,7 @@ ticker.mode.update_cult_icons_added(Z.mind) qdel(T) to_chat(Z, "You are a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls.") - to_chat(Z, "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") + to_chat(Z, "You are still bound to serve your creator, follow [U.p_their()] orders and help [U.p_them()] complete [U.p_their()] goals at all costs.") Z.cancel_camera() qdel(C) @@ -312,7 +312,7 @@ ticker.mode.update_cult_icons_added(Z.mind) qdel(T) to_chat(Z, "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, use magic missile, repair allied constructs (by clicking on them), and most important of all create new constructs (Use your Artificer spell to summon a new construct shell and Summon Soulstone to create a new soulstone).") - to_chat(Z, "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") + to_chat(Z, "You are still bound to serve your creator, follow [U.p_their()] orders and help [U.p_them()] complete [U.p_their()] goals at all costs.") Z.cancel_camera() qdel(C) else @@ -332,11 +332,11 @@ ticker.mode.cult+=newstruct.mind ticker.mode.update_cult_icons_added(newstruct.mind) if(stoner && iswizard(stoner)) - to_chat(newstruct, "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") + to_chat(newstruct, "You are still bound to serve your creator, follow [stoner.p_their()] orders and help [stoner.p_them()] complete [stoner.p_their()] goals at all costs.") else if(stoner && iscultist(stoner)) - to_chat(newstruct, "You are still bound to serve the cult, follow their orders and help them complete their goals at all costs.") + to_chat(newstruct, "You are still bound to serve the cult, follow [stoner.p_their()] orders and help [stoner.p_them()] complete [stoner.p_their()] goals at all costs.") else - to_chat(newstruct, "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") + to_chat(newstruct, "You are still bound to serve your creator, follow [stoner.p_their()] orders and help [stoner.p_them()] complete [stoner.p_their()] goals at all costs.") newstruct.cancel_camera() /obj/item/soulstone/proc/init_shade(mob/living/carbon/human/T, mob/U, vic = 0) @@ -362,11 +362,11 @@ name = "soulstone: Shade of [T.real_name]" icon_state = "soulstone2" if(U && iswizard(U)) - to_chat(S, "Your soul has been captured! You are now bound to [U.real_name]'s will. Help them succeed in their goals at all costs.") + to_chat(S, "Your soul has been captured! You are now bound to [U.real_name]'s will. Help [U.p_them()] succeed in their goals at all costs.") else if(U && iscultist(U)) - to_chat(S, "Your soul has been captured! You are now bound to the cult's will. Help them succeed in their goals at all costs.") + to_chat(S, "Your soul has been captured! You are now bound to the cult's will. Help [U.p_them()] succeed in their goals at all costs.") if(vic && U) - to_chat(U, "Capture successful!: [T.real_name]'s soul has been ripped from their body and stored within the soul stone.") + to_chat(U, "Capture successful!: [T.real_name]'s soul has been ripped from [U.p_their()] body and stored within the soul stone.") /obj/item/soulstone/proc/getCultGhost(mob/living/carbon/human/T, mob/U) var/mob/dead/observer/chosen_ghost diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 40c303ea36f..b5e798b95c7 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -141,15 +141,10 @@ wizard_mob.equip_to_slot_or_del(new /obj/item/radio/headset(wizard_mob), slot_l_ear) wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(wizard_mob), slot_w_uniform) wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(wizard_mob), slot_shoes) - if(!wizard_mob.get_species() == "Plasmaman")//handled in the species file for plasmen on the afterjob equip proc for now + if(wizard_mob.get_species() != "Plasmaman") //handled in the species file for plasmen on the afterjob equip proc for now wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(wizard_mob), slot_wear_suit) wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(wizard_mob), slot_head) - if(wizard_mob.backbag == 2) - wizard_mob.equip_to_slot_or_del(new /obj/item/storage/backpack(wizard_mob), slot_back) - if(wizard_mob.backbag == 3) - wizard_mob.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel_norm(wizard_mob), slot_back) - if(wizard_mob.backbag == 4) - wizard_mob.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(wizard_mob), slot_back) + wizard_mob.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(wizard_mob), slot_back) wizard_mob.equip_to_slot_or_del(new /obj/item/storage/box/survival(wizard_mob), slot_in_backpack) wizard_mob.equip_to_slot_or_del(new /obj/item/teleportation_scroll(wizard_mob), slot_r_store) var/obj/item/spellbook/spellbook = new /obj/item/spellbook(wizard_mob) diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 61c14efc2e5..0e315e03b2c 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -1,10 +1,6 @@ var/global/datum/controller/occupations/job_master -#define GET_RANDOM_JOB 0 -#define BE_ASSISTANT 1 -#define RETURN_TO_LOBBY 2 - /datum/controller/occupations //List of all jobs var/list/occupations = list() diff --git a/code/game/jobs/job_objective.dm b/code/game/jobs/job_objective.dm index 036d289a848..90bac6d8383 100644 --- a/code/game/jobs/job_objective.dm +++ b/code/game/jobs/job_objective.dm @@ -68,7 +68,7 @@ count++ if(tasks_completed >= 1) - text += "
 [employee.name] did their fucking job!" + text += "
 [employee.name] did [employee.p_their()] fucking job!" feedback_add_details("employee_success","SUCCESS") else feedback_add_details("employee_success","FAIL") diff --git a/code/game/jobs/job_scaling.dm b/code/game/jobs/job_scaling.dm new file mode 100644 index 00000000000..7d8804783f1 --- /dev/null +++ b/code/game/jobs/job_scaling.dm @@ -0,0 +1,11 @@ +/hook/roundstart/proc/jobscaling() + sleep(10 SECONDS) // give everyone time to finish spawning, and the lag to die down + var/playercount = length(clients) + var/highpop_trigger = 80 + + if(playercount >= highpop_trigger) + log_debug("Playercount: [playercount] versus trigger: [highpop_trigger] - loading highpop job config"); + job_master.LoadJobs("config/jobs_highpop.txt") + else + log_debug("Playercount: [playercount] versus trigger: [highpop_trigger] - keeping standard job config"); + return 1 \ No newline at end of file diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index 3c9c27f1590..f7925fecda5 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -54,13 +54,12 @@ if(prob(75)) qdel(src) -/obj/machinery/optable/attack_hand(mob/user as mob) - if(HULK in usr.mutations) - to_chat(usr, text("You destroy the table.")) - visible_message("[usr] destroys the operating table!") - src.density = 0 +/obj/machinery/optable/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + ..(user, TRUE) + visible_message("[user] destroys the operating table!") qdel(src) - return + return TRUE /obj/machinery/optable/CanPass(atom/movable/mover, turf/target, height=0) if(height==0) return 1 diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 7d386ddfb1a..24311a8b12e 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -257,7 +257,7 @@ if(href_list["chemical"]) if(occupant) if(occupant.stat == DEAD) - to_chat(usr, "This person has no life for to preserve anymore. Take them to a department capable of reanimating them.") + to_chat(usr, "This person has no life for to preserve anymore. Take [occupant.p_them()] to a department capable of reanimating them.") else if(occupant.health > min_health || (href_list["chemical"] in emergency_chems)) inject_chemical(usr,href_list["chemical"],text2num(href_list["amount"])) else @@ -327,34 +327,35 @@ return if(istype(G, /obj/item/grab)) + var/obj/item/grab/GG = G if(panel_open) to_chat(user, "Close the maintenance panel first.") return - if(!ismob(G:affecting)) + if(!ismob(GG.affecting)) return if(src.occupant) to_chat(user, "The sleeper is already occupied!") return - for(var/mob/living/carbon/slime/M in range(1,G:affecting)) - if(M.Victim == G:affecting) - to_chat(usr, "[G:affecting.name] will not fit into the sleeper because they have a slime latched onto their head.") + for(var/mob/living/carbon/slime/M in range(1,GG.affecting)) + if(M.Victim == GG.affecting) + to_chat(usr, "[GG.affecting.name] will not fit into the sleeper because [GG.affecting.p_they()] [GG.affecting.p_have()] a slime latched onto [GG.affecting.p_their()] head.") return - visible_message("[user] starts putting [G:affecting:name] into the sleeper.") + visible_message("[user] starts putting [GG.affecting.name] into the sleeper.") - if(do_after(user, 20, target = G:affecting)) + if(do_after(user, 20, target = GG.affecting)) if(src.occupant) to_chat(user, "The sleeper is already occupied!") return - if(!G || !G:affecting) return - var/mob/M = G:affecting + if(!GG || !GG.affecting) return + var/mob/M = GG.affecting M.forceMove(src) src.occupant = M src.icon_state = "[base_icon]" to_chat(M, "You feel cool air surround you. You go numb as your senses turn inward.") src.add_fingerprint(user) - qdel(G) + qdel(GG) return return @@ -496,7 +497,7 @@ return for(var/mob/living/carbon/slime/M in range(1,L)) if(M.Victim == L) - to_chat(usr, "[L.name] will not fit into the sleeper because they have a slime latched onto their head.") + to_chat(usr, "[L.name] will not fit into the sleeper because [L.p_they()] [L.p_have()] a slime latched onto their head.") return if(L == user) visible_message("[user] starts climbing into the sleeper.") diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index f2dc8c8bfa2..59009e9930f 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -95,7 +95,7 @@ return for(var/mob/living/carbon/slime/M in range(1, TYPECAST_YOUR_SHIT.affecting)) if(M.Victim == TYPECAST_YOUR_SHIT.affecting) - to_chat(user, "[TYPECAST_YOUR_SHIT.affecting.name] has a fucking slime attached to them, deal with that first.") + to_chat(user, "[TYPECAST_YOUR_SHIT.affecting.name] has a fucking slime attached to [TYPECAST_YOUR_SHIT.affecting.p_them()], deal with that first.") return var/mob/M = TYPECAST_YOUR_SHIT.affecting if(M.abiotic()) @@ -133,7 +133,7 @@ return 0 for(var/mob/living/carbon/slime/M in range(1, O)) if(M.Victim == O) - to_chat(user, "[O] has a fucking slime attached to them, deal with that first.") + to_chat(user, "[O] has a fucking slime attached to [O.p_them()], deal with that first.") return 0 if(O == user) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index f9d83ff43f6..f24197009bd 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -118,6 +118,8 @@ var/report_danger_level = 1 + var/automatic_emergency = 1 //Does the alarm automaticly respond to an emergency condition + /obj/machinery/alarm/monitor report_danger_level = 0 @@ -236,9 +238,11 @@ elect_master() /obj/machinery/alarm/proc/master_is_operating() - if(! alarm_area) + if(!alarm_area) alarm_area = areaMaster - + if(!alarm_area) + log_runtime(EXCEPTION("Air alarm /obj/machinery/alarm lacks alarm_area and areaMaster vars during proc/master_is_operating()"), src) + return FALSE return alarm_area.master_air_alarm && !(alarm_area.master_air_alarm.stat & (NOPOWER|BROKEN)) @@ -304,7 +308,7 @@ if(old_danger_level!=danger_level) apply_danger_level() - if(mode == AALARM_MODE_SCRUBBING && danger_level == ATMOS_ALARM_DANGER) + if(automatic_emergency && mode == AALARM_MODE_SCRUBBING && danger_level == ATMOS_ALARM_DANGER) if(pressure_dangerlevel == ATMOS_ALARM_DANGER) mode = AALARM_MODE_OFF if(temperature_dangerlevel == ATMOS_ALARM_DANGER && cur_tlv.max2 <= environment.temperature) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 1e207e3bdde..eebae34b9ea 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -814,7 +814,7 @@ if(ORION_TRAIL_SPACEPORT) if(spaceport_raided) - eventdat += "The Spaceport is on high alert! they wont let you dock since you tried to attack them!" + eventdat += "The Spaceport is on high alert! They wont let you dock since you tried to attack them!" if(last_spaceport_action) eventdat += "
Last Spaceport Action: [last_spaceport_action]" eventdat += "

Depart Spaceport

" diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index cf94e35f1cf..30ccb23b467 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -362,7 +362,7 @@ /obj/item/circuitboard/rdconsole/attackby(obj/item/I as obj, mob/user as mob, params) if(istype(I,/obj/item/card/id)||istype(I, /obj/item/pda)) if(allowed(user)) - user.visible_message("\the [user] waves their ID past the [src]'s access protocol scanner.", "You swipe your ID past the [src]'s access protocol scanner.") + user.visible_message("\the [user] waves [user.p_their()] ID past the [src]'s access protocol scanner.", "You swipe your ID past the [src]'s access protocol scanner.") var/console_choice = input(user, "What do you want to configure the access to?", "Access Modification", "R&D Core") as null|anything in access_types if(console_choice == null) return diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 2195ee25522..00f6a98f2bc 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -8,16 +8,39 @@ var/list/networks = list("SS13") var/datum/action/innate/camera_off/off_action = new var/datum/action/innate/camera_jump/jump_action = new + var/list/actions = list() /obj/machinery/computer/camera_advanced/proc/CreateEye() eyeobj = new() eyeobj.origin = src -/obj/machinery/computer/camera_advanced/proc/GrantActions(mob/living/carbon/user) - off_action.target = user - off_action.Grant(user) - jump_action.target = user - jump_action.Grant(user) +/obj/machinery/computer/camera_advanced/proc/GrantActions(mob/living/user) + if(off_action) + off_action.target = user + off_action.Grant(user) + actions += off_action + + if(jump_action) + jump_action.target = user + jump_action.Grant(user) + actions += jump_action + +/obj/machinery/computer/camera_advanced/proc/remove_eye_control(mob/living/user) + if(!user) + return + for(var/V in actions) + var/datum/action/A = V + A.Remove(user) + if(user.client) + user.reset_perspective(null) + eyeobj.RemoveImages() + eyeobj.eye_user = null + user.remote_control = null + user.remote_view = FALSE + + current_user = null + user.unset_machine() + playsound(src, 'sound/machines/terminal_off.ogg', 25, 0) /obj/machinery/computer/camera_advanced/check_eye(mob/user) if((stat & (NOPOWER|BROKEN)) || !Adjacent(user) || !user.has_vision() || user.incapacitated()) @@ -33,7 +56,7 @@ /obj/machinery/computer/camera_advanced/on_unset_machine(mob/M) if(M == current_user) - off_action.Activate() + remove_eye_control(M) /obj/machinery/computer/camera_advanced/attack_hand(mob/user) if(current_user) @@ -95,6 +118,13 @@ origin = null return ..() +/mob/camera/aiEye/remote/RemoveImages() + ..() + if(visible_icon) + var/client/C = GetViewerClient() + if(C) + C.images -= user_image + /mob/camera/aiEye/remote/GetViewerClient() if(eye_user) return eye_user.client @@ -140,20 +170,8 @@ return var/mob/living/carbon/C = target var/mob/camera/aiEye/remote/remote_eye = C.remote_control - C.remote_view = 0 - remote_eye.origin.current_user = null - remote_eye.origin.jump_action.Remove(C) - remote_eye.eye_user = null - if(C.client) - C.reset_perspective(null) - if(remote_eye.visible_icon) - C.client.images -= remote_eye.user_image - for(var/datum/camerachunk/chunk in remote_eye.visibleCameraChunks) - C.client.images -= chunk.obscured - C.remote_control = null - C.unset_machine() - src.Remove(C) - playsound(remote_eye.origin, 'sound/machines/terminal_off.ogg', 25, 0) + var/obj/machinery/computer/camera_advanced/console = remote_eye.origin + console.remove_eye_control(target) /datum/action/innate/camera_jump name = "Jump To Camera" diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index fa582362308..054d4d441a3 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -528,7 +528,8 @@ if("alert") status_signal.data["picture_state"] = data1 - frequency.post_signal(src, status_signal) + spawn(0) + frequency.post_signal(src, status_signal) /obj/machinery/computer/communications/Destroy() diff --git a/code/game/machinery/computer/hologram.dm b/code/game/machinery/computer/hologram.dm deleted file mode 100644 index 2d2e5d37ae0..00000000000 --- a/code/game/machinery/computer/hologram.dm +++ /dev/null @@ -1,118 +0,0 @@ -/obj/machinery/computer/hologram_comp - name = "hologram computer" - desc = "Rumoured to control holograms." - icon = 'icons/obj/stationobjs.dmi' - icon_keyboard = "tech_key" - icon_screen = "holocontrol" - var/obj/machinery/hologram/projector/projector = null - var/temp = null - var/lumens = 0.0 - var/h_r = 245.0 - var/h_g = 245.0 - var/h_b = 245.0 - - -/obj/machinery/computer/hologram_comp/New() - ..() - spawn( 10 ) - src.projector = locate(/obj/machinery/hologram/projector, get_step(src.loc, NORTH)) - return - return - -/obj/machinery/computer/hologram_comp/attack_hand() - if(!in_range(src, usr)) - return 0 - src.show_console(usr) - return - -/obj/machinery/computer/hologram_comp/proc/render() - var/icon/I = new /icon('icons/mob/human.dmi', "body_m_s") - - if(src.lumens >= 0) - I.Blend(rgb(src.lumens, src.lumens, src.lumens), ICON_ADD) - else - I.Blend(rgb(- src.lumens, -src.lumens, -src.lumens), ICON_SUBTRACT) - - I.Blend(new /icon('icons/mob/human.dmi', "mouth_m_s"), ICON_OVERLAY) - I.Blend(new /icon('icons/mob/underwear.dmi', "Mens White"), ICON_OVERLAY) - - var/icon/U = new /icon('icons/mob/human_face.dmi', "hair_a_s") - U.Blend(rgb(src.h_r, src.h_g, src.h_b), ICON_ADD) - - I.Blend(U, ICON_OVERLAY) - - src.projector.hologram.icon = I - -/obj/machinery/computer/hologram_comp/proc/show_console(var/mob/user as mob) - var/dat - user.set_machine(src) - if(src.temp) - dat = text("[]

Clear", src.temp) - else - dat = text({"Hologram Status:
\n - Power: []
\n - Hologram Control:
\n - Color Luminosity: []/220 \[Reset\]
\n - Lighten: 1 10
\n - Darken: 1 10
\n -
\nHair Color: ([],[],[]) \[Reset\]
\n - Red (0-255): \[0\] -10 -1 [] 1 10 \[255\]
\n - Green (0-255): \[0\] -10 -1 [] 1 10 \[255\]
\n - Blue (0-255): \[0\] -10 -1 [] 1 10 \[255\]
- "}, (src.projector.hologram ? "On" : "Off"), -src.lumens + 35, src.h_r, src.h_g, src.h_b, src.h_r, src.h_g, src.h_b) - user << browse(dat, "window=hologram_console") - onclose(user, "hologram_console") - return - -/obj/machinery/computer/hologram_comp/Topic(href, href_list) - if(..()) - return 1 - if(in_range(src, usr)) - flick("holo_console1", src) - if(href_list["power"]) - if(src.projector.hologram) - src.projector.icon_state = "hologram0" - //src.projector.hologram = null - qdel(src.projector.hologram) - else - src.projector.hologram = new(src.projector.loc) - src.projector.hologram.icon = 'icons/mob/human.dmi' - src.projector.hologram.icon_state = "body_m_s" - src.projector.icon_state = "hologram1" - src.render() - else - if(href_list["h_r"]) - if(src.projector.hologram) - src.h_r += text2num(href_list["h_r"]) - src.h_r = min(max(src.h_r, 0), 255) - render() - else - if(href_list["h_g"]) - if(src.projector.hologram) - src.h_g += text2num(href_list["h_g"]) - src.h_g = min(max(src.h_g, 0), 255) - render() - else - if(href_list["h_b"]) - if(src.projector.hologram) - src.h_b += text2num(href_list["h_b"]) - src.h_b = min(max(src.h_b, 0), 255) - render() - else - if(href_list["light"]) - if(src.projector.hologram) - src.lumens += text2num(href_list["light"]) - src.lumens = min(max(src.lumens, -185.0), 35) - render() - else - if(href_list["reset"]) - if(src.projector.hologram) - src.lumens = 0 - render() - else - if(href_list["temp"]) - src.temp = null - for(var/mob/M in viewers(1, src)) - if((M.client && M.machine == src)) - src.show_console(M) - return diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index 98d14c8ac30..4cbf105c100 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -205,8 +205,8 @@ if(href_list["dstele"]) var/choices = list(0) var/list/reachable_levels = levels_by_trait(REACHABLE) - for(var/datum/space_level/S in reachable_levels) - choices += S.zpos + for(var/z in reachable_levels) + choices += z var/obj/machinery/computer/pod/deathsquad/D = src var/input = input("Enter the destination Z-Level. The mechs will arrive from the East. Leave 0 if you don't want to set a specific ZLevel", "Mass Driver Controls", 0) in choices D.teleporter_dest = input diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 219d37ce627..96adefc75b8 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -108,7 +108,7 @@ return for(var/mob/living/carbon/slime/M in range(1,L)) if(M.Victim == L) - to_chat(usr, "[L.name] will not fit into the cryo cell because they have a slime latched onto their head.") + to_chat(usr, "[L.name] will not fit into the cryo cell because [L.p_they()] [L.p_have()] a slime latched onto [L.p_their()] head.") return if(put_mob(L)) if(L == user) @@ -297,18 +297,19 @@ default_deconstruction_crowbar(G) if(istype(G, /obj/item/grab)) + var/obj/item/grab/GG = G if(panel_open) to_chat(user, "Close the maintenance panel first.") return - if(!ismob(G:affecting)) + if(!ismob(GG.affecting)) return - for(var/mob/living/carbon/slime/M in range(1,G:affecting)) - if(M.Victim == G:affecting) - to_chat(usr, "[G:affecting:name] will not fit into the cryo because they have a slime latched onto their head.") + for(var/mob/living/carbon/slime/M in range(1,GG.affecting)) + if(M.Victim == GG.affecting) + to_chat(usr, "[GG.affecting.name] will not fit into the cryo because [GG.affecting.p_they()] [GG.affecting.p_have()] a slime latched onto [GG.affecting.p_their()] head.") return - var/mob/M = G:affecting + var/mob/M = GG.affecting if(put_mob(M)) - qdel(G) + qdel(GG) return /obj/machinery/atmospherics/unary/cryo_cell/update_icon() diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 88827a6ab05..80db23c59f7 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -551,7 +551,7 @@ for(var/mob/living/carbon/slime/M in range(1,L)) if(M.Victim == L) - to_chat(usr, "[L.name] will not fit into the cryo pod because they have a slime latched onto their head.") + to_chat(usr, "[L.name] will not fit into the cryo pod because [L.p_they()] [L.p_have()] a slime latched onto [L.p_their()] head.") return diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 501f510348b..0d49cc1b0cd 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -647,7 +647,7 @@ About the new airlock wires panel: if(affecting.receive_damage(10, 0)) H.UpdateDamageIcon() else - visible_message("[user] headbutts the airlock. Good thing they're wearing a helmet.") + visible_message("[user] headbutts the airlock. Good thing [user.p_theyre()] wearing a helmet.") return if(panel_open) diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index 678e29d3ae0..db508b9288f 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -10,8 +10,6 @@ usesound = 'sound/items/Deconstruct.ogg' var/list/conf_access = null var/one_access = 0 //if set to 1, door would receive req_one_access instead of req_access - var/last_configurator = null - var/locked = TRUE var/const/max_brain_damage = 60 // Maximum brain damage a mob can have until it can't use the electronics /obj/item/airlock_electronics/attack_self(mob/user) @@ -26,31 +24,23 @@ var/t1 = text("Access control
\n") - if(last_configurator) - t1 += "Operator: [last_configurator]
" + t1 += "Access requirement is set to " + t1 += one_access ? "ONE
" : "ALL
" - if(locked) - t1 += "Swipe ID
" - else - t1 += "Block
" + t1 += conf_access == null ? "All
" : "All
" - t1 += "Access requirement is set to " - t1 += one_access ? "ONE
" : "ALL
" + t1 += "
" - t1 += conf_access == null ? "All
" : "All
" + var/list/accesses = get_all_accesses() + for(var/acc in accesses) + var/aname = get_access_desc(acc) - t1 += "
" - - var/list/accesses = get_all_accesses() - for(var/acc in accesses) - var/aname = get_access_desc(acc) - - if(!conf_access || !conf_access.len || !(acc in conf_access)) - t1 += "[aname]
" - else if(one_access) - t1 += "[aname]
" - else - t1 += "[aname]
" + if(!conf_access || !conf_access.len || !(acc in conf_access)) + t1 += "[aname]
" + else if(one_access) + t1 += "[aname]
" + else + t1 += "[aname]
" t1 += "

Close

\n" @@ -66,20 +56,9 @@ return 1 if(href_list["close"]) - usr << browse(null, "window=airlock") + usr << browse(null, "window=airlock_electronics") return - if(href_list["login"]) - if(allowed(usr)) - locked = FALSE - last_configurator = usr.name - - if(locked) - return - - if(href_list["logout"]) - locked = TRUE - if(href_list["one_access"]) one_access = !one_access diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index db78e8c82ef..8f5c1144686 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -341,7 +341,7 @@ if(isElectrified()) if(shock(user, 75)) return - if(istype(C, /obj/item/detective_scanner) || istype(C, /obj/item/taperoll)) + if(istype(C, /obj/item/detective_scanner)) return if(istype(C, /obj/item/grenade/plastic/c4)) @@ -394,7 +394,7 @@ if(isElectrified()) if(shock(user, 75)) return - if(istype(C, /obj/item/detective_scanner) || istype(C, /obj/item/taperoll)) + if(istype(C, /obj/item/detective_scanner)) return add_fingerprint(user) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 78949fa0e45..563e4eb49f2 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -325,7 +325,7 @@ /obj/machinery/door/proc/crush() for(var/mob/living/L in get_turf(src)) - L.visible_message("[src] closes on [L], crushing them!", "[src] closes on you and crushes you!") + L.visible_message("[src] closes on [L], crushing [L.p_them()]!", "[src] closes on you and crushes you!") if(isalien(L)) //For xenos L.adjustBruteLoss(DOOR_CRUSH_DAMAGE * 1.5) //Xenos go into crit after aproximately the same amount of crushes as humans. L.emote("roar") diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index b20d99b2613..3f9e4f55a08 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -53,11 +53,38 @@ if(!hasPower()) open() -/obj/machinery/door/poddoor/multi_tile // Whoever wrote the old code for multi-tile spesspod doors needs to burn in hell. + // Whoever wrote the old code for multi-tile spesspod doors needs to burn in hell. - Unknown + // Wise words. - Bxil +/obj/machinery/door/poddoor/multi_tile name = "large pod door" layer = CLOSED_DOOR_LAYER closingLayer = CLOSED_DOOR_LAYER +/obj/machinery/door/poddoor/multi_tile/New() + . = ..() + apply_opacity_to_my_turfs(opacity) + +/obj/machinery/door/poddoor/multi_tile/open() + if(..()) + apply_opacity_to_my_turfs(opacity) + + +/obj/machinery/door/poddoor/multi_tile/close() + if(..()) + apply_opacity_to_my_turfs(opacity) + +/obj/machinery/door/poddoor/multi_tile/Destroy() + apply_opacity_to_my_turfs(0) + return ..() + +//Multi-tile poddoors don't turn invisible automatically, so we change the opacity of the turfs below instead one by one. +/obj/machinery/door/poddoor/multi_tile/proc/apply_opacity_to_my_turfs(var/new_opacity) + for(var/turf/T in locs) + T.opacity = new_opacity + T.has_opaque_atom = new_opacity + T.reconsider_lights() + update_freelook_sight() + /obj/machinery/door/poddoor/multi_tile/four_tile_ver/ icon = 'icons/obj/doors/1x4blast_vert.dmi' width = 4 diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 181e273dd43..1ab22f341b6 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -16,17 +16,20 @@ var/obj/item/airlock_electronics/electronics var/base_state = "left" var/reinf = 0 + var/cancolor = TRUE var/shards = 2 var/rods = 2 var/cable = 1 var/list/debris = list() -/obj/machinery/door/window/New() +/obj/machinery/door/window/New(loc, set_dir) ..() + if(set_dir) + setDir(set_dir) if(req_access && req_access.len) icon_state = "[icon_state]" base_state = icon_state - if(!color) + if(!color && cancolor) color = color_windows(src) for(var/i in 1 to shards) debris += new /obj/item/shard(src) @@ -97,6 +100,16 @@ return 1 if(get_dir(loc, target) == dir) //Make sure looking at appropriate border return !density + if(istype(mover, /obj/structure/window)) + var/obj/structure/window/W = mover + if(!valid_window_location(loc, W.ini_dir)) + return FALSE + else if(istype(mover, /obj/structure/windoor_assembly)) + var/obj/structure/windoor_assembly/W = mover + if(!valid_window_location(loc, W.ini_dir)) + return FALSE + else if(istype(mover, /obj/machinery/door/window) && !valid_window_location(loc, mover.dir)) + return FALSE else return 1 @@ -128,7 +141,7 @@ if(emagged) return 0 if(!operating) //in case of emag - operating = 1 + operating = TRUE do_animate("opening") playsound(loc, 'sound/machines/windowdoor.ogg', 100, 1) icon_state ="[base_state]open" @@ -152,7 +165,7 @@ if(forced < 2) if(emagged) return 0 - operating = 1 + operating = TRUE do_animate("closing") playsound(loc, 'sound/machines/windowdoor.ogg', 100, 1) icon_state = base_state @@ -186,6 +199,11 @@ /obj/machinery/door/window/narsie_act() color = NARSIE_WINDOW_COLOUR +/obj/machinery/door/window/ratvar_act() + var/obj/machinery/door/window/clockwork/C = new(loc, dir) + C.name = name + qdel(src) + /obj/machinery/door/window/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > T0C + (reinf ? 1600 : 800)) take_damage(round(exposed_volume / 200), BURN, 0, 0) @@ -204,7 +222,7 @@ /obj/machinery/door/window/emag_act(mob/user, obj/weapon) if(!operating && density && !emagged) emagged = TRUE - operating = 1 + operating = TRUE flick("[base_state]spark", src) playsound(src, "sparks", 75, 1) sleep(6) @@ -314,6 +332,45 @@ desc = "For keeping in criminal scum." req_access = list(access_brig) +/obj/machinery/door/window/clockwork + name = "brass windoor" + desc = "A thin door with translucent brass paneling." + icon_state = "clockwork" + base_state = "clockwork" + shards = 0 + rods = 0 + burn_state = FIRE_PROOF + cancolor = FALSE + var/made_glow = FALSE + +/obj/machinery/door/window/clockwork/New(loc, set_dir) + ..() + debris += new/obj/item/stack/tile/brass(src, 2) + +/obj/machinery/door/window/clockwork/setDir(direct) + if(!made_glow) + var/obj/effect/E = new /obj/effect/temp_visual/ratvar/door/window(get_turf(src)) + E.setDir(direct) + made_glow = TRUE + ..() + +/obj/machinery/door/window/clockwork/emp_act(severity) + if(prob(80/severity)) + open() + +/obj/machinery/door/window/clockwork/ratvar_act() + obj_integrity = max_integrity + +/obj/machinery/door/window/clockwork/hasPower() + return TRUE //yup that's power all right + +/obj/machinery/door/window/clockwork/narsie_act() + take_damage(rand(30, 60), BRUTE) + if(src) + var/previouscolor = color + color = "#960000" + animate(src, color = previouscolor, time = 8) + /obj/machinery/door/window/northleft dir = NORTH diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index da64430b941..2b0691d5801 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -76,7 +76,7 @@ L.Weaken(strength) if(L.weakeyes) L.Weaken(strength * 1.5) - L.visible_message("[L] gasps and shields their eyes!") + L.visible_message("[L] gasps and shields [L.p_their()] eyes!") /obj/machinery/flasher/emp_act(severity) if(stat & (BROKEN|NOPOWER)) diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 58404b133bd..0fc532ab0e4 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -1,7 +1,7 @@ -/* Holograms! +/* holograms! * Contains: * Holopad - * Hologram + * hologram * Other stuff */ @@ -9,11 +9,10 @@ Revised. Original based on space ninja hologram code. Which is also mine. /N How it works: AI clicks on holopad in camera view. View centers on holopad. -AI clicks again on the holopad to display a hologram. Hologram stays as long as AI is looking at the pad and it (the hologram) is in range of the pad. +AI clicks again on the holopad to display a hologram. hologram stays as long as AI is looking at the pad and it (the hologram) is in range of the pad. AI can use the directional keys to move the hologram around, provided the above conditions are met and the AI in question is the holopad's master. Only one AI may project from a holopad at any given time. AI may cancel the hologram at any time by clicking on the holopad once more. - Possible to do for anyone motivated enough: Give an AI variable for different hologram icons. Itegrate EMP effect to disable the unit. @@ -27,19 +26,35 @@ Possible to do for anyone motivated enough: // HOLOPAD MODE // 0 = RANGE BASED // 1 = AREA BASED -var/const/HOLOPAD_MODE = 0 +#define HOLOPAD_PASSIVE_POWER_USAGE 1 +#define HOLOGRAM_POWER_USAGE 2 +#define RANGE_BASED 0 +#define AREA_BASED 1 + +var/const/HOLOPAD_MODE = RANGE_BASED + var/list/holopads = list() /obj/machinery/hologram/holopad - name = "\improper AI holopad" - desc = "It's a floor-mounted device for projecting holographic images. It is activated remotely." + name = "holopad" + desc = "It's a floor-mounted device for projecting holographic images." icon_state = "holopad0" - + anchored = 1 + use_power = 1 + idle_power_usage = 5 + active_power_usage = 100 layer = TURF_LAYER+0.1 //Preventing mice and drones from sneaking under them. armor = list(melee = 50, bullet = 20, laser = 20, energy = 20, bomb = 0, bio = 0, rad = 0) - var/mob/living/silicon/ai/master//Which AI, if any, is controlling the object? Only one AI may control a hologram at any time. + var/list/masters = list()//List of living mobs that use the holopad + var/list/holorays = list()//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 = "" + var/list/holo_calls //array of /datum/holocalls + var/datum/holocall/outgoing_call //do not modify the datums only check and call the public procs + var/static/force_answer_call = FALSE //Calls will be automatically answered after a couple rings, here for debugging + var/obj/effect/overlay/holoray/ray + var/ringing = FALSE /obj/machinery/hologram/holopad/New() ..() @@ -49,6 +64,27 @@ var/list/holopads = list() component_parts += new /obj/item/stock_parts/capacitor(null) RefreshParts() +/obj/machinery/hologram/holopad/Destroy() + if(outgoing_call) + outgoing_call.ConnectionFailure(src) + + for(var/I in holo_calls) + var/datum/holocall/HC = I + HC.ConnectionFailure(src) + + for(var/I in masters) + clear_holo(I) + holopads -= src + return ..() + +/obj/machinery/hologram/holopad/power_change() + if(powered()) + stat &= ~NOPOWER + else + stat |= NOPOWER + if(outgoing_call) + outgoing_call.ConnectionFailure(src) + /obj/machinery/hologram/holopad/RefreshParts() var/holograph_range = 4 for(var/obj/item/stock_parts/capacitor/B in component_parts) @@ -68,197 +104,383 @@ var/list/holopads = list() default_deconstruction_crowbar(P) -/obj/machinery/hologram/holopad/attack_hand(var/mob/living/carbon/human/user) //Carn: Hologram requests. +/obj/machinery/hologram/holopad/attack_hand(mob/living/carbon/human/user) + if(..()) + return + + if(outgoing_call) + return + + user.set_machine(src) + interact(user) + +/obj/machinery/hologram/holopad/AltClick(mob/living/carbon/human/user) + if(..()) + return + if(isAI(user)) + hangup_all_calls() + return + +//Stop ringing the AI!! +/obj/machinery/hologram/holopad/proc/hangup_all_calls() + for(var/I in holo_calls) + var/datum/holocall/HC = I + HC.Disconnect(src) + +/obj/machinery/hologram/holopad/interact(mob/living/carbon/human/user) //Carn: hologram requests. if(!istype(user)) return - if(alert(user,"Would you like to request an AI's presence?",,"Yes","No") == "Yes") - if(last_request + 200 < world.time) //don't spam the AI with requests you jerk! - last_request = world.time - to_chat(user, "You request an AI's presence.") - var/area/area = get_area(src) - for(var/mob/living/silicon/ai/AI in living_mob_list) - if(!AI.client) continue - to_chat(AI, "Your presence is requested at \the [area].") - else - to_chat(user, "A request for AI presence was already sent recently.") + var/dat + if(temp) + dat = temp + else + dat = "Request an AI's presence.
" + dat += "Call another holopad.
" + + if(LAZYLEN(holo_calls)) + dat += "=====================================================
" + + var/one_answered_call = FALSE + var/one_unanswered_call = FALSE + 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)].
" + one_unanswered_call = TRUE + else + one_answered_call = TRUE + + if(one_answered_call && one_unanswered_call) + dat += "=====================================================
" + //we loop twice for formatting + for(var/I in holo_calls) + var/datum/holocall/HC = I + if(HC.connected_holopad == src) + dat += "Disconnect call from [HC.user].
" + + var/area/area = get_area(src) + var/datum/browser/popup = new(user, "holopad", "[area] holopad", 400, 300) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) + popup.open() + +/obj/machinery/hologram/holopad/Topic(href, href_list) + if(..() || isAI(usr)) + return + add_fingerprint(usr) + if(stat & NOPOWER) + return + if(href_list["AIrequest"]) + if(last_request + 200 < world.time) + last_request = world.time + temp = "You requested an AI's presence.
" + temp += "Main Menu" + var/area/area = get_area(src) + for(var/mob/living/silicon/ai/AI in ai_list) + if(!AI.client) + continue + to_chat(AI, "Your presence is requested at \the [area].") + else + temp = "A request for AI presence was already sent recently.
" + temp += "Main Menu" + + else if(href_list["Holocall"]) + if(outgoing_call) + return + + temp = "You must stand on the holopad to make a call!
" + temp += "Main Menu" + if(usr.loc == loc) + var/list/callnames = list() + for(var/I in holopads) + var/area/A = get_area(I) + if(A) + LAZYADD(callnames[A], I) + callnames -= get_area(src) + + var/result = input(usr, "Choose an area to call", "Holocall") as null|anything in callnames + + if(QDELETED(usr) || !result || outgoing_call) + return + + if(usr.loc == loc) + temp = "Dialing...
" + temp += "Main Menu" + new /datum/holocall(usr, src, callnames[result]) + + else if(href_list["connectcall"]) + var/datum/holocall/call_to_connect = locateUID(href_list["connectcall"]) + if(!QDELETED(call_to_connect) && (call_to_connect in holo_calls)) + call_to_connect.Answer(src) + temp = "" + + else if(href_list["disconnectcall"]) + var/datum/holocall/call_to_disconnect = locateUID(href_list["disconnectcall"]) + if(!QDELETED(call_to_disconnect)) + call_to_disconnect.Disconnect(src) + temp = "" + + else if(href_list["mainmenu"]) + temp = "" + if(outgoing_call) + outgoing_call.Disconnect() + + updateDialog() + +//do not allow AIs to answer calls or people will use it to meta the AI satellite /obj/machinery/hologram/holopad/attack_ai(mob/living/silicon/ai/user) if(!istype(user)) return + if(outgoing_call) + return /*There are pretty much only three ways to interact here. I don't need to check for client since they're clicking on an object. 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. + if(user.eyeobj.loc != loc)//Set client eye on the object if it's not already. user.eyeobj.setLoc(get_turf(src)) - else if(!hologram)//If there is no hologram, possibly make one. - activate_holo(user, 0) - else if(master == user)//If there is a hologram, remove it. But only if the user is the master. Otherwise do nothing. - clear_holo() - return + else if(!LAZYLEN(masters) || !masters[user])//If there is no hologram, possibly make one. + activate_holo(user, 1) + else//If there is a hologram, remove it. + clear_holo(user) -/obj/machinery/hologram/holopad/proc/activate_holo(mob/living/silicon/ai/user, var/force = 0) - if(!force && user.eyeobj.loc != src.loc) // allows holopads to pass off holograms to the next holopad in the chain +/obj/machinery/hologram/holopad/process() + for(var/I in masters) + var/mob/living/master = I + if((stat & NOPOWER) || !validate_user(master)) + clear_holo(master) + + if(outgoing_call) + outgoing_call.Check() + + ringing = FALSE + + for(var/I in holo_calls) + var/datum/holocall/HC = I + //Sanity check and skip if no longer valid call + if(!HC.Check()) + atom_say("Call was terminated at remote terminal.") + continue + + if(HC.connected_holopad != src) + if(force_answer_call && world.time > (HC.call_start_time + (HOLOPAD_MAX_DIAL_TIME / 2))) + HC.Answer(src) + break + if(outgoing_call) + HC.Disconnect(src)//can't answer calls while calling + else + playsound(src, 'sound/machines/twobeep.ogg', 100) //bring, bring! + ringing = TRUE + + update_icon() + + +//Try to transfer hologram to another pad that can project on T +/obj/machinery/hologram/holopad/proc/transfer_to_nearby_pad(turf/T, mob/holo_owner) + if(!isAI(holo_owner)) + return + for(var/pad in holopads) + var/obj/machinery/hologram/holopad/another = pad + if(another == src) + continue + if(another.validate_location(T)) + var/obj/effect/overlay/holo_pad_hologram/h = masters[holo_owner] + unset_holo(holo_owner) + another.set_holo(holo_owner, h) + return TRUE + return FALSE + +/obj/machinery/hologram/holopad/proc/validate_user(mob/living/user) + if(QDELETED(user) || user.incapacitated() || !user.client) + return FALSE + + if(istype(user, /mob/living/silicon/ai)) + var/mob/living/silicon/ai/AI = user + if(!AI.current) + return FALSE + return TRUE + +//Can we display holos there +//Area check instead of line of sight check because this is a called a lot if AI wants to move around. +/obj/machinery/hologram/holopad/proc/validate_location(turf/T,check_los = FALSE) + if(T.z == z && get_dist(T, src) <= holo_range && T.loc == get_area(src)) + return TRUE + return FALSE + + +/obj/machinery/hologram/holopad/proc/move_hologram(mob/living/user, turf/new_turf) + if(masters[user]) + var/obj/effect/overlay/holo_pad_hologram/holo = masters[user] + var/transfered = FALSE + if(!validate_location(new_turf)) + if(!transfer_to_nearby_pad(new_turf,user)) + clear_holo(user) + return FALSE + else + transfered = TRUE + //All is good. + holo.setDir(get_dir(holo.loc, new_turf)) + holo.forceMove(new_turf) + if(!transfered) + update_holoray(user,new_turf) + return TRUE + +/obj/machinery/hologram/holopad/proc/activate_holo(mob/living/user, var/force = 0) + var/mob/living/silicon/ai/AI = user + if(!istype(AI)) + AI = null + if(AI && !force && AI.eyeobj.loc != loc) // allows holopads to pass off holograms to the next holopad in the chain to_chat(user, "ERROR: Unable to project hologram.") - else if(!(stat & NOPOWER))//If the projector has power - if(user.holo) - var/obj/machinery/hologram/holopad/current = user.holo - current.clear_holo() - if(!hologram)//If there is not already a hologram. - create_holo(user)//Create one. - src.visible_message("A holographic image of [user] flicks to life right before your eyes!") - else - to_chat(user, "ERROR: Image feed in progress.") - else - to_chat(user, "ERROR: Unable to project hologram.") - return + if(!(stat & NOPOWER) && (!AI || force)) + if(AI && (istype(AI.current, /obj/machinery/hologram/holopad))) + to_chat(user, "ERROR: Image feed in progress.") + return + + var/obj/effect/overlay/holo_pad_hologram/hologram = new(loc)//Spawn a blank effect at the location. + if(isAI(user)) + hologram.icon = AI.holo_icon + else //make it like real life + hologram.icon = getHologramIcon(get_id_photo(user)) + hologram.icon_state = user.icon_state + hologram.alpha = 100 + hologram.Impersonation = user + + hologram.mouse_opacity = 0//So you can't click on it. + hologram.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them. + hologram.anchored = 1//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) + + if(!masters[user])//If there is not already a hologram. + visible_message("A holographic image of [user] flicks to life right before your eyes!") + + return hologram + + + to_chat(user, "ERROR: Hologram Projection Malfunction.") + clear_holo(user)//safety check /*This is the proc for special two-way communication between AI and holopad/people talking near holopad. For the other part of the code, check silicon say.dm. Particularly robot talk.*/ -/obj/machinery/hologram/holopad/hear_talk(mob/living/M, text, verb, datum/language/speaking) - if(M && hologram && master)//Master is mostly a safety in case lag hits or something. - master.relay_speech(M, text, verb, speaking) +/obj/machinery/hologram/holopad/hear_talk(atom/movable/speaker, message, verb, datum/language/message_language) + if(speaker && masters.len)//Master is mostly a safety in case lag hits or something. Radio_freq so AIs dont hear holopad stuff through radios. + for(var/mob/living/silicon/ai/master in masters) + if(masters[master] && speaker != master) + master.relay_speech(speaker, message, verb, message_language) -/obj/machinery/hologram/holopad/hear_message(mob/living/M, text) - if(M&&hologram&&master)//Master is mostly a safety in case lag hits or something. - var/name_used = M.GetVoice() - var/rendered = "Holopad received, [name_used] [text]" - master.show_message(rendered, 2) - return + for(var/I in holo_calls) + var/datum/holocall/HC = I + if(HC.connected_holopad == src && speaker != HC.hologram) + HC.user.hear_say(message, verb, message_language, speaker = speaker) -/obj/machinery/hologram/holopad/proc/create_holo(mob/living/silicon/ai/A, turf/T = loc) - hologram = new(T)//Spawn a blank effect at the location. - hologram.icon = A.holo_icon - hologram.mouse_opacity = 0//So you can't click on it. - hologram.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them. - hologram.anchored = 1//So space wind cannot drag it. - hologram.name = "[A.name] (Hologram)"//If someone decides to right click. - hologram.set_light(2) //hologram lighting - set_light(2) //pad lighting - icon_state = "holopad1" - A.holo = src - master = A//AI is the master. - use_power = 2//Active power usage. - return 1 + if(outgoing_call && speaker == outgoing_call.user) + outgoing_call.hologram.atom_say(message) -/obj/machinery/hologram/holopad/proc/clear_holo() -// hologram.set_light(0)//Clear lighting. //handled by the lighting controller when its ower is deleted - QDEL_NULL(hologram)//Get rid of hologram. - if(master.holo == src) - master.holo = null - master = null//Null the master, since no-one is using it now. - set_light(0) //pad lighting (hologram lighting will be handled automatically since its owner was deleted) - icon_state = "holopad0" - use_power = 1//Passive power usage. - return 1 -/obj/machinery/hologram/holopad/process() - if(hologram)//If there is a hologram. - if(master && !master.stat && master.client && master.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(!(stat & NOPOWER))//If the machine has power. - if((HOLOPAD_MODE == 0 && (get_dist(master.eyeobj, src) <= holo_range))) - return 1 - else if(HOLOPAD_MODE == 1) - - var/area/holo_area = get_area(src) - var/area/eye_area = get_area(master.eyeobj) - - if(eye_area != holo_area) - return 1 - - var/mob/living/silicon/ai/theai = master - var/turf/target_turf = get_turf(master.eyeobj) - var/newdir = hologram.dir - clear_holo()//If not, we want to get rid of the hologram. - var/obj/machinery/hologram/holopad/pad_close = get_closest_atom(/obj/machinery/hologram/holopad, holopads, theai.eyeobj) - if(get_dist(pad_close, theai.eyeobj) <= pad_close.holo_range) - if(!(pad_close.stat & NOPOWER) && !pad_close.hologram && (theai && !theai.stat && theai.client)) - pad_close.activate_holo(theai, 1) - if(pad_close.hologram) - pad_close.hologram.forceMove(target_turf) - pad_close.hologram.dir = newdir - return 1 - -/obj/machinery/hologram/holopad/proc/move_hologram() - if(hologram) - step_to(hologram, master.eyeobj) // So it turns. - hologram.loc = get_turf(master.eyeobj) - - return 1 - -// Simple helper to face what you clicked on, in case it should be needed in more than one place -/obj/machinery/hologram/holopad/proc/face_atom(var/atom/A) - if( !hologram || !A || !hologram.x || !hologram.y || !A.x || !A.y ) return - var/dx = A.x - hologram.x - var/dy = A.y - hologram.y - if(!dx && !dy) // Wall items are graphically shifted but on the floor - if(A.pixel_y > 16) hologram.dir = NORTH - else if(A.pixel_y < -16)hologram.dir = SOUTH - else if(A.pixel_x > 16) hologram.dir = EAST - else if(A.pixel_x < -16)hologram.dir = WEST - return - - if(abs(dx) < abs(dy)) - if(dy > 0) hologram.dir = NORTH - else hologram.dir = SOUTH +/obj/machinery/hologram/holopad/proc/SetLightsAndPower() + var/total_users = masters.len + LAZYLEN(holo_calls) + use_power = HOLOPAD_PASSIVE_POWER_USAGE + HOLOGRAM_POWER_USAGE * total_users + if(total_users) + set_light(2) + icon_state = "holopad1" else - if(dx > 0) hologram.dir = EAST - else hologram.dir = WEST + set_light(0) + icon_state = "holopad0" + update_icon() -/* - * Hologram - */ +/obj/machinery/hologram/holopad/update_icon() + var/total_users = LAZYLEN(masters) + LAZYLEN(holo_calls) + if(ringing) + icon_state = "holopad_ringing" + else if(total_users) + icon_state = "holopad1" + else + icon_state = "holopad0" -/obj/machinery/hologram - anchored = 1 - use_power = 1 - idle_power_usage = 5 - active_power_usage = 100 - var/obj/effect/overlay/hologram//The projection itself. If there is one, the instrument is on, off otherwise. -//Destruction procs. -/obj/machinery/hologram/ex_act(severity) - switch(severity) - if(1.0) - qdel(src) - if(2.0) - if(prob(50)) - qdel(src) - if(3.0) - if(prob(5)) - qdel(src) - return +/obj/machinery/hologram/holopad/proc/set_holo(mob/living/user, var/obj/effect/overlay/holo_pad_hologram/h) + masters[user] = h + 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/hologram/blob_act() - qdel(src) - return +/obj/machinery/hologram/holopad/proc/clear_holo(mob/living/user) + qdel(masters[user]) // Get rid of user's hologram + unset_holo(user) + return TRUE -/obj/machinery/hologram/holopad/Destroy() - holopads -= src - if(hologram) - clear_holo() +/obj/machinery/hologram/holopad/proc/unset_holo(mob/living/user) + 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 + qdel(holorays[user]) + holorays -= user + SetLightsAndPower() + return TRUE + +/obj/machinery/hologram/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) + + +/obj/effect/overlay/holo_pad_hologram + var/mob/living/Impersonation + var/datum/holocall/HC + +/obj/effect/overlay/holo_pad_hologram/Destroy() + Impersonation = null + if(!QDELETED(HC)) + HC.Disconnect(HC.calling_holopad) return ..() -/* -Holographic project of everything else. +/obj/effect/overlay/holo_pad_hologram/Process_Spacemove(movement_dir = 0) + return 1 -/mob/verb/hologram_test() - set name = "Hologram Debug New" - set category = "CURRENT DEBUG" +/obj/effect/overlay/holo_pad_hologram/examine(mob/user) + if(Impersonation) + return Impersonation.examine(user) + return ..() - var/obj/effect/overlay/hologram = new(loc)//Spawn a blank effect at the location. - var/icon/flat_icon = icon(getFlatIcon(src,0))//Need to make sure it's a new icon so the old one is not reused. - flat_icon.ColorTone(rgb(125,180,225))//Let's make it bluish. - flat_icon.ChangeOpacity(0.5)//Make it half transparent. - var/input = input("Select what icon state to use in effect.",,"") - if(input) - var/icon/alpha_mask = new('icons/effects/effects.dmi', "[input]") - flat_icon.AddAlphaMask(alpha_mask)//Finally, let's mix in a distortion effect. - hologram.icon = flat_icon - to_chat(world, "Your icon should appear now.") - return -*/ +/obj/effect/overlay/holoray + name = "holoray" + icon = 'icons/effects/96x96.dmi' + icon_state = "holoray" + layer = FLY_LAYER + density = FALSE + anchored = TRUE + mouse_opacity = 1 + pixel_x = -32 + pixel_y = -32 + alpha = 100 /* * Other Stuff: Is this even used? @@ -268,3 +490,6 @@ Holographic project of everything else. desc = "It makes a hologram appear...with magnets or something..." icon = 'icons/obj/stationobjs.dmi' icon_state = "hologram0" + +#undef HOLOPAD_PASSIVE_POWER_USAGE +#undef HOLOGRAM_POWER_USAGE diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 422e697e7b0..491cb93018e 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -306,21 +306,21 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co if(FC.channel_name == channel_name) check = 1 break - if(channel_name == "" || channel_name == REDACTED || scanned_user == "Unknown" || check || (scanned_user in existing_authors)) - temp = "ERROR: Could not submit feed channel to Network.
    " - if(scanned_user in existing_authors) - temp += "
  • There already exists a feed channel under your name.
  • " - if(channel_name == "" || channel_name == REDACTED) - temp += "
  • Invalid channel name.
  • " - if(check) - temp += "
  • Channel name already in use.
  • " - if(scanned_user == "Unknown") - temp += "
  • Channel author unverified.
  • " - temp += "
" - temp_back_screen = NEWSCASTER_CREATE_FC - else - var/choice = alert("Please confirm feed channel creation", "Network Channel Handler", "Confirm", "Cancel") - if(choice == "Confirm") + var/choice = alert("Please confirm feed channel creation", "Network Channel Handler", "Confirm", "Cancel") + if(choice == "Confirm") + if(channel_name == "" || channel_name == REDACTED || scanned_user == "Unknown" || check || (scanned_user in existing_authors)) + temp = "ERROR: Could not submit feed channel to Network.
    " + if(scanned_user in existing_authors) + temp += "
  • There already exists a feed channel under your name.
  • " + if(channel_name == "" || channel_name == REDACTED) + temp += "
  • Invalid channel name.
  • " + if(check) + temp += "
  • Channel name already in use.
  • " + if(scanned_user == "Unknown") + temp += "
  • Channel author unverified.
  • " + temp += "
" + temp_back_screen = NEWSCASTER_CREATE_FC + else var/datum/feed_channel/newChannel = new /datum/feed_channel newChannel.channel_name = channel_name newChannel.author = scanned_user @@ -422,19 +422,19 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co else if(href_list["submit_wanted"]) var/input_param = text2num(href_list["submit_wanted"]) - if(msg == "" || channel_name == "" || scanned_user == "Unknown") - temp = "ERROR: Wanted issue rejected by Network.
    " - if(channel_name == "" || channel_name == REDACTED) - temp += "
  • Invalid name for person wanted.
  • " - if(scanned_user == "Unknown") - temp += "
  • Channel author unverified.
  • " - if(msg == "" || msg == REDACTED) - temp += "
  • Invalid description.
  • " - temp += "
" - temp_back_screen = NEWSCASTER_MAIN - else - var/choice = alert("Please confirm wanted issue [input_param == 1 ? "creation." : "edit."]", "Network Security Handler", "Confirm", "Cancel") - if(choice == "Confirm") + var/choice = alert("Please confirm wanted issue [input_param == 1 ? "creation." : "edit."]", "Network Security Handler", "Confirm", "Cancel") + if(choice == "Confirm") + if(msg == "" || channel_name == "" || scanned_user == "Unknown") + temp = "ERROR: Wanted issue rejected by Network.
    " + if(channel_name == "" || channel_name == REDACTED) + temp += "
  • Invalid name for person wanted.
  • " + if(scanned_user == "Unknown") + temp += "
  • Channel author unverified.
  • " + if(msg == "" || msg == REDACTED) + temp += "
  • Invalid description.
  • " + temp += "
" + temp_back_screen = NEWSCASTER_MAIN + else if(input_param == 1) //input_param == 1: new wanted issue, input_param == 2: editing an existing one var/datum/feed_message/W = new /datum/feed_message W.author = channel_name diff --git a/code/game/machinery/poolcontroller.dm b/code/game/machinery/poolcontroller.dm index f6ecd511b2b..de5552e6a75 100644 --- a/code/game/machinery/poolcontroller.dm +++ b/code/game/machinery/poolcontroller.dm @@ -100,14 +100,14 @@ if(drownee.losebreath > 20) //You've probably got bigger problems than drowning at this point, so we won't add to it until you get that under control. return - add_attack_logs(src, drownee, "Drowned", isLivingSSD(drownee)) + add_attack_logs(src, drownee, "Drowned", isLivingSSD(drownee) ? null : ATKLOG_ALL) if(drownee.stat) //Mob is in critical. drownee.AdjustLoseBreath(3, bound_lower = 0, bound_upper = 20) drownee.visible_message("\The [drownee] appears to be drowning!","You're quickly drowning!") //inform them that they are fucked. else drownee.AdjustLoseBreath(2, bound_lower = 0, bound_upper = 20) //For every time you drown, you miss 2 breath attempts. Hope you catch on quick! if(prob(35)) //35% chance to tell them what is going on. They should probably figure it out before then. - drownee.visible_message("\The [drownee] flails, almost like they are drowning!","You're lacking air!") //*gasp* *gasp* *gasp* *gasp* *gasp* + drownee.visible_message("\The [drownee] flails, almost like [drownee.p_they()] [drownee.p_are()] drowning!","You're lacking air!") //*gasp* *gasp* *gasp* *gasp* *gasp* diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index a77bd744f92..ebf3cfeadf9 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -276,7 +276,6 @@ overlays.Cut() overlays += image('icons/obj/status_display.dmi', icon_state=picture_state) -#undef CHARS_PER_LINE #undef FONT_SIZE #undef FONT_COLOR #undef WARNING_FONT_COLOR diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index a7d68adbe62..370cef73559 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -413,13 +413,13 @@ var/i for(i=0,i<4,i++) //Gradually give the guy inside some damaged based on the intensity spawn(50) - if(src.OCCUPANT) - if(src.issuperUV) + if(OCCUPANT) + if(issuperUV) OCCUPANT.take_organ_damage(0,40) - to_chat(user, "Test. You gave him 40 damage") + to_chat(user, "Test. You gave [OCCUPANT.p_them()] 40 damage") else OCCUPANT.take_organ_damage(0,8) - to_chat(user, "Test. You gave him 8 damage") + to_chat(user, "Test. You gave [OCCUPANT.p_them()] 8 damage") return*/ diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index a4c73cc8fac..247a40a3425 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -230,8 +230,9 @@ var/turf/bombturf = get_turf(src) var/area/A = get_area(bombturf) if(payload && !istype(payload, /obj/item/bombcore/training)) - msg_admin_attack("[key_name_admin(user)] has primed a [name] ([payload]) for detonation at [A.name] (JMP).") - log_game("[key_name(user)] has primed a [name] ([payload]) for detonation at [A.name] ([bombturf.x], [bombturf.y], [bombturf.z])") + msg_admin_attack("[key_name_admin(user)] has primed a [name] ([payload]) for detonation at [A.name] (JMP).", ATKLOG_FEW) + log_game("[key_name(user)] has primed a [name] ([payload]) for detonation at [A.name] [COORD(bombturf)]") + investigate_log("[key_name(user)] has has primed a [name] ([payload]) for detonation at [A.name] [COORD(bombturf)]", INVESTIGATE_BOMB) payload.adminlog = "\The [src] that [key_name(user)] had primed detonated!" /obj/machinery/syndicatebomb/proc/isWireCut(var/index) @@ -556,11 +557,11 @@ var/area/A = get_area(T) detonated-- message_admins("[key_name_admin(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name] (JMP).") - bombers += "[key_name(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name] ([T.x],[T.y],[T.z])" + investigate_log("[key_name(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name] ([T.x],[T.y],[T.z])", INVESTIGATE_BOMB) log_game("[key_name(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name] ([T.x],[T.y],[T.z])") detonated = 0 existant = 0 timer = world.time + BUTTON_COOLDOWN #undef BUTTON_COOLDOWN -#undef BUTTON_DELAY \ No newline at end of file +#undef BUTTON_DELAY diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 48384f78f1e..64e387fb731 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -156,8 +156,26 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept signal.data["realname"], signal.data["vname"], 3, signal.data["compression"], list(0), connection.frequency, signal.data["verb"], signal.data["language"]) - - +#define CREW_RADIO_TYPE 0 +#define CENTCOMM_RADIO_TYPE 1 +#define SYNDICATE_RADIO_TYPE 2 +/proc/Is_Bad_Connection(old_freq, new_freq) //Makes sure players cant read radios of a higher level than they are + var/old_type = CREW_RADIO_TYPE + var/new_type = CREW_RADIO_TYPE + for(var/antag_freq in ANTAG_FREQS) + if(old_freq == antag_freq) + old_type = SYNDICATE_RADIO_TYPE + if(new_freq == antag_freq) + new_type = SYNDICATE_RADIO_TYPE + + for(var/cent_freq in CENT_FREQS) + if(old_freq == cent_freq) + old_type = CENTCOMM_RADIO_TYPE + if(new_freq == cent_freq) + new_type = CENTCOMM_RADIO_TYPE + + return new_type > old_type + /** Here is the big, bad function that broadcasts a message given the appropriate @@ -226,21 +244,28 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept var/display_freq = freq + var/bad_connection = FALSE + var/datum/radio_frequency/new_connection = connection + + if(connection.frequency != display_freq) + bad_connection = Is_Bad_Connection(connection.frequency, display_freq) + new_connection = radio_controller.return_frequency(display_freq) + var/list/obj/item/radio/radios = list() // --- Broadcast only to intercom devices --- - if(data == 1) + if(data == 1 && !bad_connection) - for(var/obj/item/radio/intercom/R in connection.devices["[RADIO_CHAT]"]) + for(var/obj/item/radio/intercom/R in new_connection.devices["[RADIO_CHAT]"]) if(R.receive_range(display_freq, level) > -1) radios += R // --- Broadcast only to intercoms and station-bounced radios --- - else if(data == 2) + else if(data == 2 && !bad_connection) - for(var/obj/item/radio/R in connection.devices["[RADIO_CHAT]"]) + for(var/obj/item/radio/R in new_connection.devices["[RADIO_CHAT]"]) if(istype(R, /obj/item/radio/headset)) continue @@ -259,9 +284,9 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept // --- Broadcast to ALL radio devices --- - else + else if(!bad_connection) - for(var/obj/item/radio/R in connection.devices["[RADIO_CHAT]"]) + for(var/obj/item/radio/R in new_connection.devices["[RADIO_CHAT]"]) if(R.receive_range(display_freq, level) > -1) radios += R diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index 9dc30edf61e..0b9b1449137 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -436,7 +436,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() var/totaltraffic = 0 // gigabytes (if > 1024, divide by 1024 -> terrabytes) var/list/memory = list() // stored memory - var/rawcode = "" // the code to compile (raw text) + var/list/rawcode = list() // the code to compile (list of characters) var/datum/TCS_Compiler/Compiler // the compiler that compiles and runs the code var/autoruncode = 0 // 1 if the code is set to run every time a signal is picked up @@ -516,10 +516,9 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() relay_information(signal, "/obj/machinery/telecomms/broadcaster") -/obj/machinery/telecomms/server/proc/setcode(var/t) - if(t) - if(istext(t)) - rawcode = t +/obj/machinery/telecomms/server/proc/setcode(var/list/code) + if(istype(code)) + rawcode = code /obj/machinery/telecomms/server/proc/compile(mob/user as mob) if(Compiler) @@ -548,8 +547,8 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() /obj/machinery/telecomms/server/proc/admin_log(var/mob/mob) var/msg="[key_name(mob)] has compiled a script to server [src]:" log_game("NTSL: [msg]") - log_game("NTSL: [rawcode]") - src.investigate_log("[msg]
[rawcode]", "ntsl") + log_game("NTSL: [rawcode.Join("")]") + src.investigate_log("[msg]
[rawcode.Join("")]", "ntsl") if(length(rawcode)) // Let's not bother the admins for empty code. message_admins("[key_name_admin(mob)] has compiled and uploaded a NTSL script to [src.id] (JMP)") diff --git a/code/game/machinery/telecomms/traffic_control.dm b/code/game/machinery/telecomms/traffic_control.dm index a2580285a38..45f0817ef55 100644 --- a/code/game/machinery/telecomms/traffic_control.dm +++ b/code/game/machinery/telecomms/traffic_control.dm @@ -117,6 +117,7 @@ function compileCode() { var codeText = cMirror_fSubmit.getValue(); document.getElementById("cMirrorPost").value = codeText; + document.getElementById("cMirrorPostList").value = JSON.stringify(codeText.split('')); document.getElementById("theform").submit(); } @@ -135,6 +136,7 @@ + "} else @@ -189,6 +191,10 @@ if(code) storedcode = code + var/list/codelist = href_list["cMirrorList"] + if(istext(codelist)) + codelist = json_decode(codelist) + add_fingerprint(user) user.set_machine(src) @@ -198,14 +204,14 @@ switch(href_list["choice"]) if("Compile") - if(!code) + if(!istype(codelist)) return 0 if(user != editingcode) return 0 //only one editor if(SelectedServer) var/obj/machinery/telecomms/server/Server = SelectedServer - Server.setcode(code) + Server.setcode(codelist) spawn(0) // Output all the compile-time errors @@ -234,7 +240,7 @@ updateUsrDialog() for(var/obj/machinery/telecomms/server/Server in servers) - Server.setcode(code) + Server.setcode(codelist) var/list/compileerrors = Server.compile(user) if(!telecomms_check(user)) return diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index db228aff04f..f7b2e8bbd05 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -1,7 +1,3 @@ -#define CAT_NORMAL 1 -#define CAT_HIDDEN 2 // also used in corresponding wires/vending.dm -#define CAT_COIN 4 - /** * Datum used to hold information about a product in a vending machine */ @@ -840,6 +836,9 @@ /obj/item/reagent_containers/food/drinks/chicken_soup = 30,/obj/item/reagent_containers/food/drinks/weightloss = 50, /obj/item/reagent_containers/food/drinks/mug = 50) refill_canister = /obj/item/vending_refill/coffee +/obj/machinery/vending/coffee/free + prices = list() + /obj/machinery/vending/coffee/New() ..() component_parts = list() @@ -892,6 +891,9 @@ /obj/item/reagent_containers/food/snacks/pistachios = 35, /obj/item/reagent_containers/food/snacks/spacetwinkie = 30,/obj/item/reagent_containers/food/snacks/cheesiehonkers = 25,/obj/item/reagent_containers/food/snacks/tastybread = 30) refill_canister = /obj/item/vending_refill/snack +/obj/machinery/vending/snack/free + prices = list() + /obj/machinery/vending/snack/New() ..() component_parts = list() @@ -913,6 +915,9 @@ /obj/item/reagent_containers/food/snacks/chinese/rice = 50) refill_canister = /obj/item/vending_refill/chinese +/obj/machinery/vending/chinese/free + prices = list() + /obj/machinery/vending/chinese/New() ..() component_parts = list() @@ -938,6 +943,9 @@ /obj/item/reagent_containers/food/drinks/cans/space_up = 20,/obj/item/reagent_containers/food/drinks/cans/grape_juice = 20) refill_canister = /obj/item/vending_refill/cola +/obj/machinery/vending/cola/free + prices = list() + /obj/machinery/vending/cola/New() ..() component_parts = list() @@ -965,6 +973,9 @@ /obj/item/cartridge/signal = 75) armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0) +/obj/machinery/vending/cart/free + prices = list() + /obj/machinery/vending/liberationstation name = "\improper Liberation Station" desc = "An overwhelming amount of ancient patriotism washes over you just by looking at the machine." @@ -994,6 +1005,9 @@ prices = list(/obj/item/storage/fancy/cigarettes = 60,/obj/item/storage/fancy/cigarettes/cigpack_uplift = 60,/obj/item/storage/fancy/cigarettes/cigpack_robust = 60,/obj/item/storage/fancy/cigarettes/cigpack_carp = 60,/obj/item/storage/fancy/cigarettes/cigpack_midori = 60,/obj/item/storage/fancy/cigarettes/cigpack_random = 150, /obj/item/reagent_containers/food/pill/patch/nicotine = 15, /obj/item/storage/box/matches = 10,/obj/item/lighter/random = 60, /obj/item/storage/fancy/rollingpapers = 20) refill_canister = /obj/item/vending_refill/cigarette +/obj/machinery/vending/cigarette/free + prices = list() + /obj/machinery/vending/cigarette/New() ..() component_parts = list() @@ -1433,6 +1447,9 @@ premium = list(/obj/item/toy/pet_rock/fred = 1, /obj/item/toy/pet_rock/roxie = 1) refill_canister = /obj/item/vending_refill/crittercare +/obj/machinery/vending/crittercare/free + prices = list() + /obj/machinery/vending/crittercare/New() ..() component_parts = list() diff --git a/code/game/machinery/wishgranter.dm b/code/game/machinery/wishgranter.dm index 217b1e70165..248514179af 100644 --- a/code/game/machinery/wishgranter.dm +++ b/code/game/machinery/wishgranter.dm @@ -1,62 +1,42 @@ /obj/machinery/wish_granter - name = "Wish Granter" + name = "wish granter" desc = "You're not so sure about this, anymore..." icon = 'icons/obj/device.dmi' icon_state = "syndbeacon" - use_power = 0 - anchored = 1 - density = 1 - var/datum/mind/target - var/list/types = list() - var/inuse = 0 + use_power = NO_POWER_USE + anchored = TRUE + density = TRUE -/obj/machinery/wish_granter/New() - for(var/supname in all_superheroes) - types |= supname - ..() + var/charges = 1 + var/insisting = FALSE -/obj/machinery/wish_granter/attack_hand(var/mob/user as mob) - usr.set_machine(src) +/obj/machinery/wish_granter/attack_hand(mob/living/carbon/user) + . = ..() + if(.) + return + if(charges <= 0) + to_chat(user, "The Wish Granter lies silent.") + return - if(!istype(user, /mob/living/carbon/human)) + else if(!ishuman(user)) to_chat(user, "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's.") return - if(is_special_character(user)) + else if(is_special_character(user)) to_chat(user, "Even to a heart as dark as yours, you know nothing good will come of this. Something instinctual makes you pull away.") - return - if(inuse) - to_chat(user, "Someone is already communing with the Wish Granter.") - return + else if(!insisting) + to_chat(user, "Your first touch makes the Wish Granter stir, listening to you. Are you really sure you want to do this?") + insisting = TRUE - to_chat(user, "The power of the Wish Granter have turned you into the superhero the station deserves. You are a masked vigilante, and answer to no man. Will you use your newfound strength to protect the innocent, or will you hunt the guilty?") - - inuse = 1 - var/wish - if(types.len == 1) - wish = pick(types) else - wish = input("You want to become...","Wish") as null|anything in types - if(!wish) - inuse=0 - return - types -= wish - var/mob/living/carbon/human/M = user - var/datum/superheroes/S = all_superheroes[wish] - if(S) - S.create(M) - inuse=0 + to_chat(user, "You speak. [pick("I want the station to disappear", "Humanity is corrupt, mankind must be destroyed", "I want to be rich", "I want to rule the world", "I want immortality.")]. The Wish Granter answers.") + to_chat(user, "Your head pounds for a moment, before your vision clears. You are the avatar of the Wish Granter, and your power is LIMITLESS! And it's all yours. You need to make sure no one can take it from you. No one can know, first.") - //Remove the wishgranter or teleport it randomly on the station - if(!types.len) - to_chat(user, "The wishgranter slowly fades into mist...") - qdel(src) - return - else - var/impact_area = findEventArea() - var/turf/T = pick(get_area_turfs(impact_area)) - if(T) - src.loc = T - return \ No newline at end of file + charges-- + insisting = FALSE + + user.mind.add_antag_datum(/datum/antagonist/wishgranter) + + to_chat(user, "You have a very bad feeling about this.") \ No newline at end of file diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 5f3483d2ce4..a9d4b4008b6 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -74,7 +74,7 @@ /obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/patient_insertion_check(mob/living/carbon/target) if(target.buckled) - occupant_message("[target] will not fit into the sleeper because they are buckled to [target.buckled]!") + occupant_message("[target] will not fit into the sleeper because [target.p_they()] [target.p_are()] buckled to [target.buckled]!") return if(target.has_buckled_mobs()) occupant_message("[target] will not fit into the sleeper because of the creatures attached to it!") diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index bb666a63da1..ca43f87ae46 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -469,18 +469,11 @@ /obj/mecha/attack_hand(mob/living/user) user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) log_message("Attack by hand/paw. Attacker - [user].",1) - - if((HULK in user.mutations) && !prob(deflect_chance)) - take_damage(15) - check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST)) - user.visible_message("[user] hits [name], doing some damage.", - "You hit [name] with all your might. The metal creaks and bends.") - else - user.visible_message("[user] hits [name]. Nothing happens","You hit [name] with no visible effect.") - log_append_to_last("Armor saved.") - return + user.do_attack_animation(src, ATTACK_EFFECT_PUNCH) + playsound(loc, 'sound/weapons/tap.ogg', 40, 1, -1) + user.visible_message("[user] hits [name]. Nothing happens", "You hit [name] with no visible effect.") + log_append_to_last("Armor saved.") /obj/mecha/attack_alien(mob/living/user) @@ -524,6 +517,16 @@ user.create_attack_log("attacked [name]") return +/obj/mecha/hulk_damage() + return 15 + +/obj/mecha/attack_hulk(mob/living/carbon/human/user) + . = ..() + if(.) + check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL, MECHA_INT_TANK_BREACH, MECHA_INT_CONTROL_LOST)) + log_message("Attack by hulk. Attacker - [user].", 1) + add_attack_logs(user, src, "Punched with hulk powers") + /obj/mecha/hitby(atom/movable/A) //wrapper ..() log_message("Hit by [A].",1) @@ -1478,3 +1481,15 @@ if(occupant_sight_flags) if(user == occupant) user.sight |= occupant_sight_flags + +/obj/mecha/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect, end_pixel_y) + if(!no_effect) + if(selected) + used_item = selected + else if(!visual_effect_icon) + visual_effect_icon = ATTACK_EFFECT_SMASH + if(damtype == BURN) + visual_effect_icon = ATTACK_EFFECT_MECHFIRE + else if(damtype == TOX) + visual_effect_icon = ATTACK_EFFECT_MECHTOXIN + ..() \ No newline at end of file diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm index 6bcfb253454..301fd71a98d 100644 --- a/code/game/objects/effects/decals/misc.dm +++ b/code/game/objects/effects/decals/misc.dm @@ -1,12 +1,3 @@ -/obj/effect/decal/point - name = "arrow" - desc = "It's an arrow hanging in mid-air. There may be a wizard about." - icon = 'icons/mob/screen_gen.dmi' - icon_state = "arrow" - layer = 16.0 - anchored = 1 - mouse_opacity = 0 - // Used for spray that you spray at walls, tables, hydrovats etc /obj/effect/decal/spraystill density = 0 diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 17723adcde7..e765e59442d 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -163,13 +163,14 @@ // dense and opaque, but easy to break /obj/structure/foamedmetal - icon = 'icons/effects/effects.dmi' - icon_state = "metalfoam" - density = 1 - opacity = 1 // changed in New() - anchored = 1 name = "foamed metal" desc = "A lightweight foamed metal wall." + icon = 'icons/effects/effects.dmi' + icon_state = "metalfoam" + density = TRUE + opacity = TRUE // changed in New() + anchored = TRUE + max_integrity = 20 var/metal = MFOAM_ALUMINUM /obj/structure/foamedmetal/Initialize() @@ -177,7 +178,6 @@ air_update_turf(1) /obj/structure/foamedmetal/Destroy() - density = 0 air_update_turf(1) return ..() @@ -186,64 +186,31 @@ ..() move_update_air(T) +/obj/structure/foamedmetal/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + playsound(loc, 'sound/weapons/tap.ogg', 100, 1) + /obj/structure/foamedmetal/proc/updateicon() if(metal == MFOAM_ALUMINUM) icon_state = "metalfoam" + max_integrity = 20 + obj_integrity = max_integrity else icon_state = "ironfoam" - -/obj/structure/foamedmetal/ex_act(severity) - qdel(src) - -/obj/structure/foamedmetal/blob_act() - qdel(src) - -/obj/structure/foamedmetal/bullet_act() - if(metal==MFOAM_ALUMINUM || prob(50)) - qdel(src) + max_integrity = 50 + obj_integrity = max_integrity /obj/structure/foamedmetal/attack_hand(mob/user) user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - if((HULK in user.mutations) || (prob(75 - metal*25))) - user.visible_message("[user] smashes through \the [src].", "You smash through \the [src].") + user.do_attack_animation(src, ATTACK_EFFECT_PUNCH) + if(prob(75 - metal * 25)) + user.visible_message("[user] smashes through [src].", "You smash through [src].") qdel(src) else to_chat(user, "You hit the metal foam but bounce off it.") + playsound(loc, 'sound/weapons/tap.ogg', 100, 1) -/obj/structure/foamedmetal/attackby(obj/item/I, mob/user, params) - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - if(istype(I, /obj/item/grab)) - var/obj/item/grab/G = I - G.affecting.loc = src.loc - user.visible_message("[G.assailant] smashes [G.affecting] through the foamed metal wall.") - qdel(I) - qdel(src) - return - - if(prob(I.force*20 - metal*25)) - user.visible_message("[user] smashes through the foamed metal with \the [I].", "You smash through the foamed metal with \the [I].") - qdel(src) - else - to_chat(user, "You hit the metal foam to no effect.") - -/obj/structure/foamedmetal/attack_animal(mob/living/simple_animal/M) - M.do_attack_animation(src) - if(M.melee_damage_upper == 0) - M.visible_message("[M] nudges \the [src].") - else - if(M.attack_sound) - playsound(loc, M.attack_sound, 50, 1, 1) - M.visible_message("\The [M] [M.attacktext] [src]!") - qdel(src) - -/obj/structure/foamedmetal/attack_alien(mob/living/carbon/alien/humanoid/M) - M.visible_message("[M] tears apart \the [src]!"); - qdel(src) - -/obj/structure/foamedmetal/CanPass(atom/movable/mover, turf/target, height=1.5) +/obj/structure/foamedmetal/CanPass(atom/movable/mover, turf/target) return !density /obj/structure/foamedmetal/CanAtmosPass() - return !density + return !density \ No newline at end of file diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index 385067e0611..1df0166260e 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -263,13 +263,13 @@ var/more = "" if(M) more = " " - msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink])[contained]. Last associated key is [carry.my_atom.fingerprintslast][more].", 0, 1) + msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink])[contained]. Last associated key is [carry.my_atom.fingerprintslast][more].", ATKLOG_FEW) log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].") else - msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink]). No associated key.", 0, 1) + msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink]). No associated key.", ATKLOG_FEW) log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.") else - msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink]). No associated key. CODERS: carry.my_atom may be null.", 0, 1) + msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink]). No associated key. CODERS: carry.my_atom may be null.", ATKLOG_FEW) log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key. CODERS: carry.my_atom may be null.") /datum/effect_system/smoke_spread/chem/start(effect_range = 2) diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm index 467858ad670..0e8bd6691f2 100644 --- a/code/game/objects/effects/effects.dm +++ b/code/game/objects/effects/effects.dm @@ -11,4 +11,7 @@ return /obj/effect/fire_act() - return \ No newline at end of file + return + +/obj/effect/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + return FALSE \ No newline at end of file diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 02c04fbfbea..29abbef2d76 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -219,7 +219,7 @@ if(C) S.key = C.key if(S.master_commander) - to_chat(S, "You are a spider who is loyal to [S.master_commander], obey [S.master_commander]'s every order and assist them in completing their goals at any cost.") + to_chat(S, "You are a spider who is loyal to [S.master_commander], obey [S.master_commander]'s every order and assist [S.master_commander.p_them()] in completing [S.master_commander.p_their()] goals at any cost.") qdel(src) /obj/effect/decal/cleanable/spiderling_remains diff --git a/code/game/objects/effects/temporary_visuals/clockcult.dm b/code/game/objects/effects/temporary_visuals/clockcult.dm index 4a70c73c9c3..f6b654ccbbe 100644 --- a/code/game/objects/effects/temporary_visuals/clockcult.dm +++ b/code/game/objects/effects/temporary_visuals/clockcult.dm @@ -6,6 +6,10 @@ randomdir = 0 layer = ABOVE_NORMAL_TURF_LAYER +/obj/effect/temp_visual/ratvar/door/window + icon_state = "ratvarwindoorglow" + layer = ABOVE_WINDOW_LAYER + /obj/effect/temp_visual/ratvar/beam icon_state = "ratvarbeamglow" @@ -15,6 +19,13 @@ /obj/effect/temp_visual/ratvar/floor icon_state = "ratvarfloorglow" +/obj/effect/temp_visual/ratvar/window + icon_state = "ratvarwindowglow" + layer = ABOVE_OBJ_LAYER + +/obj/effect/temp_visual/ratvar/window/single + icon_state = "ratvarwindowglow_s" + /obj/effect/temp_visual/ratvar/grille icon_state = "ratvargrilleglow" layer = BELOW_OBJ_LAYER diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index 001c482a922..03e8ea8fcd9 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -1,3 +1,12 @@ +/obj/effect/temp_visual/point + name = "arrow" + desc = "It's an arrow hanging in mid-air. There may be a wizard about." + icon = 'icons/mob/screen_gen.dmi' + icon_state = "arrow" + layer = POINT_LAYER + duration = 20 + randomdir = FALSE + /obj/effect/temp_visual/dir_setting/bloodsplatter icon = 'icons/effects/blood.dmi' duration = 5 diff --git a/code/game/objects/empulse.dm b/code/game/objects/empulse.dm index ddf5b618bd5..2188337ba77 100644 --- a/code/game/objects/empulse.dm +++ b/code/game/objects/empulse.dm @@ -5,8 +5,8 @@ epicenter = get_turf(epicenter.loc) if(log) - message_admins("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ") - log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ") + message_admins("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] [ADMIN_COORDJMP(epicenter)]") + log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] [COORD(epicenter)]") if(heavy_range > 1) new/obj/effect/temp_visual/emp/pulse(epicenter) @@ -29,4 +29,4 @@ T.emp_act(2) else if(distance <= light_range) T.emp_act(2) - return 1 \ No newline at end of file + return 1 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index b2d0d6720c7..d83660e4de6 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -443,13 +443,14 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d playsound(loc, src.hitsound, 30, 1, -1) + user.do_attack_animation(M) + if(M != user) M.visible_message("[user] has stabbed [M] in the eye with [src]!", \ "[user] stabs you in the eye with [src]!") - user.do_attack_animation(M) else user.visible_message( \ - "[user] has stabbed themself in the eyes with [src]!", \ + "[user] has stabbed [user.p_them()]self in the eyes with [src]!", \ "You stab yourself in the eyes with [src]!" \ ) @@ -549,3 +550,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d /obj/item/proc/on_trip(mob/living/carbon/human/H) if(H.slip(src, trip_stun, trip_weaken, trip_tiles, trip_walksafe, trip_any, trip_verb)) return TRUE + +/obj/item/attack_hulk(mob/living/carbon/human/user) + return FALSE \ No newline at end of file diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 295b133d92e..b4dd66e3be5 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -22,7 +22,7 @@ var/list/validSurfaces = list(/turf/simulated/floor) /obj/item/toy/crayon/suicide_act(mob/user) - user.visible_message("[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide.") + user.visible_message("[user] is jamming the [name] up [user.p_their()] nose and into [user.p_their()] brain. It looks like [user.p_theyre()] trying to commit suicide.") return (BRUTELOSS|OXYLOSS) /obj/item/toy/crayon/New() diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index 154a2032825..737abd10bb1 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -83,8 +83,8 @@ if(href_list["wipe"]) var/confirm = alert("Are you sure you want to wipe this card's memory? This cannot be undone once started.", "Confirm Wipe", "Yes", "No") if(confirm == "Yes" && (CanUseTopic(user, state) == STATUS_INTERACTIVE)) - msg_admin_attack("[key_name_admin(user)] wiped [key_name_admin(AI)] with \the [src].") - log_attack(user, AI, "Wiped with [src].") + msg_admin_attack("[key_name_admin(user)] wiped [key_name_admin(AI)] with \the [src].", ATKLOG_FEW) + add_attack_logs(user, AI, "Wiped with [src].") flush = 1 AI.suiciding = 1 to_chat(AI, "Your core files are being wiped!") diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 0e2e3cc3785..5056c90793f 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -95,7 +95,7 @@ to_chat(M, "[user] blinds you with the flash!") if(M.weakeyes) M.Stun(2) - M.visible_message("[M] gasps and shields their eyes!", "You gasp and shields your eyes!") + M.visible_message("[M] gasps and shields [M.p_their()] eyes!", "You gasp and shields your eyes!") else visible_message("[user] fails to blind [M] with the flash!") to_chat(user, "You fail to blind [M] with the flash!") @@ -123,7 +123,7 @@ for(var/obj/item/borg/combat/shield/S in R.module.modules) if(R.activated(S)) add_attack_logs(user, M, "Flashed with [src]") - user.visible_message("[user] tries to overloads [M]'s sensors with the [src.name], but is blocked by [M]'s shield!", "You try to overload [M]'s sensors with the [src.name], but are blocked by their shield!") + user.visible_message("[user] tries to overloads [M]'s sensors with the [src.name], but is blocked by [M]'s shield!", "You try to overload [M]'s sensors with the [src.name], but are blocked by [M.p_their()] shield!") return 1 add_attack_logs(user, M, "Flashed with [src]") if(M.flash_eyes(affect_silicon = 1)) @@ -168,9 +168,9 @@ resisted = 1 if(resisted) - to_chat(user, "This mind seems resistant to the [src.name]!") + to_chat(user, "This mind seems resistant to the [name]!") else - to_chat(user, "They must be conscious before you can convert them!") + to_chat(user, "They must be conscious before you can convert [M.p_them()]!") else to_chat(user, "This mind is so vacant that it is not susceptible to influence!") diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index e7156cb6888..fb1956a56e9 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -61,10 +61,10 @@ if(M == user) //they're using it on themselves if(M.flash_eyes(visual = 1)) - M.visible_message("[M] directs [src] to \his eyes.", \ + M.visible_message("[M] directs [src] to [M.p_their()] eyes.", \ "You wave the light in front of your eyes! Trippy!") else - M.visible_message("[M] directs [src] to \his eyes.", \ + M.visible_message("[M] directs [src] to [M.p_their()] eyes.", \ "You wave the light in front of your eyes.") else diff --git a/code/game/objects/items/devices/instruments.dm b/code/game/objects/items/devices/instruments.dm index 3a0f2b6941d..639382ed03e 100644 --- a/code/game/objects/items/devices/instruments.dm +++ b/code/game/objects/items/devices/instruments.dm @@ -18,7 +18,7 @@ return ..() /obj/item/instrument/suicide_act(mob/user) - user.visible_message("[user] begins to play 'Gloomy Sunday'! It looks like \he's trying to commit suicide!") + user.visible_message("[user] begins to play 'Gloomy Sunday'! It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS) /obj/item/instrument/Initialize(mapload) diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 678d6837a8e..c8ab2e1fc4f 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -109,11 +109,11 @@ //20% chance to actually hit the eyes if(prob(effectchance * diode.rating) && C.flash_eyes(severity)) - outmsg = "You blind [C] by shining [src] in their eyes." + outmsg = "You blind [C] by shining [src] in [C.p_their()] eyes." if(C.weakeyes) C.Stun(1) else - outmsg = "You fail to blind [C] by shining [src] at their eyes!" + outmsg = "You fail to blind [C] by shining [src] at [C.p_their()] eyes!" //robots and AI else if(issilicon(target)) @@ -123,11 +123,11 @@ S.flash_eyes(affect_silicon = 1) S.Weaken(rand(5,10)) to_chat(S, "Your sensors were overloaded by a laser!") - outmsg = "You overload [S] by shining [src] at their sensors." + outmsg = "You overload [S] by shining [src] at [S.p_their()] sensors." add_attack_logs(user, S, "shone [src] in their eyes") else - outmsg = "You fail to overload [S] by shining [src] at their sensors." + outmsg = "You fail to overload [S] by shining [src] at [S.p_their()] sensors." //cameras else if(istype(target, /obj/machinery/camera)) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 2a8e155dd06..9912957c2bb 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -313,6 +313,9 @@ REAGENT SCANNER throw_range = 7 materials = list(MAT_METAL=30, MAT_GLASS=20) origin_tech = "magnets=1;engineering=1" + var/cooldown = FALSE + var/cooldown_time = 250 + var/accuracy // 0 is the best accuracy. /obj/item/analyzer/attack_self(mob/user as mob) @@ -366,6 +369,69 @@ REAGENT SCANNER src.add_fingerprint(user) return +/obj/item/analyzer/AltClick(mob/user) //Barometer output for measuring when the next storm happens + ..() + + if(!user.incapacitated() && Adjacent(user)) + + if(cooldown) + to_chat(user, "[src]'s barometer function is prepraring itself.") + return + + var/turf/T = get_turf(user) + if(!T) + return + + playsound(src, 'sound/effects/pop.ogg', 100) + var/area/user_area = T.loc + var/datum/weather/ongoing_weather = null + + if(!user_area.outdoors) + to_chat(user, "[src]'s barometer function won't work indoors!") + return + + for(var/V in SSweather.processing) + var/datum/weather/W = V + if(W.barometer_predictable && (T.z in W.impacted_z_levels) && W.area_type == user_area.type && !(W.stage == END_STAGE)) + ongoing_weather = W + break + + if(ongoing_weather) + if((ongoing_weather.stage == MAIN_STAGE) || (ongoing_weather.stage == WIND_DOWN_STAGE)) + to_chat(user, "[src]'s barometer function can't trace anything while the storm is [ongoing_weather.stage == MAIN_STAGE ? "already here!" : "winding down."]") + return + + to_chat(user, "The next [ongoing_weather] will hit in [butchertime(ongoing_weather.next_hit_time - world.time)].") + if(ongoing_weather.aesthetic) + to_chat(user, "[src]'s barometer function says that the next storm will breeze on by.") + else + var/next_hit = SSweather.next_hit_by_zlevel["[T.z]"] + var/fixed = next_hit ? next_hit - world.time : -1 + if(fixed < 0) + to_chat(user, "[src]'s barometer function was unable to trace any weather patterns.") + else + to_chat(user, "[src]'s barometer function says a storm will land in approximately [butchertime(fixed)].") + cooldown = TRUE + addtimer(CALLBACK(src,/obj/item/analyzer/proc/ping), cooldown_time) + +/obj/item/analyzer/proc/ping() + if(isliving(loc)) + var/mob/living/L = loc + to_chat(L, "[src]'s barometer function is ready!") + playsound(src, 'sound/machines/click.ogg', 100) + cooldown = FALSE + +/obj/item/analyzer/proc/butchertime(amount) + if(!amount) + return + if(accuracy) + var/inaccurate = round(accuracy * (1 / 3)) + if(prob(50)) + amount -= inaccurate + if(prob(50)) + amount += inaccurate + return DisplayTimeText(max(1, amount)) + /obj/item/mass_spectrometer desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample. Inject sample with syringe." name = "mass-spectrometer" diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index beed9fb75c3..dbd7701ce93 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -63,8 +63,8 @@ A.holder = src A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb). - bombers += "[key_name(user)] attached a [A] to a transfer valve." - msg_admin_attack("[key_name_admin(user)]attached [A] to a transfer valve.") + investigate_log("[key_name(user)] attached a [A] to a transfer valve.", INVESTIGATE_BOMB) + msg_admin_attack("[key_name_admin(user)]attached [A] to a transfer valve.", ATKLOG_FEW) log_game("[key_name_admin(user)] attached [A] to a transfer valve.") attacher = user SSnanoui.update_uis(src) // update all UIs attached to src @@ -204,7 +204,7 @@ var/mob/mob = get_mob_by_key(src.fingerprintslast) - bombers += "Bomb valve opened at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) with [attached_device ? attached_device : "no device"], attached by [attacher_name]. Last touched by: [key_name(mob)]" + investigate_log("Bomb valve opened at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) with [attached_device ? attached_device : "no device"], attached by [attacher_name]. Last touched by: [key_name(mob)]", INVESTIGATE_BOMB) message_admins("Bomb valve opened at [A.name] (JMP) with [attached_device ? attached_device : "no device"], attached by [attacher_name]. Last touched by: [key_name_admin(mob)]") log_game("Bomb valve opened at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) with [attached_device ? attached_device : "no device"], attached by [attacher_name]. Last touched by: [key_name(mob)]") merge_gases() diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm index 2d40c1e683c..cc3320489f6 100644 --- a/code/game/objects/items/devices/uplinks.dm +++ b/code/game/objects/items/devices/uplinks.dm @@ -54,7 +54,7 @@ var/list/world_uplinks = list() dat += "Telecrystals left: [src.uses]
" dat += "
" dat += "Request item:
" - dat += "Each item costs a number of telecrystals as indicated by the number following their name.
" + dat += "Each item costs a number of telecrystals as indicated by the number following its name.
" var/category_items = 1 for(var/category in ItemsCategory) diff --git a/code/game/objects/items/policetape.dm b/code/game/objects/items/policetape.dm deleted file mode 100644 index f9769a64e23..00000000000 --- a/code/game/objects/items/policetape.dm +++ /dev/null @@ -1,203 +0,0 @@ -//Define all tape types in policetape.dm -/obj/item/taperoll - name = "tape roll" - icon = 'icons/policetape.dmi' - icon_state = "rollstart" - w_class = WEIGHT_CLASS_TINY - var/turf/start - var/turf/end - var/tape_type = /obj/item/tape - var/icon_base - -var/list/image/hazard_overlays -var/list/tape_roll_applications = list() - -/obj/item/tape - name = "tape" - icon = 'icons/policetape.dmi' - anchored = 1 - density = 1 - var/icon_base - -/obj/item/tape/New() - ..() - if(!hazard_overlays) - hazard_overlays = list() - hazard_overlays["[NORTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "N") - hazard_overlays["[EAST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "E") - hazard_overlays["[SOUTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "S") - hazard_overlays["[WEST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "W") - -/obj/item/taperoll/New() //just using tape is not enough to guarantee the overlays are genned - ..() - if(!hazard_overlays) - hazard_overlays = list() - hazard_overlays["[NORTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "N") - hazard_overlays["[EAST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "E") - hazard_overlays["[SOUTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "S") - hazard_overlays["[WEST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "W") - -/obj/item/taperoll/police - name = "police tape" - desc = "A roll of police tape used to block off crime scenes from the public." - icon_state = "police_start" - tape_type = /obj/item/tape/police - icon_base = "police" - -/obj/item/tape/police - name = "police tape" - desc = "A length of police tape. Do not cross." - req_one_access = list(access_security,access_forensics_lockers) - icon_base = "police" - -/obj/item/taperoll/engineering - name = "engineering tape" - desc = "A roll of engineering tape used to block off working areas from the public." - icon_state = "engineering_start" - tape_type = /obj/item/tape/engineering - icon_base = "engineering" - -/obj/item/tape/engineering - name = "engineering tape" - desc = "A length of engineering tape. Better not cross it." - req_one_access = list(access_engine,access_atmospherics) - icon_base = "engineering" - -/obj/item/taperoll/attack_self(mob/user as mob) - if(icon_state == "[icon_base]_start") - start = get_turf(src) - to_chat(usr, "You place the first end of the [src].") - icon_state = "[icon_base]_stop" - else - icon_state = "[icon_base]_start" - end = get_turf(src) - if(start.y != end.y && start.x != end.x || start.z != end.z) - to_chat(usr, "[src] can only be laid horizontally or vertically.") - return - - var/turf/cur = start - var/dir - if(start.x == end.x) - var/d = end.y-start.y - if(d) d = d/abs(d) - end = get_turf(locate(end.x,end.y+d,end.z)) - dir = "v" - else - var/d = end.x-start.x - if(d) d = d/abs(d) - end = get_turf(locate(end.x+d,end.y,end.z)) - dir = "h" - - var/can_place = 1 - while(cur!=end && can_place) - if(cur.density == 1) - can_place = 0 - else if(istype(cur, /turf/space)) - can_place = 0 - else - for(var/obj/O in cur) - if(!istype(O, /obj/item/tape) && O.density) - can_place = 0 - break - cur = get_step_towards(cur,end) - if(!can_place) - to_chat(usr, "You can't run \the [src] through that!") - return - - cur = start - var/tapetest = 0 - while(cur!=end) - for(var/obj/item/tape/Ptest in cur) - if(Ptest.icon_state == "[Ptest.icon_base]_[dir]") - tapetest = 1 - if(tapetest != 1) - var/obj/item/tape/P = new tape_type(cur) - P.icon_state = "[P.icon_base]_[dir]" - cur = get_step_towards(cur,end) - //is_blocked_turf(var/turf/T) - to_chat(usr, "You finish placing the [src].")//Git Test - - -/obj/item/taperoll/afterattack(var/atom/A, mob/user as mob, proximity) - if(!proximity) - return - - if(istype(A, /obj/machinery/door/airlock)) - var/turf/T = get_turf(A) - var/obj/item/tape/P = new tape_type(T.x,T.y,T.z) - P.loc = locate(T.x,T.y,T.z) - P.icon_state = "[src.icon_base]_door" - P.layer = 3.2 - to_chat(user, "You finish placing the [src].") - - if(istype(A, /turf/simulated/floor) ||istype(A, /turf/unsimulated/floor)) - var/turf/F = A - var/direction = user.loc == F ? user.dir : turn(user.dir, 180) - var/icon/hazard_overlay = hazard_overlays["[direction]"] - if(tape_roll_applications[F] == null) - tape_roll_applications[F] = 0 - - if(tape_roll_applications[F] & direction) // hazard_overlay in F.overlays wouldn't work. - user.visible_message("[user] uses the adhesive of \the [src] to remove area markings from \the [F].", "You use the adhesive of \the [src] to remove area markings from \the [F].") - F.overlays -= hazard_overlay - tape_roll_applications[F] &= ~direction - else - user.visible_message("[user] applied \the [src] on \the [F] to create area markings.", "You apply \the [src] on \the [F] to create area markings.") - F.overlays |= hazard_overlay - tape_roll_applications[F] |= direction - return - -/obj/item/tape/CanPass(atom/movable/mover, turf/target, height=0) - if(!density) return 1 - if(height==0) return 1 - - if((mover.pass_flags & PASSTABLE || istype(mover, /obj/effect/meteor) || mover.throwing)) - return 1 - else if(ismob(mover) && allowed(mover)) - return 1 - else - return 0 - -/obj/item/tape/attackby(obj/item/W as obj, mob/user as mob, params) - breaktape(W, user) - -/obj/item/tape/attack_hand(mob/user as mob) - if(user.a_intent == INTENT_HELP && src.allowed(user)) - user.visible_message("[user] lifts [src], allowing passage.", "You lift [src], allowing passage.") - src.density = 0 - spawn(200) - src.density = 1 - else - breaktape(/obj/item/soap, user)//cant be null, and can't be sharp. - -/obj/item/tape/attack_alien(mob/user as mob) - breaktape(/obj/item/wirecutters,user) - -/obj/item/tape/proc/breaktape(obj/item/W as obj, mob/user as mob) - if(user.a_intent == INTENT_HELP && ((!is_pointed(W) && src.allowed(user)))) - to_chat(user, "You can't break the [src] with that!") - return - user.visible_message("[user] breaks the [src]!", "You break the [src]!") - - var/dir[2] - var/icon_dir = src.icon_state - if(icon_dir == "[src.icon_base]_h") - dir[1] = EAST - dir[2] = WEST - if(icon_dir == "[src.icon_base]_v") - dir[1] = NORTH - dir[2] = SOUTH - - for(var/i=1;i<3;i++) - var/N = 0 - var/turf/cur = get_step(src,dir[i]) - while(N != 1) - N = 1 - for(var/obj/item/tape/P in cur) - if(P.icon_state == icon_dir) - N = 0 - qdel(P) - cur = get_step(cur,dir[i]) - - qdel(src) - return diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 3ffdfaaf751..2ae1a2d6e00 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -211,7 +211,7 @@ to_chat(user, "You remove the splint from [H]'s [limb].") return if(M == user) - user.visible_message("[user] starts to apply [src] to their [limb].", \ + user.visible_message("[user] starts to apply [src] to [user.p_their()] [limb].", \ "You start to apply [src] to your [limb].", \ "You hear something being wrapped.") if(!do_mob(user, H, self_delay)) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index a30c3e1b716..ebc89cdca7a 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -13,6 +13,15 @@ /* * Glass sheets */ + +GLOBAL_LIST_INIT(glass_recipes, list ( \ + new/datum/stack_recipe/window("directional window", /obj/structure/window/basic, time = 0, on_floor = TRUE, window_checks = TRUE), \ + new/datum/stack_recipe/window("fulltile window", /obj/structure/window/full/basic, 2, time = 0, on_floor = TRUE, window_checks = TRUE), \ + new/datum/stack_recipe("fishbowl", /obj/machinery/fishtank/bowl, 1, time = 0), \ + new/datum/stack_recipe("fish tank", /obj/machinery/fishtank/tank, 3, time = 0, on_floor = TRUE), \ + new/datum/stack_recipe("wall aquariam", /obj/machinery/fishtank/wall, 4, time = 0, on_floor = TRUE) \ +)) + /obj/item/stack/sheet/glass name = "glass" desc = "HOLY SHEET! That is a lot of glass." @@ -30,8 +39,9 @@ /obj/item/stack/sheet/glass/cyborg materials = list() -/obj/item/stack/sheet/glass/attack_self(mob/user as mob) - construct_window(user) +/obj/item/stack/sheet/glass/New(loc, amount) + recipes = GLOB.glass_recipes + ..() /obj/item/stack/sheet/glass/attackby(obj/item/W, mob/user, params) ..() @@ -59,94 +69,18 @@ else return ..() -/obj/item/stack/sheet/glass/proc/construct_window(mob/user as mob) - if(!user || !src) return 0 - if(!istype(user.loc,/turf)) return 0 - if(!user.IsAdvancedToolUser()) - to_chat(user, "You don't have the dexterity to do this!") - return 0 - var/title = "Sheet-Glass" - title += " ([src.amount] sheet\s left)" - switch(input(title, "What would you like to construct?") in list("One Direction Window", "Full Window", "Fishbowl", "Fish Tank", "Wall Aquarium", "Cancel")) - if("One Direction Window") - if(!src) return 1 - if(src.loc != user) return 1 - - var/list/directions = new/list(cardinal) - var/i = 0 - for(var/obj/structure/window/win in user.loc) - i++ - if(i >= 4) - to_chat(user, "There are too many windows in this location.") - return 1 - directions-=win.dir - if(win.is_fulltile()) - to_chat(user, "Can't let you do that.") - return 1 - - //Determine the direction. It will first check in the direction the person making the window is facing, if it finds an already made window it will try looking at the next cardinal direction, etc. - var/dir_to_set = 2 - for(var/direction in list( user.dir, turn(user.dir,90), turn(user.dir,180), turn(user.dir,270) )) - var/found = 0 - for(var/obj/structure/window/WT in user.loc) - if(WT.dir == direction) - found = 1 - if(!found) - dir_to_set = direction - break - - var/obj/structure/window/W - W = new /obj/structure/window/basic( user.loc, 0 ) - W.dir = dir_to_set - W.ini_dir = W.dir - W.state = 0 - W.anchored = 0 - W.air_update_turf(1) - src.use(1) - if("Full Window") - if(!src) return 1 - if(src.loc != user) return 1 - if(src.amount < 2) - to_chat(user, "You need more glass to do that.") - return 1 - if(locate(/obj/structure/window/full) in user.loc) - to_chat(user, "There is a full window in the way.") - return 1 - var/obj/structure/window/W = new full_window( user.loc, 0 ) - W.state = 0 - W.anchored = 0 - W.air_update_turf(1) - src.use(2) - if("Fishbowl") - if(!src) return 1 - if(src.loc != user) return 1 - var/obj/machinery/fishtank/F = new /obj/machinery/fishtank/bowl(user.loc, 0) - F.air_update_turf(1) - src.use(1) - if("Fish Tank") - if(!src) return 1 - if(src.loc != user) return 1 - if(src.amount < 3) - to_chat(user, "You need more glass to do that.") - return 1 - var/obj/machinery/fishtank/F = new /obj/machinery/fishtank/tank(user.loc, 0) - F.air_update_turf(1) - src.use(3) - if("Wall Aquarium") - if(!src) return 1 - if(src.loc != user) return 1 - if(src.amount < 4) - to_chat(user, "You need more glass to do that.") - return 1 - var/obj/machinery/fishtank/F = new /obj/machinery/fishtank/wall(user.loc, 0) - F.air_update_turf(1) - src.use(4) - return 0 - /* * Reinforced glass sheets */ + +GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \ + new/datum/stack_recipe/window("windoor frame", /obj/structure/windoor_assembly, 5, time = 0, on_floor = TRUE, window_checks = TRUE), \ + null, \ + new/datum/stack_recipe/window("directional reinforced window", /obj/structure/window/reinforced, time = 0, on_floor = TRUE, window_checks = TRUE), \ + new/datum/stack_recipe/window("fulltile reinforced window", /obj/structure/window/full/reinforced, 2, time = 0, on_floor = TRUE, window_checks = TRUE) \ +)) + /obj/item/stack/sheet/rglass name = "reinforced glass" desc = "Glass which seems to have rods or something stuck in them." @@ -161,105 +95,14 @@ /obj/item/stack/sheet/rglass/cyborg materials = list() -/obj/item/stack/sheet/rglass/attack_self(mob/user as mob) - construct_window(user) - -/obj/item/stack/sheet/rglass/proc/construct_window(mob/user as mob) - if(!user || !src) return 0 - if(!istype(user.loc,/turf)) return 0 - if(!user.IsAdvancedToolUser()) - to_chat(user, "You don't have the dexterity to do this!") - return 0 - var/title = "Sheet Reinf. Glass" - title += " ([src.amount] sheet\s left)" - switch(input(title, "Would you like full tile glass a one direction glass pane or a windoor?") in list("One Direction", "Full Window", "Windoor", "Cancel")) - if("One Direction") - if(!src) return 1 - if(src.loc != user) return 1 - var/list/directions = new/list(cardinal) - var/i = 0 - for(var/obj/structure/window/win in user.loc) - i++ - if(i >= 4) - to_chat(user, "There are too many windows in this location.") - return 1 - directions-=win.dir - if(win.is_fulltile()) - to_chat(user, "Can't let you do that.") - return 1 - - //Determine the direction. It will first check in the direction the person making the window is facing, if it finds an already made window it will try looking at the next cardinal direction, etc. - var/dir_to_set = 2 - for(var/direction in list( user.dir, turn(user.dir,90), turn(user.dir,180), turn(user.dir,270) )) - var/found = 0 - for(var/obj/structure/window/WT in user.loc) - if(WT.dir == direction) - found = 1 - if(!found) - dir_to_set = direction - break - - var/obj/structure/window/W - W = new /obj/structure/window/reinforced( user.loc, 1 ) - W.state = 0 - W.dir = dir_to_set - W.ini_dir = W.dir - W.anchored = 0 - src.use(1) - - if("Full Window") - if(!src) return 1 - if(src.loc != user) return 1 - if(src.amount < 2) - to_chat(user, "You need more glass to do that.") - return 1 - if(locate(/obj/structure/window/full) in user.loc) - to_chat(user, "There is a window in the way.") - return 1 - var/obj/structure/window/W = new full_window( user.loc, 0 ) - W.state = 0 - W.anchored = 0 - src.use(2) - - if("Windoor") - if(!src || src.loc != user) return 1 - - if(isturf(user.loc) && locate(/obj/structure/windoor_assembly/, user.loc)) - to_chat(user, "There is already a windoor assembly in that location.") - return 1 - - if(isturf(user.loc) && locate(/obj/machinery/door/window/, user.loc)) - to_chat(user, "There is already a windoor in that location.") - return 1 - - if(src.amount < 5) - to_chat(user, "You need more glass to do that.") - return 1 - - var/obj/structure/windoor_assembly/WD - WD = new /obj/structure/windoor_assembly(user.loc) - WD.state = "01" - WD.anchored = 0 - src.use(5) - switch(user.dir) - if(SOUTH) - WD.dir = SOUTH - WD.ini_dir = SOUTH - if(EAST) - WD.dir = EAST - WD.ini_dir = EAST - if(WEST) - WD.dir = WEST - WD.ini_dir = WEST - else//If the user is facing northeast. northwest, southeast, southwest or north, default to north - WD.dir = NORTH - WD.ini_dir = NORTH - else - return 1 - - - return 0 +/obj/item/stack/sheet/rglass/New(loc, amount) + recipes = GLOB.reinforced_glass_recipes + ..() +GLOBAL_LIST_INIT(pglass_recipes, list ( \ + new/datum/stack_recipe/window("directional window", /obj/structure/window/plasmabasic, time = 0, on_floor = TRUE, window_checks = TRUE), \ + new/datum/stack_recipe/window("fulltile window", /obj/structure/window/full/plasmabasic, 2, time = 0, on_floor = TRUE, window_checks = TRUE) \ +)) /obj/item/stack/sheet/plasmaglass name = "plasma glass" @@ -271,8 +114,9 @@ created_window = /obj/structure/window/plasmabasic full_window = /obj/structure/window/full/plasmabasic -/obj/item/stack/sheet/plasmaglass/attack_self(mob/user as mob) - construct_window(user) +/obj/item/stack/sheet/plasmaglass/New(loc, amount) + recipes = GLOB.pglass_recipes + ..() /obj/item/stack/sheet/plasmaglass/attackby(obj/item/W, mob/user, params) ..() @@ -291,64 +135,15 @@ else return ..() -/obj/item/stack/sheet/plasmaglass/proc/construct_window(mob/user as mob) - if(!user || !src) return 0 - if(!istype(user.loc,/turf)) return 0 - if(!user.IsAdvancedToolUser()) - to_chat(user, " You don't have the dexterity to do this!") - return 0 - var/title = "Plasma-glass alloy" - title += " ([src.amount] sheet\s left)" - switch(alert(title, "Would you like full tile glass or one direction?", "One Direction", "Full Window", "Cancel", null)) - if("One Direction") - if(!src) return 1 - if(src.loc != user) return 1 - var/list/directions = new/list(cardinal) - var/i = 0 - for(var/obj/structure/window/win in user.loc) - i++ - if(i >= 4) - to_chat(user, "There are too many windows in this location.") - return 1 - directions-=win.dir - if(!(win.ini_dir in cardinal)) - to_chat(user, "Can't let you do that.") - return 1 - //Determine the direction. It will first check in the direction the person making the window is facing, if it finds an already made window it will try looking at the next cardinal direction, etc. - var/dir_to_set = 2 - for(var/direction in list( user.dir, turn(user.dir,90), turn(user.dir,180), turn(user.dir,270) )) - var/found = 0 - for(var/obj/structure/window/WT in user.loc) - if(WT.dir == direction) - found = 1 - if(!found) - dir_to_set = direction - break - var/obj/structure/window/W - W = new /obj/structure/window/plasmabasic( user.loc, 0 ) - W.dir = dir_to_set - W.ini_dir = W.dir - W.state = 0 - W.anchored = 0 - src.use(1) - if("Full Window") - if(!src) return 1 - if(src.loc != user) return 1 - if(src.amount < 2) - to_chat(user, "You need more glass to do that.") - return 1 - if(locate(/obj/structure/window) in user.loc) - to_chat(user, "There is a window in the way.") - return 1 - var/obj/structure/window/W = new full_window( user.loc, 0 ) - W.state = 0 - W.anchored = 0 - src.use(2) - return 0 - /* * Reinforced plasma glass sheets */ + +GLOBAL_LIST_INIT(prglass_recipes, list ( \ + new/datum/stack_recipe/window("directional reinforced window", /obj/structure/window/plasmareinforced, time = 0, on_floor = TRUE, window_checks = TRUE), \ + new/datum/stack_recipe/window("fulltile reinforced window", /obj/structure/window/full/plasmareinforced, 2, time = 0, on_floor = TRUE, window_checks = TRUE) \ +)) + /obj/item/stack/sheet/plasmarglass name = "reinforced plasma glass" desc = "Plasma glass which seems to have rods or something stuck in them." @@ -360,60 +155,42 @@ full_window = /obj/structure/window/full/plasmareinforced armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0) -/obj/item/stack/sheet/plasmarglass/attack_self(mob/user as mob) - construct_window(user) +/obj/item/stack/sheet/plasmarglass/New(loc, amount) + recipes = GLOB.prglass_recipes + ..() -/obj/item/stack/sheet/plasmarglass/proc/construct_window(mob/user as mob) - if(!user || !src) return 0 - if(!istype(user.loc,/turf)) return 0 - if(!user.IsAdvancedToolUser()) - to_chat(user, "You don't have the dexterity to do this!") - return 0 - var/title = "Reinforced plasma-glass alloy" - title += " ([src.amount] sheet\s left)" - switch(alert(title, "Would you like full tile glass or one direction?", "One Direction", "Full Window", "Cancel", null)) - if("One Direction") - if(!src) return 1 - if(src.loc != user) return 1 - var/list/directions = new/list(cardinal) - var/i = 0 - for(var/obj/structure/window/win in user.loc) - i++ - if(i >= 4) - to_chat(user, "There are too many windows in this location.") - return 1 - directions-=win.dir - if(!(win.ini_dir in cardinal)) - to_chat(user, "Can't let you do that.") - return 1 - //Determine the direction. It will first check in the direction the person making the window is facing, if it finds an already made window it will try looking at the next cardinal direction, etc. - var/dir_to_set = 2 - for(var/direction in list( user.dir, turn(user.dir,90), turn(user.dir,180), turn(user.dir,270) )) - var/found = 0 - for(var/obj/structure/window/WT in user.loc) - if(WT.dir == direction) - found = 1 - if(!found) - dir_to_set = direction - break - var/obj/structure/window/W - W = new /obj/structure/window/plasmareinforced( user.loc, 0 ) - W.dir = dir_to_set - W.ini_dir = W.dir - W.state = 0 - W.anchored = 0 - src.use(1) - if("Full Window") - if(!src) return 1 - if(src.loc != user) return 1 - if(src.amount < 2) - to_chat(user, "You need more glass to do that.") - return 1 - if(locate(/obj/structure/window) in user.loc) - to_chat(user, "There is a window in the way.") - return 1 - var/obj/structure/window/W = new full_window( user.loc, 0 ) - W.state = 0 - W.anchored = 0 - src.use(2) - return 0 +GLOBAL_LIST_INIT(titaniumglass_recipes, list( + new/datum/stack_recipe/window("shuttle window", /obj/structure/window/full/shuttle, 2, time = 0, on_floor = TRUE, window_checks = TRUE) + )) + +/obj/item/stack/sheet/titaniumglass + name = "titanium glass" + desc = "A glass sheet made out of a titanium-silicate alloy." + singular_name = "titanium glass sheet" + icon_state = "sheet-titaniumglass" + item_state = "sheet-titaniumglass" + materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) + merge_type = /obj/item/stack/sheet/titaniumglass + full_window = /obj/structure/window/full/shuttle + +/obj/item/stack/sheet/titaniumglass/New(loc, amount) + recipes = GLOB.titaniumglass_recipes + ..() + +GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( + new/datum/stack_recipe/window("plastitanium window", /obj/structure/window/plastitanium, 2, time = 0, on_floor = TRUE, window_checks = TRUE) + )) + +/obj/item/stack/sheet/plastitaniumglass + name = "plastitanium glass" + desc = "A glass sheet made out of a plasma-titanium-silicate alloy." + singular_name = "plastitanium glass sheet" + icon_state = "sheet-plastitaniumglass" + item_state = "sheet-plastitaniumglass" + materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT, MAT_PLASMA=MINERAL_MATERIAL_AMOUNT, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) + merge_type = /obj/item/stack/sheet/plastitaniumglass + full_window = /obj/structure/window/plastitanium + +/obj/item/stack/sheet/plastitaniumglass/New(loc, amount) + recipes = GLOB.plastitaniumglass_recipes + ..() diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 4412b547b19..5ef40ee25e8 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -318,7 +318,11 @@ var/global/list/datum/stack_recipe/cult = list ( \ /* * Brass */ -var/global/list/datum/stack_recipe/brass_recipes = list ( \ +var/global/list/datum/stack_recipe/brass_recipes = list (\ + new/datum/stack_recipe/window("brass windoor", /obj/machinery/door/window/clockwork, 2, time = 30, on_floor = TRUE, window_checks = TRUE), \ + null, + new/datum/stack_recipe/window("directional brass window", /obj/structure/window/reinforced/clockwork, time = 0, on_floor = TRUE, window_checks = TRUE), \ + new/datum/stack_recipe/window("fulltile brass window", /obj/structure/window/reinforced/clockwork/fulltile, 2, time = 0, on_floor = TRUE, window_checks = TRUE), \ new/datum/stack_recipe("brass table frame", /obj/structure/table_frame/brass, 1, time = 5, one_per_turf = TRUE, on_floor = TRUE), \ ) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 4dd6ca365bf..e55569b23e8 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -149,6 +149,10 @@ to_chat(usr, "You haven't got enough [src] to build \the [R.title]!") return 0 + if(R.window_checks && !valid_window_location(usr.loc, usr.dir)) + to_chat(usr, "The [R.title] won't fit here!") + return FALSE + if(R.one_per_turf && (locate(R.result_type) in creation_loc)) to_chat(usr, "There is another [R.title] here!") return 0 @@ -166,7 +170,7 @@ return var/atom/O = new R.result_type(creation_loc) - O.dir = usr.dir + O.setDir(usr.dir) if(R.max_res_amount > 1) var/obj/item/stack/new_item = O new_item.amount = R.res_amount * multiplier diff --git a/code/game/objects/items/stacks/stack_recipe.dm b/code/game/objects/items/stacks/stack_recipe.dm index 67ddd964d0d..10d06e9741d 100644 --- a/code/game/objects/items/stacks/stack_recipe.dm +++ b/code/game/objects/items/stacks/stack_recipe.dm @@ -11,8 +11,9 @@ var/time = 0 var/one_per_turf = 0 var/on_floor = 0 + var/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 = 0, on_floor = 0) +/datum/stack_recipe/New(title, result_type, req_amount = 1, res_amount = 1, max_res_amount = 1, time = 0, one_per_turf = 0, on_floor = 0, window_checks = FALSE) src.title = title src.result_type = result_type src.req_amount = req_amount @@ -21,6 +22,7 @@ src.time = time src.one_per_turf = one_per_turf src.on_floor = on_floor + src.window_checks = window_checks /datum/stack_recipe/proc/post_build(var/obj/item/stack/S, var/obj/result) return @@ -40,6 +42,17 @@ R.update_icon() ..() +/datum/stack_recipe/window +/datum/stack_recipe/window/post_build(obj/item/stack/S, obj/result) + if(istype(result, /obj/structure/windoor_assembly)) + var/obj/structure/windoor_assembly/W = result + W.ini_dir = W.dir + else if(istype(result, /obj/structure/window)) + var/obj/structure/window/W = result + W.ini_dir = W.dir + W.anchored = FALSE + W.state = WINDOW_OUT_OF_FRAME + /* * Recipe list datum */ diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index b321721b639..5e8577d756a 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -229,8 +229,8 @@ hitsound = 'sound/weapons/bladeslice.ogg' /obj/item/toy/katana/suicide_act(mob/user) - var/dmsg = pick("[user] tries to stab \the [src] into their abdomen, but it shatters! They look as if they might die from the shame.","[user] tries to stab \the [src] into their abdomen, but \the [src] bends and breaks in half! They look as if they might die from the shame.","[user] tries to slice their own throat, but the plastic blade has no sharpness, causing them to lose their balance, slip over, and break their neck with a loud snap!") - user.visible_message("[dmsg] It looks like they are trying to commit suicide.") + var/dmsg = pick("[user] tries to stab \the [src] into [user.p_their()] abdomen, but it shatters! [user.p_they(TRUE)] look[user.p_s()] as if [user.p_they()] might die from the shame.","[user] tries to stab \the [src] into [user.p_their()] abdomen, but \the [src] bends and breaks in half! [user.p_they(TRUE)] look[user.p_s()] as if [user.p_they()] might die from the shame.","[user] tries to slice [user.p_their()] own throat, but the plastic blade has no sharpness, causing [user.p_them()] to lose [user.p_their()] balance, slip over, and break [user.p_their()] neck with a loud snap!") + user.visible_message("[dmsg] It looks like [user.p_theyre()] trying to commit suicide.") return (BRUTELOSS) @@ -531,7 +531,7 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user, to_chat(user, "The hand of cards is stuck to your hand, you can't add it to the deck!") return cards += C.currenthand - user.visible_message("[user] puts their hand of cards in the deck.", "You put the hand of cards in the deck.") + user.visible_message("[user] puts [user.p_their()] hand of cards in the deck.", "You put the hand of cards in the deck.") qdel(C) else to_chat(user, "You can't mix cards from other decks.") @@ -610,7 +610,7 @@ obj/item/toy/cards/cardhand/Topic(href, href_list) C.apply_card_vars(C,O) C.pickup(cardUser) cardUser.put_in_any_hand_if_possible(C) - cardUser.visible_message("[cardUser] draws a card from \his hand.", "You take the [C.cardname] from your hand.") + cardUser.visible_message("[cardUser] draws a card from [cardUser.p_their()] hand.", "You take the [C.cardname] from your hand.") interact(cardUser) if(currenthand.len < 3) @@ -637,7 +637,7 @@ obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living if(C.parentdeck == parentdeck) currenthand += C.cardname user.unEquip(C) - user.visible_message("[user] adds a card to their hand.", "You add the [C.cardname] to your hand.") + user.visible_message("[user] adds a card to [user.p_their()] hand.", "You add the [C.cardname] to your hand.") interact(user) if(currenthand.len > 4) icon_state = "[deckstyle]_hand5" @@ -677,7 +677,7 @@ obj/item/toy/cards/singlecard/examine(mob/user) if(ishuman(user)) var/mob/living/carbon/human/cardUser = user if(cardUser.get_item_by_slot(slot_l_hand) == src || cardUser.get_item_by_slot(slot_r_hand) == src) - cardUser.visible_message("[cardUser] checks \his card.", "The card reads: [src.cardname]") + cardUser.visible_message("[cardUser] checks [cardUser.p_their()] card.", "The card reads: [src.cardname]") else to_chat(cardUser, "You need to have the card in your hand to check it.") @@ -726,7 +726,7 @@ obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params) if(H.parentdeck == parentdeck) H.currenthand += cardname user.unEquip(src) - user.visible_message("[user] adds a card to \his hand.", "You add the [cardname] to your hand.") + user.visible_message("[user] adds a card to [user.p_their()] hand.", "You add the [cardname] to your hand.") H.interact(user) if(H.currenthand.len > 4) H.icon_state = "[deckstyle]_hand5" @@ -1367,7 +1367,7 @@ obj/item/toy/cards/deck/syndicate/black var/bullet_position = 1 /obj/item/toy/russian_revolver/suicide_act(mob/user) - user.visible_message("[user] quickly loads six bullets into [src]'s cylinder and points it at \his head before pulling the trigger! It looks like they are trying to commit suicide.") + user.visible_message("[user] quickly loads six bullets into [src]'s cylinder and points it at [user.p_their()] head before pulling the trigger! It looks like [user.p_theyre()] trying to commit suicide.") playsound(loc, 'sound/weapons/Gunshot.ogg', 50, 1) return (BRUTELOSS) @@ -1393,7 +1393,7 @@ obj/item/toy/cards/deck/syndicate/black if(!(user.has_organ("head"))) //For sanity to_chat(user, "Playing this game without a head would be classed as cheating.") return - user.visible_message("[user] points [src] at their head, ready to pull the trigger!") + user.visible_message("[user] points [src] at [user.p_their()] head, ready to pull the trigger!") if(do_after(user, 30, target = user)) if(bullet_position > 1) user.visible_message("*click*") @@ -1407,7 +1407,7 @@ obj/item/toy/cards/deck/syndicate/black user.apply_damage(200, BRUTE, "head", sharp = 1, used_weapon = "Self-inflicted gunshot wound to the head.") user.death() else - user.visible_message("[user] lowers [src] from their head.") + user.visible_message("[user] lowers [src] from [user.p_their()] head.") /obj/item/toy/russian_revolver/proc/spin_cylinder() bullet_position = rand(1,6) @@ -1662,7 +1662,7 @@ obj/item/toy/cards/deck/syndicate/black /obj/item/toy/eight_ball/attack_self(mob/user as mob) if(!cooldown) var/answer = pick(possible_answers) - user.visible_message("[user] focuses on their question and [use_action]...") + user.visible_message("[user] focuses on [user.p_their()] question and [use_action]...") user.visible_message("[bicon(src)] The [src] says \"[answer]\"") spawn(30) cooldown = 0 diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index fe132c107b0..5cc7ee684af 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -9,10 +9,10 @@ RCD icon_state = "rcd" opacity = 0 density = 0 - anchored = 0.0 - flags = CONDUCT - force = 10.0 - throwforce = 10.0 + anchored = 0 + flags = CONDUCT | NOBLUDGEON + force = 0 + throwforce = 10 throw_speed = 3 throw_range = 5 w_class = WEIGHT_CLASS_NORMAL @@ -296,8 +296,6 @@ RCD var/turf/T1 = get_turf(A) QDEL_NULL(A) for(var/obj/structure/window/W in T1.contents) - W.disassembled = 1 - W.density = 0 qdel(W) for(var/cdir in cardinal) var/turf/T2 = get_step(T1, cdir) @@ -307,8 +305,6 @@ RCD continue for(var/obj/structure/window/W in T2.contents) if(W.dir == turn(cdir, 180)) - W.disassembled = 1 - W.density = 0 qdel(W) var/obj/structure/window/reinforced/W = new(T2) W.dir = turn(cdir, 180) @@ -331,16 +327,12 @@ RCD activate() new /obj/structure/grille(A) for(var/obj/structure/window/W in contents) - W.disassembled = 1 // Prevent that annoying glass breaking sound - W.density = 0 qdel(W) for(var/cdir in cardinal) var/turf/T = get_step(A, cdir) if(locate(/obj/structure/grille) in T.contents) for(var/obj/structure/window/W in T.contents) if(W.dir == turn(cdir, 180)) - W.disassembled = 1 - W.density = 0 qdel(W) else // Build a window! var/obj/structure/window/reinforced/W = new(A) diff --git a/code/game/objects/items/weapons/cigs.dm b/code/game/objects/items/weapons/cigs.dm index 9a55bb8e562..73ff43abbde 100644 --- a/code/game/objects/items/weapons/cigs.dm +++ b/code/game/objects/items/weapons/cigs.dm @@ -54,7 +54,7 @@ LIGHTERS ARE IN LIGHTERS.DM if(istype(M) && M.on_fire) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(M) - light("[user] coldly lights the [name] with the burning body of [M]. Clearly, they offer the warmest of regards...") + light("[user] coldly lights the [name] with the burning body of [M]. Clearly, [user.p_they()] offer[user.p_s()] the warmest of regards...") return 1 else return ..() @@ -73,31 +73,31 @@ LIGHTERS ARE IN LIGHTERS.DM else if(istype(W, /obj/item/lighter/zippo)) var/obj/item/lighter/zippo/Z = W if(Z.lit) - light("With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.") + light("With a single flick of [user.p_their()] wrist, [user] smoothly lights [user.p_their()] [name] with [user.p_their()] [W]. Damn [user.p_theyre()] cool.") else if(istype(W, /obj/item/lighter)) var/obj/item/lighter/L = W if(L.lit) - light("After some fiddling, [user] manages to light their [name] with [W].") + light("After some fiddling, [user] manages to light [user.p_their()] [name] with [W].") else if(istype(W, /obj/item/match)) var/obj/item/match/M = W if(M.lit == 1) - light("[user] lights their [name] with their [W].") + light("[user] lights [user.p_their()] [name] with [user.p_their()] [W].") else if(istype(W, /obj/item/melee/energy/sword/saber)) var/obj/item/melee/energy/sword/saber/S = W if(S.active) - light("[user] swings their [W], barely missing their nose. They light their [name] in the process.") + light("[user] swings their [W], barely missing their nose. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [name] in the process.") else if(istype(W, /obj/item/assembly/igniter)) - light("[user] fiddles with [W], and manages to light their [name].") + light("[user] fiddles with [W], and manages to light [user.p_their()] [name].") else if(istype(W, /obj/item/gun/magic/wand/fireball)) var/obj/item/gun/magic/wand/fireball/F = W if(F.charges) if(prob(50) || user.mind.assigned_role == "Wizard") - light("Holy shit, did [user] just manage to light their [name] with [W], with only moderate eyebrow singing?") + light("Holy shit, did [user] just manage to light [user.p_their()] [name] with [W], with only moderate eyebrow singing?") else to_chat(user, "Unsure which end of the wand is which, [user] fails to light [name] with [W].") explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm index 02a01a25e83..ec8a2a5e325 100644 --- a/code/game/objects/items/weapons/cosmetics.dm +++ b/code/game/objects/items/weapons/cosmetics.dm @@ -63,8 +63,8 @@ to_chat(user, "You need to wipe off the old lipstick first!") return if(H == user) - user.visible_message("[user] does their lips with \the [src].", \ - "You take a moment to apply \the [src]. Perfect!") + user.visible_message("[user] does [user.p_their()] lips with [src].", \ + "You take a moment to apply [src]. Perfect!") H.lip_style = "lipstick" H.lip_color = colour H.update_body() @@ -106,11 +106,11 @@ to_chat(user, "Already clean-shaven.") return if(H == user) //shaving yourself - user.visible_message("[user] starts to shave their facial hair with \the [src].", \ + user.visible_message("[user] starts to shave [user.p_their()] facial hair with [src].", \ "You take a moment shave your facial hair with \the [src].") if(do_after(user, 50 * toolspeed, target = H)) - user.visible_message("[user] shaves \his facial hair clean with the [src].", \ - "You finish shaving with the [src]. Fast and clean!") + user.visible_message("[user] shaves [user.p_their()] facial hair clean with [src].", \ + "You finish shaving with [src]. Fast and clean!") C.f_style = "Shaved" H.update_fhair() playsound(src.loc, usesound, 20, 1) @@ -140,10 +140,10 @@ to_chat(user, "Your razor isn't going to cut through tentacles.") return if(H == user) //shaving yourself - user.visible_message("[user] starts to shave their head with \the [src].", \ + user.visible_message("[user] starts to shave [user.p_their()] head with [src].", \ "You start to shave your head with \the [src].") if(do_after(user, 50 * toolspeed, target = H)) - user.visible_message("[user] shaves \his head with \the [src].", \ + user.visible_message("[user] shaves [user.p_their()] head with [src].", \ "You finish shaving with \the [src].") C.h_style = "Skinhead" H.update_hair() diff --git a/code/game/objects/items/weapons/courtroom.dm b/code/game/objects/items/weapons/courtroom.dm index 160bdd9bb1e..d25b6f54d29 100644 --- a/code/game/objects/items/weapons/courtroom.dm +++ b/code/game/objects/items/weapons/courtroom.dm @@ -14,7 +14,7 @@ burn_state = FLAMMABLE /obj/item/gavelhammer/suicide_act(mob/user) - user.visible_message("[user] has sentenced \himself to death with the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] has sentenced [user.p_them()]self to death with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.") playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1) return (BRUTELOSS) diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index e018625a971..99a62b83131 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -276,7 +276,7 @@ icon_state = "defibpaddles[wielded]_cooldown" /obj/item/twohanded/shockpaddles/suicide_act(mob/user) - user.visible_message("[user] is putting the live paddles on \his chest! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is putting the live paddles on [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide.") defib.deductcharge(revivecost) playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1) return (OXYLOSS) diff --git a/code/game/objects/items/weapons/dice.dm b/code/game/objects/items/weapons/dice.dm index 8ccfed1b517..d93ebcf3214 100644 --- a/code/game/objects/items/weapons/dice.dm +++ b/code/game/objects/items/weapons/dice.dm @@ -159,7 +159,7 @@ var/turf/bombturf = get_turf(src) var/area/A = get_area(bombturf) - bombers += "E20 detonated at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) with a roll of [result]. Triggered by: [key_name(user)]" + investigate_log("E20 detonated at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) with a roll of [result]. Triggered by: [key_name(user)]", INVESTIGATE_BOMB) message_admins("E20 detonated at [A.name] (JMP) with a roll of [result]. Triggered by: [key_name_admin(user)]") log_game("E20 detonated at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) with a roll of [result]. Triggered by: [key_name(user)]") diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index d120fb4e1cd..3a8bf12b143 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -142,7 +142,7 @@ else to_chat(user, "You inject yourself with [src].") - add_attack_logs(user, M, attack_log, FALSE) + add_attack_logs(user, M, attack_log, ATKLOG_ALL) if(!iscarbon(user)) M.LAssailant = null else diff --git a/code/game/objects/items/weapons/dnascrambler.dm b/code/game/objects/items/weapons/dnascrambler.dm index cd1d79ae683..2866e8d06ec 100644 --- a/code/game/objects/items/weapons/dnascrambler.dm +++ b/code/game/objects/items/weapons/dnascrambler.dm @@ -25,11 +25,11 @@ if(ishuman(M)) var/mob/living/carbon/human/H = M if(NO_DNA in H.species.species_traits) - to_chat(user, "You failed to inject [M], as they have no DNA to scramble, nor flesh to inject.") + to_chat(user, "You failed to inject [M], as [M.p_they()] [M.p_have()] no DNA to scramble, nor flesh to inject.") return if(M == user) - user.visible_message("[user] injects \himself with [src]!") + user.visible_message("[user] injects [user.p_them()]self with [src]!") injected(user, user) else user.visible_message("[user] is trying to inject [M] with [src]!") diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index 6164ed01047..edf7e0fc32b 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -90,7 +90,7 @@ /obj/item/grenade/plastic/suicide_act(mob/user) message_admins("[key_name_admin(user)](?) (FLW) suicided with [src.name] at ([user.x],[user.y],[user.z] - JMP)",0,1) log_game("[key_name(user)] suicided with [name] at ([user.x],[user.y],[user.z])") - user.visible_message("[user] activates the [name] and holds it above \his head! It looks like \he's going out with a bang!") + user.visible_message("[user] activates the [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) diff --git a/code/game/objects/items/weapons/garrote.dm b/code/game/objects/items/weapons/garrote.dm index 7893a7898b8..4a01914a31a 100644 --- a/code/game/objects/items/weapons/garrote.dm +++ b/code/game/objects/items/weapons/garrote.dm @@ -75,7 +75,7 @@ return if(improvised && ((M.head && (M.head.flags_cover & HEADCOVERSMOUTH)) || (M.wear_mask && (M.wear_mask.flags_cover & MASKCOVERSMOUTH)))) // Improvised garrotes are blocked by mouth-covering items. - to_chat(user, "[M]'s neck is blocked by something they're wearing!") + to_chat(user, "[M]'s neck is blocked by something [M.p_theyre()] wearing!") if(strangling) to_chat(user, "You cannot use [src] on two people at once!") @@ -134,7 +134,7 @@ G = user.r_hand else - user.visible_message("[user] loses \his grip on [strangling]'s neck.", \ + user.visible_message("[user] loses [user.p_their()] grip on [strangling]'s neck.", \ "You lose your grip on [strangling]'s neck.") strangling = null @@ -144,7 +144,7 @@ return if(!G.affecting) - user.visible_message("[user] loses \his grip on [strangling]'s neck.", \ + user.visible_message("[user] loses [user.p_their()] grip on [strangling]'s neck.", \ "You lose your grip on [strangling]'s neck.") strangling = null @@ -167,6 +167,6 @@ /obj/item/twohanded/garrote/suicide_act(mob/user) - user.visible_message("[user] is wrapping the [src] around \his neck and pulling the handles! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is wrapping the [src] around [user.p_their()] neck and pulling the handles! It looks like [user.p_theyre()] trying to commit suicide.") playsound(src.loc, 'sound/weapons/cablecuff.ogg', 15, 1, -1) return (OXYLOSS) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index de85ec64a58..9e836fecc87 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -102,7 +102,7 @@ // This used to go before the assembly check, but that has absolutely zero to do with priming the damn thing. You could spam the admins with it. message_admins("[key_name_admin(usr)] has primed a [name] for detonation at [A.name] (JMP) [contained].") log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) [contained].") - bombers += "[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])[contained]." + investigate_log("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])[contained].", INVESTIGATE_BOMB) to_chat(user, "You prime the [name]! [det_time / 10] second\s!") playsound(user.loc, 'sound/weapons/armbomb.ogg', 60, 1) active = 1 diff --git a/code/game/objects/items/weapons/grenades/emgrenade.dm b/code/game/objects/items/weapons/grenades/emgrenade.dm index 44d21506ee6..5b6d585ef5f 100644 --- a/code/game/objects/items/weapons/grenades/emgrenade.dm +++ b/code/game/objects/items/weapons/grenades/emgrenade.dm @@ -7,5 +7,5 @@ /obj/item/grenade/empgrenade/prime() update_mob() - empulse(src, 4, 10) - qdel(src) \ No newline at end of file + empulse(src, 4, 10, 1) + qdel(src) diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index d0dc2c8fe06..ca6177c04fa 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -49,7 +49,8 @@ var/area/A = get_area(bombturf) message_admins("[ADMIN_LOOKUPFLW(user)] has primed a [name] for detonation at [ADMIN_COORDJMP(bombturf)].") - log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] [COORD(bombturf)].") + log_game("[key_name(user)] has primed a [name] for detonation at [A.name] [COORD(bombturf)].") + investigate_log("[key_name(user)] has primed a [name] for detonation at [A.name] [COORD(bombturf)])", INVESTIGATE_BOMB) if(iscarbon(user)) var/mob/living/carbon/C = user C.throw_mode_on() diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index c7ababde601..09fdfe5a27f 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -66,7 +66,7 @@ var/area/A = get_area(bombturf) message_admins("[key_name_admin(usr)] has primed a [name] for detonation at [A.name] (JMP)") log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])") - bombers += "[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])" + investigate_log("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])", INVESTIGATE_BOMB) if(iscarbon(user)) var/mob/living/carbon/C = user C.throw_mode_on() diff --git a/code/game/objects/items/weapons/holosign.dm b/code/game/objects/items/weapons/holosign.dm index 30deb5289a4..12767cb9563 100644 --- a/code/game/objects/items/weapons/holosign.dm +++ b/code/game/objects/items/weapons/holosign.dm @@ -1,53 +1,123 @@ /obj/item/holosign_creator name = "holographic sign projector" - desc = "A handy-dandy hologaphic projector that displays a janitorial sign." - icon = 'icons/obj/janitor.dmi' + desc = "A handy-dandy holographic projector that displays a janitorial sign." + icon = 'icons/obj/device.dmi' icon_state = "signmaker" item_state = "electronic" - force = 5 + force = 0 w_class = WEIGHT_CLASS_SMALL throwforce = 0 throw_speed = 3 throw_range = 7 origin_tech = "magnets=1;programming=3" + flags = NOBLUDGEON var/list/signs = list() - var/max_signs = 20 - -/obj/item/holosign_creator/Destroy() - QDEL_LIST(signs) - return ..() + var/max_signs = 10 + var/creation_time = 0 //time to create a holosign in deciseconds. + var/holosign_type = /obj/structure/holosign/wetsign + var/holocreator_busy = FALSE //to prevent placing multiple holo barriers at once /obj/item/holosign_creator/afterattack(atom/target, mob/user, flag) if(flag) + if(!check_allowed_items(target, 1)) + return var/turf/T = get_turf(target) - var/obj/effect/overlay/holograph/H = locate() in T + var/obj/structure/holosign/H = locate(holosign_type) in T if(H) - to_chat(user, "You use [src] to destroy [H].") - signs -= H + to_chat(user, "You use [src] to deactivate [H].") qdel(H) else - if(signs.len < max_signs) - H = new(get_turf(target)) - signs += H - to_chat(user, "You create \a [H] with [src].") - else - to_chat(user, "[src] is projecting at max capacity!") + if(!is_blocked_turf(T, TRUE)) //can't put holograms on a tile that has dense stuff + if(holocreator_busy) + to_chat(user, "[src] is busy creating a hologram.") + return + if(signs.len < max_signs) + playsound(src.loc, 'sound/machines/click.ogg', 20, 1) + if(creation_time) + holocreator_busy = TRUE + if(!do_after(user, creation_time, target = target)) + holocreator_busy = FALSE + return + holocreator_busy = FALSE + if(signs.len >= max_signs) + return + if(is_blocked_turf(T, TRUE)) //don't try to sneak dense stuff on our tile during the wait. + return + H = new holosign_type(get_turf(target), src) + to_chat(user, "You create [H] with [src].") + else + to_chat(user, "[src] is projecting at max capacity!") /obj/item/holosign_creator/attack(mob/living/carbon/human/M, mob/user) return /obj/item/holosign_creator/attack_self(mob/user) if(signs.len) - var/list/L = signs.Copy() - for(var/sign in L) - qdel(sign) - signs -= sign + for(var/H in signs) + qdel(H) to_chat(user, "You clear all active holograms.") -/obj/effect/overlay/holograph - name = "wet floor sign" - desc = "The words flicker as if they mean nothing." - icon = 'icons/obj/janitor.dmi' - icon_state = "holosign" - anchored = 1 - armor = list(melee = 0, bullet = 50, laser = 50, energy = 50, bomb = 0, bio = 0, rad = 0) + +/obj/item/holosign_creator/security + name = "security holobarrier projector" + desc = "A holographic projector that creates holographic security barriers." + icon_state = "signmaker_sec" + holosign_type = /obj/structure/holosign/barrier + creation_time = 30 + max_signs = 6 + +/obj/item/holosign_creator/engineering + name = "engineering holobarrier projector" + desc = "A holographic projector that creates holographic engineering barriers." + icon_state = "signmaker_engi" + holosign_type = /obj/structure/holosign/barrier/engineering + creation_time = 30 + max_signs = 6 + +/obj/item/holosign_creator/atmos + name = "ATMOS holofan projector" + desc = "A holographic projector that creates holographic barriers that prevent changes in atmosphere conditions." + icon_state = "signmaker_engi" + holosign_type = /obj/structure/holosign/barrier/atmos + creation_time = 0 + max_signs = 3 + +/obj/item/holosign_creator/cyborg + name = "Energy Barrier Projector" + desc = "A holographic projector that creates fragile energy fields." + creation_time = 15 + max_signs = 9 + holosign_type = /obj/structure/holosign/barrier/cyborg + var/shock = 0 + +/obj/item/holosign_creator/cyborg/attack_self(mob/user) + if(isrobot(user)) + var/mob/living/silicon/robot/R = user + + if(shock) + to_chat(user, "You clear all active holograms, and reset your projector to normal.") + holosign_type = /obj/structure/holosign/barrier/cyborg + creation_time = 5 + if(signs.len) + for(var/H in signs) + qdel(H) + shock = 0 + return + else if(R.emagged && !shock) + to_chat(user, "You clear all active holograms, and overload your energy projector!") + holosign_type = /obj/structure/holosign/barrier/cyborg/hacked + creation_time = 30 + if(signs.len) + for(var/H in signs) + qdel(H) + shock = 1 + return + else + if(signs.len) + for(var/H in signs) + qdel(H) + to_chat(user, "You clear all active holograms.") + if(signs.len) + for(var/H in signs) + qdel(H) + to_chat(user, "You clear all active holograms.") \ No newline at end of file diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm index 2d0865faa36..ea799bbcd76 100644 --- a/code/game/objects/items/weapons/holy_weapons.dm +++ b/code/game/objects/items/weapons/holy_weapons.dm @@ -13,7 +13,7 @@ var/list/fluff_transformations = list() //does it have any special transformations only accessible to it? Should only be subtypes of /obj/item/nullrod /obj/item/nullrod/suicide_act(mob/user) - user.visible_message("[user] is killing \himself with \the [src.name]! It looks like \he's trying to get closer to god!") + user.visible_message("[user] is killing [user.p_them()]self with \the [src.name]! It looks like [user.p_theyre()] trying to get closer to god!") return (BRUTELOSS|FIRELOSS) /obj/item/nullrod/attack(mob/M, mob/living/carbon/user) @@ -575,7 +575,7 @@ if(missionary in viewers(target)) //missionary must maintain line of sight to target, but the target doesn't necessary need to be able to see the missionary do_convert(target, missionary) else - to_chat(missionary, "You lost sight of the target before they could be converted!") + to_chat(missionary, "You lost sight of the target before [target.p_they()] could be converted!") faith -= 25 //they escaped, so you only lost a little faith (to prevent spamming) else //the do_after failed, probably because you moved or dropped the staff to_chat(missionary, "Your concentration was broken!") @@ -585,12 +585,12 @@ if(!target || !ishuman(target) || !missionary || !ishuman(missionary)) return if(ismindslave(target) || target.mind.zealot_master) //mindslaves and zealots override the staff because the staff is just a temporary mindslave - to_chat(missionary, "Your faith is strong, but their mind is already slaved to someone else's ideals. Perhaps an inquisition would reveal more...") + to_chat(missionary, "Your faith is strong, but [target.p_their()] mind is already slaved to someone else's ideals. Perhaps an inquisition would reveal more...") faith -= 25 //same faith cost as losing sight of them mid-conversion, but did you just find someone who can lead you to a fellow traitor? return if(ismindshielded(target)) faith -= 75 - to_chat(missionary, "Your faith is strong, but their mind remains closed to your ideals. Your resolve helps you retain a bit of faith though.") + to_chat(missionary, "Your faith is strong, but [target.p_their()] mind remains closed to your ideals. Your resolve helps you retain a bit of faith though.") return else if(target.mind.assigned_role == "Psychiatrist" || target.mind.assigned_role == "Librarian") //fancy book lernin helps counter religion (day 0 job love, what madness!) if(prob(35)) //35% chance to fail @@ -602,7 +602,7 @@ faith -= 100 else if(target.mind.assigned_role == "Civilian") if(prob(55)) //55% chance to take LESS faith than normal, because civies are stupid and easily manipulated - to_chat(missionary, "Your message seems to resound well with [target]; converting them was much easier than expected.") + to_chat(missionary, "Your message seems to resound well with [target]; converting [target.p_them()] was much easier than expected.") faith -= 50 else //45% chance to take the normal 100 faith cost to_chat(missionary, "You successfully convert [target] to your cause. The following grows because of your faith!") diff --git a/code/game/objects/items/weapons/implants/implant_misc.dm b/code/game/objects/items/weapons/implants/implant_misc.dm index a657d08847b..9c4049e8904 100644 --- a/code/game/objects/items/weapons/implants/implant_misc.dm +++ b/code/game/objects/items/weapons/implants/implant_misc.dm @@ -58,7 +58,7 @@ /obj/item/implant/emp/activate() uses-- - empulse(imp_in, 3, 5) + empulse(imp_in, 3, 5, 1) if(!uses) qdel(src) diff --git a/code/game/objects/items/weapons/implants/implant_traitor.dm b/code/game/objects/items/weapons/implants/implant_traitor.dm index adf988c2dee..58f78a7be4e 100644 --- a/code/game/objects/items/weapons/implants/implant_traitor.dm +++ b/code/game/objects/items/weapons/implants/implant_traitor.dm @@ -55,7 +55,7 @@ ticker.mode.implanter[ref] = implanters ticker.mode.traitors += H.mind H.mind.special_role = SPECIAL_ROLE_TRAITOR - to_chat(H, "You're now completely loyal to [user.name]! You now must lay down your life to protect them and assist in their goals at any cost.") + to_chat(H, "You're now completely loyal to [user.name]! You now must lay down your life to protect [user.p_them()] and assist in [user.p_their()] goals at any cost.") var/datum/objective/protect/mindslave/MS = new MS.owner = H.mind MS.target = user.mind diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index da6e3b95968..314077db68e 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -79,7 +79,7 @@ return var/mob/M = G.affecting if(M.buckled_mob) - to_chat(usr, "[M] will not fit into [src] because they have a slime latched onto their head.") + to_chat(usr, "[M] will not fit into [src] because [M.p_they()] [M.p_have()] a slime latched onto [M.p_their()] head.") return if(put_mob(M)) qdel(G) diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 93103568f58..668cc74ac73 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -113,9 +113,9 @@ sharp = 1 /obj/item/kitchen/knife/suicide_act(mob/user) - user.visible_message(pick("[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.")) + user.visible_message(pick("[user] is slitting [user.p_their()] wrists with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.", \ + "[user] is slitting [user.p_their()] throat with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.", \ + "[user] is slitting [user.p_their()] stomach open with the [name]! It looks like [user.p_theyre()] trying to commit seppuku.")) return (BRUTELOSS) /obj/item/kitchen/knife/plastic diff --git a/code/game/objects/items/weapons/legcuffs.dm b/code/game/objects/items/weapons/legcuffs.dm index e6ba57ff8da..047a75bd634 100644 --- a/code/game/objects/items/weapons/legcuffs.dm +++ b/code/game/objects/items/weapons/legcuffs.dm @@ -33,7 +33,7 @@ return ..() /obj/item/restraints/legcuffs/beartrap/suicide_act(mob/user) - user.visible_message("[user] is sticking \his head in the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is sticking [user.p_their()] head in the [name]! It looks like [user.p_theyre()] trying to commit suicide.") playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) return (BRUTELOSS) diff --git a/code/game/objects/items/weapons/lighters.dm b/code/game/objects/items/weapons/lighters.dm index a620f3fdb5c..94e97ea7c20 100644 --- a/code/game/objects/items/weapons/lighters.dm +++ b/code/game/objects/items/weapons/lighters.dm @@ -57,7 +57,7 @@ if(affecting.receive_damage( 0, 5 )) //INFERNO H.UpdateDamageIcon() H.updatehealth() - user.visible_message("After a few attempts, [user] manages to light the [src], they however burn their finger in the process.") + user.visible_message("After a few attempts, [user] manages to light the [src], [user.p_they()] however burn[user.p_s()] [user.p_their()] finger in the process.") set_light(2) processing_objects.Add(src) @@ -70,7 +70,7 @@ force = 0 attack_verb = null //human_defense.dm takes care of it if(istype(src, /obj/item/lighter/zippo) ) - user.visible_message("You hear a quiet click, as [user] shuts off [src] without even looking at what they're doing. Wow.") + user.visible_message("You hear a quiet click, as [user] shuts off [src] without even looking at what [user.p_theyre()] doing. Wow.") playsound(src.loc, 'sound/items/ZippoClose.ogg', 25, 1) else user.visible_message("[user] quietly shuts off the [src].") @@ -95,7 +95,7 @@ cig.attackby(src, user) else if(istype(src, /obj/item/lighter/zippo)) - cig.light("[user] whips the [name] out and holds it for [M]. Their arm is as steady as the unflickering flame they light \the [cig] with.") + cig.light("[user] whips the [name] out and holds it for [M]. [user.p_their(TRUE)] arm is as steady as the unflickering flame [user.p_they()] light[user.p_s()] \the [cig] with.") else cig.light("[user] holds the [name] out for [M], and lights the [cig.name].") M.update_inv_wear_mask() diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index 6702f893d50..2dcbef5b1a5 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -14,8 +14,8 @@ var/colormap = list(red=LIGHT_COLOR_RED, blue=LIGHT_COLOR_LIGHTBLUE, green=LIGHT_COLOR_GREEN, purple=LIGHT_COLOR_PURPLE, rainbow=LIGHT_COLOR_WHITE) /obj/item/melee/energy/suicide_act(mob/user) - user.visible_message(pick("[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.", \ - "[user] is falling on the [src.name]! It looks like \he's trying to commit suicide.")) + user.visible_message(pick("[user] is slitting [user.p_their()] stomach open with the [name]! It looks like [user.p_theyre()] trying to commit seppuku.", \ + "[user] is falling on the [name]! It looks like [user.p_theyre()] trying to commit suicide.")) return (BRUTELOSS|FIRELOSS) /obj/item/melee/energy/attack_self(mob/living/carbon/user) @@ -80,7 +80,7 @@ light_color = LIGHT_COLOR_WHITE /obj/item/melee/energy/axe/suicide_act(mob/user) - user.visible_message("[user] swings the [src.name] towards /his head! It looks like \he's trying to commit suicide.") + user.visible_message("[user] swings the [name] towards [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide.") return (BRUTELOSS|FIRELOSS) /obj/item/melee/energy/sword diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index 267c2deda5e..a19df11e790 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -17,7 +17,7 @@ /obj/item/melee/chainofcommand/suicide_act(mob/user) - to_chat(viewers(user), "[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide.") + to_chat(viewers(user), "[user] is strangling [user.p_them()]self with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.") return (OXYLOSS) /obj/item/melee/rapier diff --git a/code/game/objects/items/weapons/pneumaticCannon.dm b/code/game/objects/items/weapons/pneumaticCannon.dm index 84b8d55a915..64f554682fc 100644 --- a/code/game/objects/items/weapons/pneumaticCannon.dm +++ b/code/game/objects/items/weapons/pneumaticCannon.dm @@ -103,7 +103,7 @@ to_chat(user, "\The [src] lets out a weak hiss and doesn't react!") return if(user && (CLUMSY in user.mutations) && prob(75)) - user.visible_message("[user] loses their grip on [src], causing it to go off!", "[src] slips out of your hands and goes off!") + user.visible_message("[user] loses [user.p_their()] grip on [src], causing it to go off!", "[src] slips out of your hands and goes off!") user.drop_item() if(prob(10)) target = get_turf(user) diff --git a/code/game/objects/items/weapons/powerfist.dm b/code/game/objects/items/weapons/powerfist.dm index 7b6dfeb3a75..a2315544d35 100644 --- a/code/game/objects/items/weapons/powerfist.dm +++ b/code/game/objects/items/weapons/powerfist.dm @@ -83,7 +83,7 @@ user.do_attack_animation(target) target.apply_damage(force * fisto_setting, BRUTE) - target.visible_message("[user]'s powerfist lets out a loud hiss as they punch [target.name]!", \ + target.visible_message("[user]'s powerfist lets out a loud hiss as [user.p_they()] punch[user.p_es()] [target.name]!", \ "You cry out in pain as [user]'s punch flings you backwards!") new /obj/effect/temp_visual/kinetic_blast(target.loc) playsound(loc, 'sound/weapons/resonator_blast.ogg', 50, 1) diff --git a/code/game/objects/items/weapons/scissors.dm b/code/game/objects/items/weapons/scissors.dm index 677b2d99168..6ff1fbe95b0 100644 --- a/code/game/objects/items/weapons/scissors.dm +++ b/code/game/objects/items/weapons/scissors.dm @@ -114,7 +114,7 @@ playsound(loc, 'sound/goonstation/misc/Scissor.ogg', 100, 1) if(do_after(user, 50 * toolspeed, target = H)) playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) - user.visible_message("[user] abruptly stops cutting [M]'s hair and slices their throat!", "You stop cutting [M]'s hair and slice their throat!") //Just a little off the top. + user.visible_message("[user] abruptly stops cutting [M]'s hair and slices [M.p_their()] throat!", "You stop cutting [M]'s hair and slice [M.p_their()] throat!") //Just a little off the top. H.AdjustLoseBreath(10) //30 Oxy damage over time H.apply_damage(18, BRUTE, "head", sharp =1, used_weapon = "scissors") var/turf/location = get_turf(src) diff --git a/code/game/objects/items/weapons/shards.dm b/code/game/objects/items/weapons/shards.dm index 6170eae96a7..b0d7477bbbb 100644 --- a/code/game/objects/items/weapons/shards.dm +++ b/code/game/objects/items/weapons/shards.dm @@ -16,8 +16,8 @@ armor = list("melee" = 100, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0) /obj/item/shard/suicide_act(mob/user) - to_chat(viewers(user), pick("[user] is slitting \his wrists with \the [src]! It looks like \he's trying to commit suicide.", - "[user] is slitting \his throat with \the [src]! It looks like \he's trying to commit suicide.")) + to_chat(viewers(user), pick("[user] is slitting [user.p_their()] wrists with [src]! It looks like [user.p_theyre()] trying to commit suicide.", + "[user] is slitting [user.p_their()] throat with [src]! It looks like [user.p_theyre()] trying to commit suicide.")) return (BRUTELOSS) /obj/item/shard/New() diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 9ef11ec3b2d..85a0e679bb6 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -49,10 +49,10 @@ if(istype(W, /obj/item/storage/backpack/holding)) var/response = alert(user, "Are you sure you want to put the bag of holding inside another bag of holding?","Are you sure you want to die?","Yes","No") if(response == "Yes") - user.visible_message("[user] grins as \he begins to put a Bag of Holding into a Bag of Holding!", "You begin to put the Bag of Holding into the Bag of Holding!") + user.visible_message("[user] grins as [user.p_they()] begin[user.p_s()] to put a Bag of Holding into a Bag of Holding!", "You begin to put the Bag of Holding into the Bag of Holding!") if(do_after(user, 30, target=src)) investigate_log("has become a singularity. Caused by [user.key]","singulo") - user.visible_message("[user] erupts in evil laughter as \he puts the Bag of Holding into another Bag of Holding!", "You can't help but laugh wildly as you put the Bag of Holding into another Bag of Holding, complete darkness surrounding you."," You hear the sound of scientific evil brewing! ") + user.visible_message("[user] erupts in evil laughter as [user.p_they()] put[user.p_s()] the Bag of Holding into another Bag of Holding!", "You can't help but laugh wildly as you put the Bag of Holding into another Bag of Holding, complete darkness surrounding you."," You hear the sound of scientific evil brewing! ") qdel(W) var/obj/singularity/singulo = new /obj/singularity(get_turf(user)) singulo.energy = 300 //To give it a small boost diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 2b67373d9c4..26793a8165b 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -40,7 +40,7 @@ cant_hold = list(/obj/item/disk/nuclear) /obj/item/storage/bag/trash/suicide_act(mob/user) - user.visible_message("[user] puts the [src.name] over their head and starts chomping at the insides! Disgusting!") + user.visible_message("[user] puts the [name] over [user.p_their()] head and starts chomping at the insides! Disgusting!") playsound(loc, 'sound/items/eatfood.ogg', 50, 1, -1) return (TOXLOSS) @@ -453,9 +453,9 @@ sleep(rand(2,4)) if( droppedSomething ) if( foundtable ) - user.visible_message("[user] unloads their service tray.") + user.visible_message("[user] unloads [user.p_their()] service tray.") else - user.visible_message("[user] drops all the items on their tray.") + user.visible_message("[user] drops all the items on [user.p_their()] tray.") return ..() diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index aa723cba8c0..9d4481952f5 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -58,8 +58,8 @@ /obj/item/stack/cable_coil, /obj/item/t_scanner, /obj/item/analyzer, - /obj/item/taperoll/engineering, - /obj/item/extinguisher/mini) + /obj/item/extinguisher/mini, + /obj/item/holosign_creator) /obj/item/storage/belt/utility/full/New() ..() @@ -192,7 +192,7 @@ /obj/item/melee/baton, /obj/item/melee/classic_baton, /obj/item/flashlight/seclite, - /obj/item/taperoll/police, + /obj/item/holosign_creator/security, /obj/item/melee/classic_baton/telescopic, /obj/item/restraints/legcuffs/bola) diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm index 4d56e2a22ad..03787385e1c 100644 --- a/code/game/objects/items/weapons/storage/bible.dm +++ b/code/game/objects/items/weapons/storage/bible.dm @@ -68,7 +68,7 @@ if(M.stat !=2) /*if((M.mind in ticker.mode.cult) && (prob(20))) to_chat(M, "The power of [src.deity_name] clears your mind of heresy!") - to_chat(user, "You see how [M]'s eyes become clear, the cult no longer holds control over him!") + to_chat(user, "You see how [M]'s eyes become clear, the cult no longer holds control over [M.p_them()]!") ticker.mode.remove_cultist(M.mind)*/ if((istype(M, /mob/living/carbon/human) && prob(60))) bless(M) diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index e0e43bfbda6..a78bc40dd3a 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -26,6 +26,7 @@ item_state = "syringe_kit" burn_state = FLAMMABLE var/foldable = /obj/item/stack/sheet/cardboard + var/amt = 1 /obj/item/storage/box/attack_self(mob/user) ..() @@ -49,7 +50,7 @@ return to_chat(user, "You fold [src] flat.") - var/obj/item/I = new foldable(get_turf(src)) + var/obj/item/stack/I = new foldable(get_turf(src), amt) user.put_in_hands(I) qdel(src) @@ -59,6 +60,7 @@ icon_state = "largebox" w_class = 42 // Big, bulky. foldable = /obj/item/stack/sheet/cardboard + amt = 4 storage_slots = 21 max_combined_w_class = 42 // 21*2 diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 9bf760aee29..4896f2cfb60 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -403,6 +403,7 @@ icon_state = "AquaticKit" throw_speed = 2 throw_range = 8 + med_bot_skin = "fish" /obj/item/storage/firstaid/aquatic_kit/full desc = "It's a starter kit for an acquarium; includes 1 tank brush, 1 egg scoop, 1 fish net, and 1 container of fish food." diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index 34e350e3d50..ddc8b79012f 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -21,6 +21,8 @@ var/treatment_fire = "salglu_solution" var/treatment_tox = "charcoal" var/treatment_virus = "spaceacillin" + var/med_bot_skin = null + var/syndicate_aligned = FALSE /obj/item/storage/firstaid/fire @@ -28,6 +30,7 @@ desc = "A medical kit that contains several medical patches and pills for treating burns. Contains one epinephrine syringe for emergency use and a health analyzer." icon_state = "ointment" item_state = "firstaid-ointment" + med_bot_skin = "ointment" New() ..() @@ -68,6 +71,7 @@ desc = "A medical kit designed to counter poisoning by common toxins. Contains three pills and syringes, and a health analyzer to determine the health of the patient." icon_state = "antitoxin" item_state = "firstaid-toxin" + med_bot_skin = "tox" New() ..() @@ -92,6 +96,7 @@ desc = "A first aid kit that contains four pills of salbutamol, which is able to counter injuries caused by suffocation. Also contains a health analyzer to determine the health of the patient." icon_state = "o2" item_state = "firstaid-o2" + med_bot_skin = "o2" New() ..() @@ -111,6 +116,7 @@ desc = "A medical kit that contains several medical patches and pills for treating brute injuries. Contains one epinephrine syringe for emergency use and a health analyzer." icon_state = "brute" item_state = "firstaid-brute" + med_bot_skin = "brute" New() ..() @@ -135,6 +141,7 @@ desc = "Contains advanced medical treatments." icon_state = "advfirstaid" item_state = "firstaid-advanced" + med_bot_skin = "adv" /obj/item/storage/firstaid/adv/New() ..() @@ -157,10 +164,12 @@ desc = "I hope you've got insurance." max_w_class = WEIGHT_CLASS_NORMAL treatment_oxy = "perfluorodecalin" - treatment_brute = "styptic_powder" - treatment_fire = "silver_sulfadiazine" + treatment_brute = "bicaridine" + treatment_fire = "kelotane" treatment_tox = "charcoal" req_one_access =list(access_syndicate) + med_bot_skin = "bezerk" + syndicate_aligned = TRUE /obj/item/storage/firstaid/tactical/New() ..() diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 98b8395f161..31cc7a1faf2 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -16,7 +16,7 @@ var/hitcost = 1000 /obj/item/melee/baton/suicide_act(mob/user) - user.visible_message("[user] is putting the live [name] in \his mouth! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is putting the live [name] in [user.p_their()] mouth! It looks like [user.p_theyre()] trying to commit suicide.") return (FIRELOSS) /obj/item/melee/baton/New() @@ -104,7 +104,7 @@ /obj/item/melee/baton/attack(mob/M, mob/living/user) if(status && (CLUMSY in user.mutations) && prob(50)) - user.visible_message("[user] accidentally hits themself with [src]!", \ + user.visible_message("[user] accidentally hits [user.p_them()]self with [src]!", \ "You accidentally hit yourself with [src]!") user.Weaken(stunforce*3) deductcharge(hitcost) @@ -175,7 +175,7 @@ user.Weaken(stunforce) user.stuttering = stunforce deductcharge(hitcost) - user.visible_message("[user] shocks themself while attempting to wash the active [src]!", \ + user.visible_message("[user] shocks [user.p_them()]self while attempting to wash the active [src]!", \ "You unwisely attempt to wash [src] while it's still on.") playsound(src, "sparks", 50, 1) return 1 diff --git a/code/game/objects/items/weapons/tape.dm b/code/game/objects/items/weapons/tape.dm index 38a16be40ce..57e0290346e 100644 --- a/code/game/objects/items/weapons/tape.dm +++ b/code/game/objects/items/weapons/tape.dm @@ -14,11 +14,11 @@ /obj/item/stack/tape_roll/attack(mob/living/carbon/human/M as mob, mob/living/user as mob) if(M.wear_mask) - to_chat(user, "Remove their mask first!") + to_chat(user, "Remove [M.p_their()] mask first!") else if(amount < 2) to_chat(user, "You'll need more tape for this!") else if(!M.check_has_mouth()) - to_chat(user, "They have no mouth to tape over!") + to_chat(user, "[M.p_they(TRUE)] [M.p_have()] no mouth to tape over!") else if(M == user) to_chat(user, "You try to tape your own mouth shut.") @@ -29,7 +29,7 @@ if(M == user) to_chat(user, "You cover your own mouth with a piece of duct tape.") else - to_chat(user, "You cover [M]'s mouth with a piece of duct tape. That will shut them up!") + to_chat(user, "You cover [M]'s mouth with a piece of duct tape. That will shut [M.p_them()] up!") M.visible_message("[user] tapes [M]'s mouth shut!") var/obj/item/clothing/mask/muzzle/G = new /obj/item/clothing/mask/muzzle/tapegag M.equip_to_slot(G, slot_wear_mask) diff --git a/code/game/objects/items/weapons/teleprod.dm b/code/game/objects/items/weapons/teleprod.dm index 8c942b5e0c5..1fe31f8a4f7 100644 --- a/code/game/objects/items/weapons/teleprod.dm +++ b/code/game/objects/items/weapons/teleprod.dm @@ -10,7 +10,7 @@ ..() if(status) if((CLUMSY in user.mutations) && prob(50)) - user.visible_message("[user] accidentally hits themself with [src]!", \ + user.visible_message("[user] accidentally hits [user.p_them()]self with [src]!", \ "You accidentally hit yourself with [src]!") user.Weaken(stunforce*3) deductcharge(hitcost) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 44cfc648757..867cc473932 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -28,7 +28,7 @@ toolspeed = 1 /obj/item/wrench/suicide_act(mob/user) - user.visible_message("[user] is beating themselves to death with [src]! It looks like they're trying to commit suicide!") + 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) @@ -73,7 +73,7 @@ user.put_in_active_hand(s_drill) /obj/item/wrench/power/suicide_act(mob/user) - user.visible_message("[user] is pressing [src] against their head! It looks like they're trying to commit suicide!") + 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 @@ -86,7 +86,7 @@ attack_verb = list("wrenched", "medicaled", "tapped", "jabbed", "whacked") /obj/item/wrench/medical/suicide_act(mob/user) - user.visible_message("[user] is praying to the medical wrench to take their soul. It looks like they're trying to commit suicide!") + 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 @@ -139,7 +139,7 @@ toolspeed = 0.5 /obj/item/screwdriver/suicide_act(mob/user) - user.visible_message("[user] is stabbing [src] into their [pick("temple", "heart")]! It looks like they're trying to commit suicide!") + 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/New(loc, var/param_color = null) @@ -192,7 +192,7 @@ toolspeed = 0.25 /obj/item/screwdriver/power/suicide_act(mob/user) - user.visible_message("[user] is putting [src] to their temple. It looks like they're trying to commit suicide!") + 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) @@ -247,7 +247,7 @@ ..() /obj/item/wirecutters/suicide_act(mob/user) - user.visible_message("[user] is cutting at their arteries with [src]! It looks like they're trying to commit suicide!") + 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) @@ -281,7 +281,7 @@ toolspeed = 0.25 /obj/item/wirecutters/power/suicide_act(mob/user) - user.visible_message("[user] is wrapping \the [src] around their neck. It looks like they're trying to rip their head off!") + 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(ishuman(user)) var/mob/living/carbon/human/H = user @@ -338,7 +338,7 @@ to_chat(user, "It contains [get_fuel()] unit\s of fuel out of [max_fuel].") /obj/item/weldingtool/suicide_act(mob/user) - user.visible_message("[user] welds their every orifice closed! It looks like they're trying to commit suicide!") + 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/proc/update_torch() @@ -699,7 +699,7 @@ obj/item/weldingtool/experimental/process() var/airlock_open_time = 100 // Time required to open powered airlocks /obj/item/crowbar/power/suicide_act(mob/user) - user.visible_message("[user] is putting their head in [src], it looks like they're trying to commit suicide!") + 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) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 7bae5139b27..8de83f6344a 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -23,19 +23,20 @@ * Twohanded */ /obj/item/twohanded - var/wielded = 0 + var/wielded = FALSE var/force_unwielded = 0 var/force_wielded = 0 var/wieldsound = null var/unwieldsound = null /obj/item/twohanded/proc/unwield(mob/living/carbon/user) - if(!wielded || !user) return - wielded = 0 + if(!wielded || !user) + return + wielded = FALSE force = force_unwielded var/sf = findtext(name," (Wielded)") if(sf) - name = copytext(name,1,sf) + name = copytext(name, 1, sf) else //something wrong name = "[initial(name)]" update_icon() @@ -45,16 +46,16 @@ if(isrobot(user)) to_chat(user, "You free up your module.") else - to_chat(user, "You are now carrying the [name] with one hand.") + to_chat(user, "You are now carrying [name] with one hand.") if(unwieldsound) playsound(loc, unwieldsound, 50, 1) var/obj/item/twohanded/offhand/O = user.get_inactive_hand() if(O && istype(O)) O.unwield() - return /obj/item/twohanded/proc/wield(mob/living/carbon/user) - if(wielded) return + if(wielded) + return if(ishuman(user)) var/mob/living/carbon/human/H = user if(H.species.is_small) @@ -63,7 +64,7 @@ if(user.get_inactive_hand()) to_chat(user, "You need your other hand to be empty!") return - wielded = 1 + wielded = TRUE force = force_wielded name = "[name] (Wielded)" update_icon() @@ -80,7 +81,6 @@ O.name = "[name] - offhand" O.desc = "Your second grip on the [name]" user.put_in_inactive_hand(O) - return /obj/item/twohanded/dropped(mob/user) ..() @@ -124,22 +124,22 @@ ///////////Two hand required objects/////////////// //This is for objects that require two hands to even pick up -/obj/item/twohanded/required/ +/obj/item/twohanded/required w_class = WEIGHT_CLASS_HUGE /obj/item/twohanded/required/attack_self() return -/obj/item/twohanded/required/mob_can_equip(M as mob, slot) +/obj/item/twohanded/required/mob_can_equip(mob/M, slot) if(wielded && !slot_flags) to_chat(M, "[src] is too cumbersome to carry with anything but your hands!") - return 0 + return FALSE return ..() /obj/item/twohanded/required/attack_hand(mob/user)//Can't even pick it up without both hands empty var/obj/item/twohanded/required/H = user.get_inactive_hand() - if(get_dist(src,user) > 1) - return 0 + if(get_dist(src, user) > 1) + return FALSE if(H != null) to_chat(user, "[src] is too cumbersome to carry in one hand!") return @@ -163,7 +163,7 @@ desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?" force = 5 throwforce = 15 - sharp = 1 + sharp = TRUE w_class = WEIGHT_CLASS_BULKY slot_flags = SLOT_BACK force_unwielded = 5 @@ -174,30 +174,29 @@ /obj/item/twohanded/fireaxe/update_icon() //Currently only here to fuck with the on-mob icons. icon_state = "fireaxe[wielded]" - return -/obj/item/twohanded/fireaxe/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity) - if(!proximity) return - ..() - if(A && wielded && (istype(A,/obj/structure/window) || istype(A,/obj/structure/grille))) //destroys windows and grilles in one hit - - if(istype(A,/obj/structure/window)) +/obj/item/twohanded/fireaxe/afterattack(atom/A, mob/user, proximity) + if(!proximity) + return + if(wielded) //destroys windows and grilles in one hit + if(istype(A, /obj/structure/window)) var/obj/structure/window/W = A - W.destroy() - else - qdel(A) + W.take_damage(200, BRUTE, "melee", 0) + else if(istype(A, /obj/structure/grille)) + var/obj/structure/grille/G = A + G.take_damage(40, BRUTE, "melee", 0) /* * Double-Bladed Energy Swords - Cheridan */ /obj/item/twohanded/dualsaber - var/hacked = 0 + var/hacked = FALSE var/blade_color icon_state = "dualsaber0" name = "double-bladed energy sword" desc = "Handle with care." force = 3 - throwforce = 5.0 + throwforce = 5 throw_speed = 1 throw_range = 5 w_class = WEIGHT_CLASS_SMALL @@ -209,7 +208,7 @@ origin_tech = "magnets=4;syndicate=5" attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") block_chance = 75 - sharp = 1 + sharp = TRUE light_power = 2 var/brightness_on = 2 var/colormap = list(red=LIGHT_COLOR_RED, blue=LIGHT_COLOR_LIGHTBLUE, green=LIGHT_COLOR_GREEN, purple=LIGHT_COLOR_PURPLE, rainbow=LIGHT_COLOR_WHITE) @@ -226,26 +225,35 @@ icon_state = "dualsaber0" set_light(0) -/obj/item/twohanded/dualsaber/attack(target as mob, mob/living/user as mob) +/obj/item/twohanded/dualsaber/attack(mob/target, mob/living/user) if(HULK in user.mutations) to_chat(user, "You grip the blade too hard and accidentally close it!") unwield() return ..() - if((CLUMSY in user.mutations) && (wielded) &&prob(40)) + if((CLUMSY in user.mutations) && (wielded) && prob(40)) to_chat(user, "You twirl around a bit before losing your balance and impaling yourself on the [src].") - user.take_organ_damage(20,25) + user.take_organ_damage(20, 25) return if((wielded) && prob(50)) - spawn(0) - for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2)) - user.dir = i - sleep(1) + INVOKE_ASYNC(src, .proc/jedi_spin, user) + +/obj/item/twohanded/dualsaber/proc/jedi_spin(mob/living/user) + for(var/i in list(NORTH, SOUTH, EAST, WEST, EAST, SOUTH, NORTH, SOUTH, EAST, WEST, EAST, SOUTH)) + user.setDir(i) + if(i == WEST) + user.SpinAnimation(7, 1) + sleep(1) /obj/item/twohanded/dualsaber/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance) if(wielded) return ..() - return 0 + return FALSE + +/obj/item/twohanded/dualsaber/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) //In case thats just so happens that it is still activated on the groud, prevents hulk from picking it up + if(wielded) + to_chat(user, "You can't pick up such a dangerous item with your meaty hands without losing fingers, better not to!") + return TRUE /obj/item/twohanded/dualsaber/green blade_color = "green" @@ -265,7 +273,7 @@ /obj/item/twohanded/dualsaber/IsReflect() if(wielded) - return 1 + return TRUE /obj/item/twohanded/dualsaber/wield(mob/living/carbon/M) //Specific wield () hulk checks due to reflection chance for balance issues and switches hitsounds. if(HULK in M.mutations) @@ -274,16 +282,17 @@ ..() hitsound = 'sound/weapons/blade1.ogg' -/obj/item/twohanded/dualsaber/attackby(obj/item/W as obj, mob/user as mob, params) - ..() - if(istype(W, /obj/item/multitool)) - if(hacked == 0) - hacked = 1 +/obj/item/twohanded/dualsaber/attackby(obj/item/W, mob/user, params) + if(ismultitool(W)) + if(!hacked) + hacked = TRUE to_chat(user, "2XRNBW_ENGAGE") blade_color = "rainbow" update_icon() else to_chat(user, "It's starting to look like a triple rainbow - no, nevermind.") + else + return ..() //spears /obj/item/twohanded/spear @@ -298,11 +307,11 @@ throwforce = 20 throw_speed = 4 armour_penetration = 10 - materials = list(MAT_METAL=1150, MAT_GLASS=2075) + materials = list(MAT_METAL = 1150, MAT_GLASS = 2075) hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "poked", "jabbed", "torn", "gored") - sharp = 1 - no_spin_thrown = 1 + sharp = TRUE + no_spin_thrown = TRUE var/obj/item/grenade/explosive = null var/war_cry = "AAAAARGH!!!" @@ -333,8 +342,8 @@ ..() if(!explosive) return - if(ismob(loc)) - var/mob/M = loc + if(ishuman(loc)) + var/mob/living/carbon/human/M = loc var/input = stripped_input(M, "What do you want your war cry to be? You will shout it when you hit someone in melee.", ,"", 50) if(input) war_cry = input @@ -381,48 +390,47 @@ M.GiveTarget(L) //Putting heads on spears -/obj/item/organ/external/head/attackby(var/obj/item/W, var/mob/living/user, params) - if(istype(W, /obj/item/twohanded/spear)) - to_chat(user, "You stick the head onto the spear and stand it upright on the ground.") - var/obj/structure/headspear/HS = new /obj/structure/headspear(user.loc) - var/matrix/M = matrix() - src.transform = M - user.drop_item() - src.loc = HS - var/image/IM = image(src.icon,src.icon_state) - IM.overlays = src.overlays.Copy() - HS.overlays += IM - qdel(W) - return - return ..() - -/obj/item/twohanded/spear/attackby(var/obj/item/I, var/mob/living/user) +/obj/item/twohanded/spear/attackby(obj/item/I, mob/living/user) if(istype(I, /obj/item/organ/external/head)) - to_chat(user, "You stick the head onto the spear and stand it upright on the ground.") - var/obj/structure/headspear/HS = new /obj/structure/headspear(user.loc) - var/matrix/M = matrix() - I.transform = M - usr.drop_item() - I.loc = HS - var/image/IM = image(I.icon,I.icon_state) - IM.overlays = I.overlays.Copy() - HS.overlays += IM - qdel(src) - return - return ..() + if(user.unEquip(src) && user.drop_item()) + to_chat(user, "You stick [I] onto the spear and stand it upright on the ground.") + var/obj/structure/headspear/HS = new /obj/structure/headspear(get_turf(src)) + var/matrix/M = matrix() + I.transform = M + var/image/IM = image(I.icon, I.icon_state) + IM.overlays = I.overlays.Copy() + HS.overlays += IM + I.forceMove(HS) + HS.mounted_head = I + forceMove(HS) + HS.contained_spear = src + else + return ..() /obj/structure/headspear name = "head on a spear" desc = "How barbaric." icon_state = "headspear" - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE + var/obj/item/organ/external/head/mounted_head = null + var/obj/item/twohanded/spear/contained_spear = null + +/obj/structure/headspear/Destroy() + QDEL_NULL(mounted_head) + QDEL_NULL(contained_spear) + return ..() /obj/structure/headspear/attack_hand(mob/living/user) - user.visible_message("[user] kicks over \the [src]!", "You kick down \the [src]!") - new /obj/item/twohanded/spear(user.loc) - for(var/obj/item/organ/external/head/H in src) - H.loc = user.loc + user.visible_message("[user] kicks over [src]!", "You kick down [src]!") + playsound(src, 'sound/weapons/Genhit.ogg', 50, 1) + var/turf/T = get_turf(src) + if(contained_spear) + contained_spear.forceMove(T) + contained_spear = null + if(mounted_head) + mounted_head.forceMove(T) + mounted_head = null qdel(src) /obj/item/twohanded/spear/kidan @@ -437,18 +445,18 @@ icon_state = "gchainsaw_off" flags = CONDUCT force = 13 - var/force_on = 21 + var/force_on = 24 w_class = WEIGHT_CLASS_HUGE throwforce = 13 throw_speed = 2 throw_range = 4 - materials = list(MAT_METAL=13000) + materials = list(MAT_METAL = 13000) origin_tech = "materials=3;engineering=4;combat=2" attack_verb = list("sawed", "cut", "hacked", "carved", "cleaved", "butchered", "felled", "timbered") hitsound = "swing_hit" - sharp = 1 + sharp = TRUE actions_types = list(/datum/action/item_action/startchainsaw) - var/on = 0 + var/on = FALSE /obj/item/twohanded/required/chainsaw/attack_self(mob/user) on = !on @@ -481,8 +489,8 @@ if(attack_type == PROJECTILE_ATTACK) owner.visible_message("Ranged attacks just make [owner] angrier!") playsound(src, pick('sound/weapons/bulletflyby.ogg','sound/weapons/bulletflyby2.ogg','sound/weapons/bulletflyby3.ogg'), 75, 1) - return 1 - return 0 + return TRUE + return FALSE ///CHAINSAW/// @@ -502,7 +510,7 @@ armour_penetration = 35 origin_tech = "materials=6;syndicate=4" attack_verb = list("sawed", "cut", "hacked", "carved", "cleaved", "butchered", "felled", "timbered") - sharp = 1 + sharp = TRUE /obj/item/twohanded/chainsaw/update_icon() if(wielded) @@ -510,7 +518,7 @@ else icon_state = "chainsaw0" -/obj/item/twohanded/chainsaw/attack(mob/target as mob, mob/living/user as mob) +/obj/item/twohanded/chainsaw/attack(mob/target, mob/living/user) if(wielded) playsound(loc, 'sound/weapons/chainsaw.ogg', 100, 1, -1) //incredibly loud; you ain't goin' for stealth with this thing. Credit to Lonemonk of Freesound for this sound. if(isrobot(target)) @@ -562,43 +570,41 @@ /obj/item/twohanded/singularityhammer/process() if(charged < 5) charged++ - return /obj/item/twohanded/singularityhammer/update_icon() //Currently only here to fuck with the on-mob icons. icon_state = "mjollnir[wielded]" - return -/obj/item/twohanded/singularityhammer/proc/vortex(var/turf/pull as turf, mob/wielder as mob) - for(var/atom/X in orange(5,pull)) - if(istype(X, /atom/movable)) - if(X == wielder) continue - if((X) &&(!X:anchored) && (!istype(X,/mob/living/carbon/human))) - step_towards(X,pull) - step_towards(X,pull) - step_towards(X,pull) - else if(istype(X,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = X - if(istype(H.shoes,/obj/item/clothing/shoes/magboots)) - var/obj/item/clothing/shoes/magboots/M = H.shoes - if(M.magpulse) - continue - H.apply_effect(1, WEAKEN, 0) - step_towards(H,pull) - step_towards(H,pull) - step_towards(H,pull) - return +/obj/item/twohanded/singularityhammer/proc/vortex(turf/pull, mob/wielder) + for(var/atom/movable/X in orange(5, pull)) + if(X == wielder) + continue + if((X) && (!X.anchored) && (!ishuman(X))) + step_towards(X, pull) + step_towards(X, pull) + step_towards(X, pull) + else if(ishuman(X)) + var/mob/living/carbon/human/H = X + if(istype(H.shoes, /obj/item/clothing/shoes/magboots)) + var/obj/item/clothing/shoes/magboots/M = H.shoes + if(M.magpulse) + continue + H.apply_effect(1, WEAKEN, 0) + step_towards(H, pull) + step_towards(H, pull) + step_towards(H, pull) -/obj/item/twohanded/singularityhammer/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity) - if(!proximity) return +/obj/item/twohanded/singularityhammer/afterattack(atom/A, mob/user, proximity) + if(!proximity) + return if(wielded) if(charged == 5) charged = 0 - if(istype(A, /mob/living/)) + if(isliving(A)) var/mob/living/Z = A - Z.take_organ_damage(20,0) + Z.take_organ_damage(20, 0) playsound(user, 'sound/weapons/marauder.ogg', 50, 1) var/turf/target = get_turf(A) - vortex(target,user) + vortex(target, user) /obj/item/twohanded/mjollnir name = "Mjolnir" @@ -615,37 +621,35 @@ //var/charged = 5 origin_tech = "combat=4;powerstorage=7" -/obj/item/twohanded/mjollnir/proc/shock(mob/living/target as mob) +/obj/item/twohanded/mjollnir/proc/shock(mob/living/target) var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread() s.set_up(5, 1, target.loc) s.start() - target.visible_message("[target.name] was shocked by the [src.name]!", \ + target.visible_message("[target.name] was shocked by the [name]!", \ "You feel a powerful shock course through your body sending you flying!", \ "You hear a heavy electrical crack!") var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src))) target.throw_at(throw_target, 200, 4) - return -/obj/item/twohanded/mjollnir/attack(mob/M as mob, mob/user as mob) +/obj/item/twohanded/mjollnir/attack(mob/M, mob/user) ..() if(wielded) //if(charged == 5) //charged = 0 - playsound(src.loc, "sparks", 50, 1) - if(istype(M, /mob/living)) + playsound(loc, "sparks", 50, 1) + if(isliving(M)) M.Stun(3) shock(M) /obj/item/twohanded/mjollnir/throw_impact(atom/target) . = ..() - if(istype(target, /mob/living)) + if(isliving(target)) var/mob/living/L = target L.Stun(3) shock(L) /obj/item/twohanded/mjollnir/update_icon() //Currently only here to fuck with the on-mob icons. icon_state = "mjollnir[wielded]" - return /obj/item/twohanded/knighthammer name = "singuloth knight's hammer" @@ -673,27 +677,26 @@ /obj/item/twohanded/knighthammer/process() if(charged < 5) charged++ - return /obj/item/twohanded/knighthammer/update_icon() //Currently only here to fuck with the on-mob icons. icon_state = "knighthammer[wielded]" - return -/obj/item/twohanded/knighthammer/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity) - if(!proximity) return +/obj/item/twohanded/knighthammer/afterattack(atom/A, mob/user, proximity) + if(!proximity) + return if(charged == 5) charged = 0 - if(istype(A, /mob/living/)) + if(isliving(A)) var/mob/living/Z = A if(Z.health >= 1) - Z.visible_message("[Z.name] was sent flying by a blow from the [src.name]!", \ + Z.visible_message("[Z.name] was sent flying by a blow from the [name]!", \ "You feel a powerful blow connect with your body and send you flying!", \ "You hear something heavy impact flesh!.") var/atom/throw_target = get_edge_target_turf(Z, get_dir(src, get_step_away(Z, src))) Z.throw_at(throw_target, 200, 4) playsound(user, 'sound/weapons/marauder.ogg', 50, 1) else if(wielded && Z.health < 1) - Z.visible_message("[Z.name] was blown to peices by the power of [src.name]!", \ + Z.visible_message("[Z.name] was blown to pieces by the power of [name]!", \ "You feel a powerful blow rip you apart!", \ "You hear a heavy impact and the sound of ripping flesh!.") Z.gib() @@ -704,7 +707,7 @@ Z.ex_act(2) charged = 3 playsound(user, 'sound/weapons/marauder.ogg', 50, 1) - else if(istype(A, /obj/structure) || istype(A, /obj/mecha/)) + else if(istype(A, /obj/structure) || istype(A, /obj/mecha)) var/obj/Z = A Z.ex_act(2) charged = 3 @@ -717,7 +720,7 @@ icon_state = "fireaxe0" force = 5 throwforce = 15 - sharp = 1 + sharp = TRUE w_class = WEIGHT_CLASS_HUGE armour_penetration = 20 slot_flags = SLOT_BACK @@ -737,12 +740,12 @@ if(!proximity) return if(wielded) - if(istype(A, /mob/living)) + if(isliving(A)) var/mob/living/Z = A if(charged) charged-- - Z.take_organ_damage(0,30) - user.visible_message("[user] slams the charged axe into [Z.name] with all their might!") + Z.take_organ_damage(0, 30) + user.visible_message("[user] slams the charged axe into [Z.name] with all [user.p_their()] might!") playsound(loc, 'sound/magic/lightningbolt.ogg', 5, 1) var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread sparks.set_up(1, 1, src) @@ -751,7 +754,7 @@ if(A && wielded && (istype(A, /obj/structure/window) || istype(A, /obj/structure/grille))) if(istype(A, /obj/structure/window)) var/obj/structure/window/W = A - W.destroy() + W.deconstruct(FALSE) if(prob(4)) charged++ user.visible_message("The axe starts to emit an electric buzz!") @@ -759,4 +762,4 @@ qdel(A) if(prob(4)) charged++ - user.visible_message("The axe starts to emit an electric buzz!") + user.visible_message("The axe starts to emit an electric buzz!") \ No newline at end of file diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index e3b50123638..1a5fe872251 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -12,7 +12,7 @@ /obj/item/banhammer/suicide_act(mob/user) - to_chat(viewers(user), "[user] is hitting \himself with the [src.name]! It looks like \he's trying to ban \himself from life.") + to_chat(viewers(user), "[user] is hitting [user.p_them()]self with the [src.name]! It looks like [user.p_theyre()] trying to ban [user.p_them()]self from life.") return (BRUTELOSS|FIRELOSS|TOXLOSS|OXYLOSS) /obj/item/sord @@ -28,7 +28,7 @@ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") /obj/item/sord/suicide_act(mob/user) - user.visible_message("[user] is trying to impale themself with [src]! It might be a suicide attempt if it weren't so shitty.", \ + user.visible_message("[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so shitty.", \ "You try to impale yourself with [src], but it's USELESS...") return SHAME @@ -48,7 +48,7 @@ block_chance = 50 /obj/item/claymore/suicide_act(mob/user) - user.visible_message("[user] is falling on the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is falling on the [name]! It looks like [user.p_theyre()] trying to commit suicide.") return(BRUTELOSS) /obj/item/claymore/ceremonial @@ -75,7 +75,7 @@ slot_flags = null /obj/item/katana/suicide_act(mob/user) - user.visible_message("[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.") + user.visible_message("[user] is slitting [user.p_their()] stomach open with [src]! It looks like [user.p_theyre()] trying to commit seppuku.") return(BRUTELOSS) /obj/item/harpoon @@ -179,7 +179,7 @@ obj/item/wirerod/attackby(obj/item/I, mob/user, params) return to_chat(user, "You begin gathering strength...") playsound(get_turf(src), 'sound/magic/lightning_chargeup.ogg', 65, 1) - if(do_after(user, 90, target = src)) + if(do_after(user, 90, target = user)) to_chat(user, "You gather power! Time for a home run!") homerun_ready = 1 ..() diff --git a/code/game/objects/items/weapons/whetstone.dm b/code/game/objects/items/weapons/whetstone.dm index c6a27267d10..6cbc2e0e972 100644 --- a/code/game/objects/items/weapons/whetstone.dm +++ b/code/game/objects/items/weapons/whetstone.dm @@ -54,7 +54,7 @@ var/mob/living/carbon/human/H = user var/datum/unarmed_attack/attack = H.species.unarmed if(istype(attack, /datum/unarmed_attack/claws)) - H.visible_message("[H] sharpens \his claws on the [src]!", "You sharpen your claws on the [src].") + H.visible_message("[H] sharpens [H.p_their()] claws on the [src]!", "You sharpen your claws on the [src].") playsound(get_turf(H), usesound, 50, 1) /obj/item/whetstone/super diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index fcd233318d5..d31338dfe06 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -71,6 +71,22 @@ visible_message("[src] is hit by \a [P]!") take_damage(P.damage, P.damage_type, P.flag, 0, turn(P.dir, 180), P.armour_penetration) +/obj/proc/hulk_damage() + return 150 //the damage hulks do on punches to this object, is affected by melee armor + +/obj/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + ..(user, TRUE) + visible_message("[user] smashes [src]!") + if(density) + playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1) + user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) + else + playsound(src, 'sound/effects/bang.ogg', 50, 1) + take_damage(hulk_damage(), BRUTE, "melee", 0, get_dir(src, user)) + return TRUE + return FALSE + /obj/blob_act(obj/structure/blob/B) if(isturf(loc)) var/turf/T = loc diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm index 76deeac93e8..1738344ae60 100644 --- a/code/game/objects/structures/aliens.dm +++ b/code/game/objects/structures/aliens.dm @@ -13,6 +13,27 @@ /obj/structure/alien icon = 'icons/mob/alien.dmi' + max_integrity = 100 + +/obj/structure/alien/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) + if(damage_flag == "melee") + switch(damage_type) + if(BRUTE) + damage_amount *= 0.25 + if(BURN) + damage_amount *= 2 + . = ..() + +/obj/structure/alien/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + switch(damage_type) + if(BRUTE) + if(damage_amount) + playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) + else + playsound(src, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(damage_amount) + playsound(loc, 'sound/items/welder.ogg', 100, 1) /* * Resin @@ -22,13 +43,13 @@ desc = "Looks like some kind of thick resin." icon = 'icons/obj/smooth_structures/alien/resin_wall.dmi' icon_state = "resin" - density = 1 - opacity = 1 - anchored = 1 + density = TRUE + opacity = TRUE + anchored = TRUE canSmoothWith = list(/obj/structure/alien/resin) - var/health = 200 - var/resintype = null + max_integrity = 200 smooth = SMOOTH_TRUE + var/resintype = null /obj/structure/alien/resin/Initialize() air_update_turf(1) @@ -60,7 +81,7 @@ /obj/structure/alien/resin/wall/shadowling //For chrysalis name = "chrysalis wall" desc = "Some sort of purple substance in an egglike shape. It pulses and throbs from within and seems impenetrable." - health = INFINITY + max_integrity = INFINITY /obj/structure/alien/resin/membrane name = "resin membrane" @@ -68,80 +89,11 @@ icon = 'icons/obj/smooth_structures/alien/resin_membrane.dmi' icon_state = "membrane0" opacity = 0 - health = 120 + max_integrity = 160 resintype = "membrane" canSmoothWith = list(/obj/structure/alien/resin/wall, /obj/structure/alien/resin/membrane) -/obj/structure/alien/resin/proc/healthcheck() - if(health <=0) - qdel(src) - - -/obj/structure/alien/resin/bullet_act(obj/item/projectile/Proj) - if(Proj.damage_type == BRUTE || Proj.damage_type == BURN) - health -= Proj.damage - ..() - healthcheck() - - -/obj/structure/alien/resin/ex_act(severity) - switch(severity) - if(1) - health -= 150 - if(2) - health -= 100 - if(3) - health -= 50 - healthcheck() - - -/obj/structure/alien/resin/blob_act() - health -= 50 - healthcheck() - - -/obj/structure/alien/resin/hitby(atom/movable/AM) - ..() - var/tforce = 0 - if(ismob(AM)) - tforce = 10 - else if(isobj(AM)) - var/obj/O = AM - tforce = O.throwforce - playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) - health -= tforce - healthcheck() - -/obj/structure/alien/resin/attack_hand(mob/living/user) - if(HULK in user.mutations) - user.do_attack_animation(src) - user.visible_message("[user] destroys [src]!") - health = 0 - healthcheck() - - -/obj/structure/alien/resin/attack_alien(mob/living/user) - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - if(islarva(user)) - return - user.visible_message("[user] claws at the resin!") - playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) - health -= 50 - if(health <= 0) - user.visible_message("[user] slices the [name] apart!") - healthcheck() - - -/obj/structure/alien/resin/attackby(obj/item/I, mob/living/user, params) - user.changeNext_move(CLICK_CD_MELEE) - health -= I.force - playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) - healthcheck() - ..() - - -/obj/structure/alien/resin/CanPass(atom/movable/mover, turf/target, height=0) +/obj/structure/alien/resin/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSGLASS)) return !opacity return !density @@ -157,11 +109,11 @@ gender = PLURAL name = "resin floor" desc = "A thick resin surface covers the floor." + anchored = TRUE + density = FALSE + layer = TURF_LAYER icon_state = "weeds" - anchored = 1 - density = 0 - layer = 2 - var/health = 15 + max_integrity = 15 var/obj/structure/alien/weeds/node/linked_node = null var/static/list/weedImageCache @@ -204,39 +156,9 @@ new /obj/structure/alien/weeds(T, linked_node) - -/obj/structure/alien/weeds/ex_act(severity) - qdel(src) - - -/obj/structure/alien/weeds/attackby(obj/item/I, mob/user, params) - user.changeNext_move(CLICK_CD_MELEE) - if(I.attack_verb.len) - visible_message("[user] has [pick(I.attack_verb)] [src] with [I]!") - else - visible_message("[user] has attacked [src] with [I]!") - - var/damage = I.force / 4 - if(istype(I, /obj/item/weldingtool)) - var/obj/item/weldingtool/WT = I - if(WT.remove_fuel(0, user)) - damage = 15 - playsound(loc, WT.usesound, 100, 1) - - health -= damage - healthcheck() - - -/obj/structure/alien/weeds/proc/healthcheck() - if(health <= 0) - qdel(src) - - /obj/structure/alien/weeds/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) - health -= 5 - healthcheck() - + take_damage(5, BURN, 0, 0) /obj/structure/alien/weeds/proc/updateWeedOverlays() @@ -303,9 +225,10 @@ name = "egg" desc = "A large mottled egg." icon_state = "egg_growing" - density = 0 - anchored = 1 - var/health = 100 + density = FALSE + anchored = TRUE + max_integrity = 100 + integrity_failure = 5 var/status = GROWING //can be GROWING, GROWN or BURST; all mutually exclusive layer = MOB_LAYER @@ -315,6 +238,8 @@ ..() spawn(rand(MIN_GROWTH_TIME, MAX_GROWTH_TIME)) Grow() + if(status == BURST) + obj_integrity = integrity_failure /obj/structure/alien/egg/attack_alien(mob/living/carbon/alien/user) return attack_hand(user) @@ -346,7 +271,7 @@ icon_state = "egg" status = GROWN -/obj/structure/alien/egg/proc/Burst(kill = 1) //drops and kills the hugger if any is remaining +/obj/structure/alien/egg/proc/Burst(kill = TRUE) //drops and kills the hugger if any is remaining if(status == GROWN || status == GROWING) icon_state = "egg_hatched" flick("egg_opening", src) @@ -364,45 +289,13 @@ child.Attach(M) break -/obj/structure/alien/egg/bullet_act(obj/item/projectile/Proj) - if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) - health -= Proj.damage - ..() - healthcheck() - - -/obj/structure/alien/egg/attackby(obj/item/I, mob/user, params) - if(I.attack_verb.len) - visible_message("[user] has [pick(I.attack_verb)] [src] with [I]!") - else - visible_message("[user] has attacked [src] with [I]!") - - var/damage = I.force / 4 - if(istype(I, /obj/item/weldingtool)) - var/obj/item/weldingtool/WT = I - - if(WT.remove_fuel(0, user)) - damage = 15 - playsound(loc, WT.usesound, 100, 1) - - health -= damage - user.changeNext_move(CLICK_CD_MELEE) - healthcheck() - - -/obj/structure/alien/egg/proc/healthcheck() - if(health <= 0) - if(status != BURST && status != BURSTING) - Burst() - else if(status == BURST && prob(50)) - qdel(src) //Remove the egg after it has been hit after bursting. - +/obj/structure/alien/egg/obj_break(damage_flag) + if(status != BURST) + Burst(kill = TRUE) /obj/structure/alien/egg/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 500) - health -= 5 - healthcheck() - + take_damage(5, BURN, 0, 0) /obj/structure/alien/egg/HasProximity(atom/movable/AM) if(status == GROWN) diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm index 37ab3977755..19e08c15bde 100644 --- a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm +++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm @@ -10,6 +10,7 @@ burntime = 20 sound = 'sound/effects/rustle2.ogg' material_drop = /obj/item/stack/sheet/cardboard + var/amt = 4 cutting_sound = 'sound/items/poster_ripped.ogg' var/move_delay = 0 var/egged = 0 @@ -60,7 +61,7 @@ return if(istype(W, /obj/item/wirecutters)) var/obj/item/wirecutters/WC = W - new /obj/item/stack/sheet/cardboard(src.loc) + new /obj/item/stack/sheet/cardboard(src.loc, amt) for(var/mob/M in viewers(src)) M.show_message("\The [src] has been cut apart by [user] with \the [WC].", 3, "You hear cutting.", 2) qdel(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 32872e07f12..6548aa8bfca 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -30,8 +30,8 @@ new /obj/item/clothing/suit/storage/hazardvest(src) new /obj/item/clothing/mask/gas(src) new /obj/item/multitool(src) + new /obj/item/holosign_creator/engineering(src) new /obj/item/flash(src) - new /obj/item/taperoll/engineering(src) new /obj/item/clothing/head/beret/eng(src) new /obj/item/door_remote/chief_engineer(src) new /obj/item/rpd(src) @@ -102,6 +102,7 @@ new /obj/item/storage/backpack/satchel_eng(src) new /obj/item/storage/backpack/duffel/engineering(src) new /obj/item/storage/toolbox/mechanical(src) + new /obj/item/holosign_creator/engineering(src) new /obj/item/radio/headset/headset_eng(src) new /obj/item/clothing/under/rank/engineer(src) new /obj/item/clothing/under/rank/engineer/skirt(src) @@ -109,7 +110,6 @@ new /obj/item/clothing/mask/gas(src) new /obj/item/clothing/glasses/meson(src) new /obj/item/cartridge/engineering(src) - new /obj/item/taperoll/engineering(src) new /obj/item/clothing/head/beret/eng(src) @@ -128,7 +128,6 @@ new /obj/item/radio/headset/headset_eng(src) new /obj/item/cartridge/atmos(src) new /obj/item/storage/toolbox/mechanical(src) - new /obj/item/taperoll/engineering(src) if(prob(50)) new /obj/item/storage/backpack/industrial(src) else @@ -138,6 +137,7 @@ new /obj/item/clothing/suit/storage/hazardvest(src) new /obj/item/clothing/mask/gas(src) new /obj/item/tank/emergency_oxygen/engi(src) + new /obj/item/holosign_creator/atmos(src) new /obj/item/watertank/atmos(src) new /obj/item/clothing/suit/fire/atmos(src) new /obj/item/clothing/head/hardhat/atmos(src) 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 e5c7c2b27fb..551a8b30d9d 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -262,6 +262,7 @@ new /obj/item/sensor_device(src) new /obj/item/key/ambulance(src) new /obj/item/pinpointer/crew(src) + new /obj/item/clothing/shoes/magboots(src) /obj/structure/closet/secure_closet/reagents name = "chemical storage closet" 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 05a3fa5c7ba..2a5639eb081 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -115,11 +115,11 @@ new /obj/item/clothing/glasses/hud/security/sunglasses(src) new /obj/item/storage/lockbox/mindshield(src) new /obj/item/storage/box/flashbangs(src) + new /obj/item/holosign_creator/security(src) new /obj/item/clothing/mask/gas/sechailer/hos(src) new /obj/item/shield/riot/tele(src) new /obj/item/melee/baton/loaded(src) new /obj/item/storage/belt/security/sec(src) - new /obj/item/taperoll/police(src) new /obj/item/gun/energy/gun/hos(src) new /obj/item/door_remote/head_of_security(src) new /obj/item/reagent_containers/food/drinks/mug/hos(src) @@ -151,8 +151,8 @@ new /obj/item/clothing/under/rank/warden/corp(src) new /obj/item/clothing/under/rank/warden/skirt(src) new /obj/item/clothing/glasses/hud/security/sunglasses(src) + new /obj/item/holosign_creator/security(src) new /obj/item/clothing/mask/gas/sechailer/warden(src) - new /obj/item/taperoll/police(src) new /obj/item/storage/box/zipties(src) new /obj/item/storage/box/flashbangs(src) new /obj/item/reagent_containers/spray/pepper(src) @@ -186,11 +186,11 @@ new /obj/item/flash(src) new /obj/item/grenade/flashbang(src) new /obj/item/storage/belt/security/sec(src) + new /obj/item/holosign_creator/security(src) new /obj/item/clothing/mask/gas/sechailer(src) new /obj/item/clothing/glasses/hud/security/sunglasses(src) new /obj/item/clothing/head/helmet(src) new /obj/item/melee/baton/loaded(src) - new /obj/item/taperoll/police(src) /obj/structure/closet/secure_closet/brigdoc @@ -344,10 +344,10 @@ new /obj/item/ammo_box/c38(src) new /obj/item/ammo_box/c38(src) new /obj/item/gun/projectile/revolver/detective(src) - new /obj/item/taperoll/police(src) new /obj/item/clothing/accessory/holster/armpit(src) new /obj/item/clothing/glasses/sunglasses/yeah(src) new /obj/item/flashlight/seclite(src) + new /obj/item/holosign_creator/security(src) new /obj/item/clothing/accessory/black(src) new /obj/item/taperecorder(src) new /obj/item/storage/box/tapes(src) diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index f888ee6cc94..3b174480ce8 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -295,7 +295,7 @@ var/global/list/captain_display_cases = list() else if(user.a_intent == INTENT_HARM) user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) + user.do_attack_animation(src, ATTACK_EFFECT_KICK) user.visible_message("[user.name] kicks \the [src]!", \ "You kick \the [src]!", \ "You hear glass crack.") @@ -321,7 +321,7 @@ var/global/list/captain_display_cases = list() to_chat(src, "[bicon(src)] \The [src] is empty!") else user.changeNext_move(CLICK_CD_MELEE) - user.visible_message("[user.name] gently runs \his hands over [src] in appreciation of its contents.", \ + user.visible_message("[user.name] gently runs [user.p_their()] hands over [src] in appreciation of its contents.", \ "You gently run your hands over [src] in appreciation of its contents.", \ "You hear someone streaking glass with their greasy hands.") diff --git a/code/game/objects/structures/engicart.dm b/code/game/objects/structures/engicart.dm index cf6a8e65715..a005e59c5a5 100644 --- a/code/game/objects/structures/engicart.dm +++ b/code/game/objects/structures/engicart.dm @@ -12,7 +12,6 @@ var/obj/item/storage/toolbox/mechanical/mybluetoolbox = null var/obj/item/storage/toolbox/electrical/myyellowtoolbox = null var/obj/item/storage/toolbox/emergency/myredtoolbox = null - var/obj/item/taperoll/engineering/myengitape = null /obj/structure/engineeringcart/Destroy() QDEL_NULL(myglass) @@ -22,7 +21,6 @@ QDEL_NULL(mybluetoolbox) QDEL_NULL(myyellowtoolbox) QDEL_NULL(myredtoolbox) - QDEL_NULL(myengitape) return ..() /obj/structure/engineeringcart/proc/put_in_cart(obj/item/I, mob/user) @@ -83,13 +81,6 @@ update_icon() else to_chat(user, fail_msg) - else if(istype(I, /obj/item/taperoll/engineering/)) - if(!myengitape) - put_in_cart(I, user) - myengitape=I - update_icon() - else - to_chat(user, fail_msg) else if(istype(I, /obj/item/wrench)) if(!anchored && !isinspace()) playsound(src.loc, I.usesound, 50, 1) @@ -125,8 +116,6 @@ dat += "[myredtoolbox.name]
" if(myyellowtoolbox) dat += "[myyellowtoolbox.name]
" - if(myengitape) - dat += "[myengitape.name]
" var/datum/browser/popup = new(user, "engicart", name, 240, 160) popup.set_content(dat) popup.open() @@ -171,16 +160,12 @@ user.put_in_hands(myyellowtoolbox) to_chat(user, "You take [myyellowtoolbox] from [src].") myyellowtoolbox = null - if(href_list["engitape"]) - if(myengitape) - user.put_in_hands(myengitape) - to_chat(user, "You take [myengitape] from [src].") - myengitape = null update_icon() updateUsrDialog() + /obj/structure/engineeringcart/update_icon() - overlays = null + overlays.Cut() if(myglass) overlays += "cart_glass" if(mymetal) @@ -194,6 +179,4 @@ if(myredtoolbox) overlays += "cart_redtoolbox" if(myyellowtoolbox) - overlays += "cart_yellowtoolbox" - if(myengitape) - overlays += "cart_engitape" + overlays += "cart_yellowtoolbox" \ No newline at end of file diff --git a/code/game/objects/structures/fullwindow.dm b/code/game/objects/structures/fullwindow.dm deleted file mode 100644 index eec957c2d52..00000000000 --- a/code/game/objects/structures/fullwindow.dm +++ /dev/null @@ -1,116 +0,0 @@ -/obj/structure/window/full - sheets = 2 - dir=SOUTHWEST - level = 3 - -/obj/structure/window/full/CheckExit(atom/movable/O as mob|obj, target as turf) - return 1 - -/obj/structure/window/full/CanPass(atom/movable/mover, turf/target, height=0) - if(istype(mover) && mover.checkpass(PASSGLASS)) - return 1 - return 0 - -/obj/structure/window/full/is_fulltile() - return 1 - -//merges adjacent full-tile windows into one (blatant ripoff from game/smoothwall.dm) -/obj/structure/window/full/update_icon() - //A little cludge here, since I don't know how it will work with slim windows. Most likely VERY wrong. - //this way it will only update full-tile ones - //This spawn is here so windows get properly updated when one gets deleted. - spawn(2) - if(!src) return - if(!is_fulltile()) - return - var/junction = 0 //will be used to determine from which side the window is connected to other windows - if(anchored) - for(var/obj/structure/window/full/W in orange(src,1)) - if(W.anchored && W.density) //Only counts anchored, not-destroyed full-tile windows. - if(abs(x-W.x)-abs(y-W.y) ) //doesn't count windows, placed diagonally to src - junction |= get_dir(src,W) - icon_state = "[basestate][junction]" - return - -/obj/structure/window/full/basic - desc = "It looks thin and flimsy. A few knocks with... anything, really should shatter it." - icon_state = "window" - basestate = "window" - -/obj/structure/window/full/plasmabasic - name = "plasma window" - desc = "A plasma-glass alloy window. It looks insanely tough to break. It appears it's also insanely tough to burn through." - basestate = "plasmawindow" - icon_state = "plasmawindow" - shardtype = /obj/item/shard/plasma - glasstype = /obj/item/stack/sheet/plasmaglass - health = 240 - -/obj/structure/window/full/plasmabasic/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(exposed_temperature > T0C + 32000) - hit(round(exposed_volume / 1000), 0) - ..() - -/obj/structure/window/full/plasmareinforced - name = "reinforced plasma window" - desc = "A plasma-glass alloy window, with rods supporting it. It looks hopelessly tough to break. It also looks completely fireproof, considering how basic plasma windows are insanely fireproof." - basestate = "plasmarwindow" - icon_state = "plasmarwindow" - shardtype = /obj/item/shard/plasma - glasstype = /obj/item/stack/sheet/plasmaglass - reinf = 1 - health = 320 - -/obj/structure/window/full/plasmareinforced/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) - return - -/obj/structure/window/full/reinforced - name = "reinforced window" - desc = "It looks rather strong. Might take a few good hits to shatter it." - icon_state = "rwindow" - basestate = "rwindow" - health = 80 - reinf = 1 - -/obj/structure/window/full/reinforced/tinted - name = "tinted window" - desc = "It looks rather strong and opaque. Might take a few good hits to shatter it." - icon_state = "twindow" - basestate = "twindow" - opacity = 1 - -/obj/structure/window/full/reinforced/tinted/frosted - name = "frosted window" - desc = "It looks rather strong and frosted over. Looks like it might take a few less hits then a normal reinforced window." - icon_state = "fwindow" - basestate = "fwindow" - health = 60 - -/obj/structure/window/full/shuttle - name = "shuttle window" - desc = "It looks rather strong. Might take a few good hits to shatter it." - icon = 'icons/obj/podwindows.dmi' - icon_state = "window" - basestate = "window" - health = 160 - reinf = 1 - explosion_block = 3 - armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100) - -/obj/structure/window/full/shuttle/New() - ..() - color = null - -/obj/structure/window/full/shuttle/update_icon() //icon_state has to be set manually - return - -/obj/structure/window/full/shuttle/shuttleRotate(rotation) - ..() - var/matrix/M = transform - M.Turn(rotation) - transform = M - -/obj/structure/window/full/shuttle/dark - icon = 'icons/turf/shuttle.dmi' - icon_state = "window5" - basestate = "window5" \ No newline at end of file diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index d5dccaf0d03..b8ef71bd9c8 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -69,18 +69,23 @@ if(ismob(user)) shock(user, 70) -/obj/structure/grille/attack_hand(mob/living/user) - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - user.visible_message("[user] kicks [src].", \ - "You kick [src].", \ - "You hear twisting metal.") +/obj/structure/grille/hulk_damage() + return 60 - if(shock(user, 70)) +/obj/structure/grille/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + if(!shock(user, 70)) + ..(user, TRUE) + return TRUE + +/obj/structure/grille/attack_hand(mob/living/user) + . = ..() + if(.) return - if(HULK in user.mutations) - take_damage(60, BRUTE, "melee", 1) - else + user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(src, ATTACK_EFFECT_KICK) + user.visible_message("[user] hits [src].") + if(!shock(user, 70)) take_damage(rand(5,10), BRUTE, "melee", 1) /obj/structure/grille/attack_alien(mob/living/user) @@ -137,7 +142,7 @@ return //window placing begin - else if(istype(W,/obj/item/stack/sheet/rglass) || istype(W,/obj/item/stack/sheet/glass) || istype(W,/obj/item/stack/sheet/plasmaglass) || istype(W,/obj/item/stack/sheet/plasmarglass)) + else if(is_glass_sheet(W)) build_window(W, user) return //window placing end @@ -190,10 +195,10 @@ S.use(1) W.setDir(dir_to_set) W.ini_dir = dir_to_set - W.anchored = 0 - W.state = 0 + W.anchored = FALSE + W.state = WINDOW_OUT_OF_FRAME to_chat(user, "You place the [W] on [src].") - W.update_icon() + W.update_nearby_icons() return /obj/structure/grille/attacked_by(obj/item/I, mob/living/user) diff --git a/code/game/objects/structures/guillotine.dm b/code/game/objects/structures/guillotine.dm index 0de1a09a74c..3c4875978a2 100644 --- a/code/game/objects/structures/guillotine.dm +++ b/code/game/objects/structures/guillotine.dm @@ -203,7 +203,7 @@ return FALSE if(!ishuman(M)) - to_chat(usr, "It doesn't look like they can fit into this properly!") + to_chat(usr, "It doesn't look like [M.p_they()] can fit into this properly!") return FALSE // Can't decapitate non-humans if(blade_status != GUILLOTINE_BLADE_RAISED) diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm new file mode 100644 index 00000000000..0b730a539b9 --- /dev/null +++ b/code/game/objects/structures/holosign.dm @@ -0,0 +1,135 @@ + +//holographic signs and barriers + +/obj/structure/holosign + name = "holo sign" + icon = 'icons/effects/effects.dmi' + anchored = TRUE + max_integrity = 1 + armor = list("melee" = 0, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 0, "bio" = 0, "rad" = 0) + var/obj/item/holosign_creator/projector + +/obj/structure/holosign/New(loc, source_projector) + if(source_projector) + projector = source_projector + projector.signs += src + ..() + +/obj/structure/holosign/Destroy() + if(projector) + projector.signs -= src + projector = null + return ..() + +/obj/structure/holosign/attack_hand(mob/living/user) + . = ..() + if(.) + return + user.do_attack_animation(src) + user.changeNext_move(CLICK_CD_MELEE) + take_damage(5 , BRUTE, "melee", 1) + +/obj/structure/holosign/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + switch(damage_type) + if(BRUTE) + playsound(loc, 'sound/weapons/egloves.ogg', 80, 1) + if(BURN) + playsound(loc, 'sound/weapons/egloves.ogg', 80, 1) + +/obj/structure/holosign/wetsign + name = "wet floor sign" + desc = "The words flicker as if they mean nothing." + icon_state = "holosign" + +/obj/structure/holosign/barrier + name = "holo barrier" + desc = "A short holographic barrier which can only be passed by walking." + icon_state = "holosign_sec" + pass_flags = LETPASSTHROW + density = TRUE + max_integrity = 20 + var/allow_walk = TRUE //can we pass through it on walk intent + +/obj/structure/holosign/barrier/CanPass(atom/movable/mover, turf/target) + if(!density) + return TRUE + if(mover.pass_flags & (PASSGLASS|PASSTABLE|PASSGRILLE)) + return TRUE + if(iscarbon(mover)) + var/mob/living/carbon/C = mover + if(allow_walk && C.m_intent == MOVE_INTENT_WALK) + return TRUE + +/obj/structure/holosign/barrier/engineering + icon_state = "holosign_engi" + +/obj/structure/holosign/barrier/atmos + name = "holo firelock" + desc = "A holographic barrier resembling a firelock. Though it does not prevent solid objects from passing through, gas is kept out." + icon_state = "holo_firelock" + density = FALSE + layer = ABOVE_MOB_LAYER + anchored = TRUE + layer = ABOVE_MOB_LAYER + alpha = 150 + +/obj/structure/holosign/barrier/atmos/New() + ..() + air_update_turf(TRUE) + +/obj/structure/holosign/barrier/atmos/CanAtmosPass(turf/T) + return FALSE + +/obj/structure/holosign/barrier/atmos/Destroy() + var/turf/T = get_turf(src) + T.air_update_turf(TRUE) + return ..() + +/obj/structure/holosign/barrier/cyborg + name = "Energy Field" + desc = "A fragile energy field that blocks movement. Excels at blocking lethal projectiles." + density = TRUE + max_integrity = 10 + allow_walk = FALSE + +/obj/structure/holosign/barrier/cyborg/bullet_act(obj/item/projectile/P) + take_damage((P.damage / 5) , BRUTE, "melee", 1) //Doesn't really matter what damage flag it is. + if(istype(P, /obj/item/projectile/energy/electrode)) + take_damage(10, BRUTE, "melee", 1) //Tasers aren't harmful. + if(istype(P, /obj/item/projectile/beam/disabler)) + take_damage(5, BRUTE, "melee", 1) //Disablers aren't harmful. + +/obj/structure/holosign/barrier/cyborg/hacked + name = "Charged Energy Field" + desc = "A powerful energy field that blocks movement. Energy arcs off it." + max_integrity = 20 + var/shockcd = 0 + +/obj/structure/holosign/barrier/cyborg/hacked/bullet_act(obj/item/projectile/P) + take_damage(P.damage, BRUTE, "melee", 1) //Yeah no this doesn't get projectile resistance. + +/obj/structure/holosign/barrier/cyborg/hacked/proc/cooldown() + shockcd = FALSE + +/obj/structure/holosign/barrier/cyborg/hacked/attack_hand(mob/living/user) + . = ..() + if(.) + return + if(!shockcd) + if(ismob(user)) + var/mob/living/M = user + M.electrocute_act(15,"Energy Barrier", safety=1) + shockcd = TRUE + addtimer(CALLBACK(src, .proc/cooldown), 5) + +/obj/structure/holosign/barrier/cyborg/hacked/Bumped(atom/movable/AM) + if(shockcd) + return + + if(!isliving(AM)) + return + + var/mob/living/M = AM + M.electrocute_act(15, "Energy Barrier", safety = 1) + shockcd = TRUE + addtimer(CALLBACK(src, .proc/cooldown), 5) diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 32ceefbd834..4a1ecdb08d7 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -186,7 +186,7 @@ buildstackamount = 1 /obj/structure/stool/bed/chair/sofa - name = "old ratty sofa" + name = "sofa" icon_state = "sofamiddle" anchored = 1 buildstackamount = 1 diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 367be27b6dc..91f348d0106 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -83,14 +83,7 @@ qdel(src) /obj/structure/table/attack_hand(mob/living/user) - if(HULK in user.mutations) - user.do_attack_animation(src) - visible_message("[user] smashes [src] apart!") - playsound(loc, 'sound/effects/bang.ogg', 50, 1) - user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - deconstruct(FALSE) - else - ..() + ..() if(climber) climber.Weaken(2) climber.visible_message("[climber.name] has been knocked off the table", "You've been knocked off the table", "You see [climber.name] get knocked off the table") @@ -616,7 +609,7 @@ if(user.weakened || user.resting || user.lying) return user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) + user.do_attack_animation(src, ATTACK_EFFECT_KICK) user.visible_message("[user] kicks [src].", \ "You kick [src].") take_damage(rand(4,8), BRUTE, "melee", 1) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 3ea23108662..179615dada3 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -548,7 +548,7 @@ var/washing_face = 0 if(selected_area in list("head", "mouth", "eyes")) washing_face = 1 - user.visible_message("[user] starts washing their [washing_face ? "face" : "hands"]...", \ + user.visible_message("[user] starts washing [user.p_their()] [washing_face ? "face" : "hands"]...", \ "You start washing your [washing_face ? "face" : "hands"]...") busy = 1 @@ -558,7 +558,7 @@ busy = 0 - user.visible_message("[user] washes their [washing_face ? "face" : "hands"] using [src].", \ + user.visible_message("[user] washes [user.p_their()] [washing_face ? "face" : "hands"] using [src].", \ "You wash your [washing_face ? "face" : "hands"] using [src].") if(washing_face) if(ishuman(user)) diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index dcf89008416..72469e2ebfb 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -27,6 +27,10 @@ var/secure = FALSE //Whether or not this creates a secure windoor var/state = "01" //How far the door assembly has progressed +/obj/structure/windoor_assembly/examine(mob/user) + ..() + to_chat(user, "Alt-click to rotate it clockwise.") + obj/structure/windoor_assembly/New(loc, set_dir) ..() if(set_dir) @@ -42,7 +46,7 @@ obj/structure/windoor_assembly/Destroy() /obj/structure/windoor_assembly/Move() var/turf/T = loc - . = ..() + ..() setDir(ini_dir) move_update_air(T) @@ -54,8 +58,17 @@ obj/structure/windoor_assembly/Destroy() return 1 if(get_dir(loc, target) == dir) //Make sure looking at appropriate border return !density - else - return 1 + if(istype(mover, /obj/structure/window)) + var/obj/structure/window/W = mover + if(!valid_window_location(loc, W.ini_dir)) + return FALSE + else if(istype(mover, /obj/structure/windoor_assembly)) + var/obj/structure/windoor_assembly/W = mover + if(!valid_window_location(loc, W.ini_dir)) + return FALSE + else if(istype(mover, /obj/machinery/door/window) && !valid_window_location(loc, mover.dir)) + return FALSE + return 1 /obj/structure/windoor_assembly/CanAtmosPass(turf/T) if(get_dir(loc, T) == dir) @@ -317,9 +330,16 @@ obj/structure/windoor_assembly/Destroy() if(usr.stat || !usr.canmove || usr.restrained()) return if(anchored) - to_chat(usr, "It is fastened to the floor; therefore, you can't rotate it!") - return 0 - setDir(turn(dir, 270)) + to_chat(usr, "[src] cannot be rotated while it is fastened to the floor!") + return FALSE + var/target_dir = turn(dir, 270) + + if(!valid_window_location(loc, target_dir)) + to_chat(usr, "[src] cannot be rotated in that direction!") + return FALSE + + setDir(target_dir) + ini_dir = dir update_icon() return TRUE diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index aebd111ad26..8a30f18f7bd 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -2,13 +2,14 @@ var/global/wcBar = pick(list("#0d8395", "#58b5c3", "#58c366", "#90d79a", "#fffff var/global/wcBrig = pick(list("#aa0808", "#7f0606", "#ff0000")) var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8fcf44", "#ffffff")) -/obj/proc/color_windows(var/obj/W as obj) +/obj/proc/color_windows(obj/W) var/list/wcBarAreas = list(/area/crew_quarters/bar) var/list/wcBrigAreas = list(/area/security,/area/prison,/area/shuttle/gamma) var/newcolor var/turf/T = get_turf(W) - if(!istype(T)) return + if(!istype(T)) + return var/area/A = T.loc if(is_type_in_list(A,wcBarAreas)) @@ -23,168 +24,207 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f /obj/structure/window name = "window" desc = "A window." - icon = 'icons/obj/structures.dmi' - density = 1 - layer = 3.2//Just above doors + icon_state = "window" + density = TRUE + layer = ABOVE_OBJ_LAYER //Just above doors pressure_resistance = 4*ONE_ATMOSPHERE - anchored = 1.0 + anchored = TRUE flags = ON_BORDER - var/health = 14.0 + can_be_unanchored = TRUE + max_integrity = 25 var/ini_dir = null - var/state = 2 - var/reinf = 0 - var/basestate + var/state = WINDOW_OUT_OF_FRAME + var/reinf = FALSE + var/heat_resistance = 800 + var/decon_speed = null + var/fulltile = FALSE var/shardtype = /obj/item/shard - var/glasstype = /obj/item/stack/sheet/glass - var/disassembled = 0 - var/sheets = 1 // Number of sheets needed to build this window (determines how much shit is spawned by destroy()) -// var/silicate = 0 // number of units of silicate -// var/icon/silicateIcon = null // the silicated icon + var/glass_type = /obj/item/stack/sheet/glass + var/glass_amount = 1 + var/cancolor = FALSE + var/image/crack_overlay + var/list/debris = list() + var/real_explosion_block //ignore this, just use explosion_block + var/breaksound = "shatter" + var/hitsound = 'sound/effects/Glasshit.ogg' -/obj/structure/window/bullet_act(var/obj/item/projectile/Proj) - if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) - health -= Proj.damage - air_update_turf(1) +/obj/structure/window/examine(mob/user) ..() - if(health <= 0) - destroy() - return + if(reinf) + if(anchored && state == WINDOW_SCREWED_TO_FRAME) + to_chat(user, "The window is screwed to the frame.") + else if(anchored && state == WINDOW_IN_FRAME) + to_chat(user, "The window is unscrewed but pried into the frame.") + else if(anchored && state == WINDOW_OUT_OF_FRAME) + to_chat(user, "The window is out of the frame, but could be pried in. It is screwed to the floor.") + else if(!anchored) + to_chat(user, "The window is unscrewed from the floor, and could be deconstructed by wrenching.") + else + if(anchored) + to_chat(user, "The window is screwed to the floor.") + else + to_chat(user, "The window is unscrewed from the floor, and could be deconstructed by wrenching.") + if(!anchored && !fulltile) + to_chat(user, "Alt-click to rotate it clockwise.") -// This should result in the same materials used to make the window. -/obj/structure/window/proc/destroy() - for(var/i=0;i= STAGE_FIVE) - destroy() + deconstruct(FALSE) -/obj/structure/window/CheckExit(var/atom/movable/O, var/turf/target) - if(istype(O) && O.checkpass(PASSGLASS)) - return 1 - if(get_dir(O.loc, target) == dir) - return !density - return 1 +/obj/structure/window/setDir(direct) + if(!fulltile) + ..() + else + ..(FULLTILE_WINDOW_DIR) /obj/structure/window/CanPass(atom/movable/mover, turf/target, height=0) if(istype(mover) && mover.checkpass(PASSGLASS)) return 1 - if(dir == SOUTHWEST || dir == SOUTHEAST || dir == NORTHWEST || dir == NORTHEAST) + if(dir == FULLTILE_WINDOW_DIR) return 0 //full tile window, you can't move into it! if(get_dir(loc, target) == dir) return !density - else + if(istype(mover, /obj/structure/window)) + var/obj/structure/window/W = mover + if(!valid_window_location(loc, W.ini_dir)) + return FALSE + else if(istype(mover, /obj/structure/windoor_assembly)) + var/obj/structure/windoor_assembly/W = mover + if(!valid_window_location(loc, W.ini_dir)) + return FALSE + else if(istype(mover, /obj/machinery/door/window) && !valid_window_location(loc, mover.dir)) + return FALSE + return 1 + +/obj/structure/window/CheckExit(atom/movable/O, target) + if(istype(O) && O.checkpass(PASSGLASS)) return 1 + if(get_dir(O.loc, target) == dir) + return 0 + return 1 /obj/structure/window/CanAStarPass(ID, to_dir) if(!density) return 1 - if((dir == SOUTHWEST) || (dir == to_dir)) + if((dir == FULLTILE_WINDOW_DIR) || (dir == to_dir)) return 0 return 1 -/obj/structure/window/hitby(atom/movable/AM) - ..() - var/tforce = 0 - if(ismob(AM)) - tforce = 10 - else if(isobj(AM)) - var/obj/O = AM - tforce = O.throwforce - if(reinf) - tforce *= 0.25 - playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1) - health = max(0, health - tforce) - if(health <= 7 && !reinf) - anchored = 0 - update_nearby_icons() - step(src, get_dir(AM, src)) - if(health <= 0) - destroy() +/obj/structure/window/attack_tk(mob/user) + user.changeNext_move(CLICK_CD_MELEE) + user.visible_message("Something knocks on [src].") + add_fingerprint(user) + playsound(src, 'sound/effects/Glassknock.ogg', 50, 1) +/obj/structure/window/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) + if(!can_be_reached(user)) + return 1 + . = ..() -/obj/structure/window/attack_hand(mob/user as mob) - if(HULK in user.mutations) - user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!")) - user.visible_message("[user] smashes through [src]!") - destroy() - else if(user.a_intent == INTENT_HARM) +/obj/structure/window/attack_hand(mob/user) + if(!can_be_reached(user)) + return + if(user.a_intent == INTENT_HARM) user.changeNext_move(CLICK_CD_MELEE) - playsound(get_turf(src), 'sound/effects/glassknock.ogg', 80, 1) - user.visible_message("[user.name] bangs against the [src.name]!", \ - "You bang against the [src.name]!", \ + playsound(src, 'sound/effects/glassknock.ogg', 80, 1) + user.visible_message("[user] bangs against [src]!", \ + "You bang against [src]!", \ "You hear a banging sound.") + add_fingerprint(user) else user.changeNext_move(CLICK_CD_MELEE) - playsound(src.loc, 'sound/effects/glassknock.ogg', 80, 1) - user.visible_message("[user.name] knocks on the [src.name].", \ - "You knock on the [src.name].", \ + playsound(src, 'sound/effects/glassknock.ogg', 80, 1) + user.visible_message("[user] knocks on [src].", \ + "You knock on [src].", \ "You hear a knocking sound.") - return + add_fingerprint(user) - -/obj/structure/window/attack_generic(mob/living/user, damage = 0) //used by attack_alien, attack_animal, and attack_slime - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - health -= damage - if(health <= 0) - user.visible_message("[user] smashes through [src]!") - destroy() - else //for nicer text~ - user.visible_message("[user] smashes into [src]!") - playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1) - - -/obj/structure/window/attack_alien(mob/living/user as mob) - if(islarva(user)) return - attack_generic(user, 15) - -/obj/structure/window/attack_animal(mob/living/user as mob) - if(!isanimal(user)) return - var/mob/living/simple_animal/M = user - if(M.melee_damage_upper <= 0 || (M.melee_damage_type != BRUTE && M.melee_damage_type != BURN)) +/obj/structure/window/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = 0, sound_effect = 1) //used by attack_alien, attack_animal, and attack_slime + if(!can_be_reached(user)) return - attack_generic(M, M.melee_damage_upper) + ..() +/obj/structure/window/attackby(obj/item/I, mob/living/user, params) + if(!can_be_reached(user)) + return 1 //skip the afterattack -/obj/structure/window/attack_slime(mob/living/user as mob) - var/mob/living/carbon/slime/S = user - if(!S.is_adult) + add_fingerprint(user) + + if(iswelder(I) && user.a_intent == INTENT_HELP) + var/obj/item/weldingtool/WT = I + if(obj_integrity < max_integrity) + if(WT.remove_fuel(0,user)) + to_chat(user, "You begin repairing [src]...") + playsound(src, WT.usesound, 40, 1) + if(do_after(user, 40*I.toolspeed, target = src)) + obj_integrity = max_integrity + playsound(src, 'sound/items/Welder2.ogg', 50, 1) + update_nearby_icons() + to_chat(user, "You repair [src].") + else + to_chat(user, "[src] is already in good condition!") return - attack_generic(user, rand(10, 15)) - -/obj/structure/window/attackby(obj/item/I as obj, mob/living/user as mob, params) - if(!istype(I)) - return//I really wish I did not need this - if(istype(I, /obj/item/grab) && get_dist(src,user)<2) + if(istype(I, /obj/item/grab) && get_dist(src, user) < 2) var/obj/item/grab/G = I - if(istype(G.affecting,/mob/living)) + if(isliving(G.affecting)) var/mob/living/M = G.affecting var/state = G.state qdel(I) //gotta delete it here because if window breaks, it won't get deleted @@ -192,129 +232,120 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f if(1) M.visible_message("[user] slams [M] against \the [src]!") M.apply_damage(7) - hit(10) + take_damage(10) if(2) M.visible_message("[user] bashes [M] against \the [src]!") if(prob(50)) M.Weaken(1) M.apply_damage(10) - hit(25) + take_damage(25) if(3) M.visible_message("[user] crushes [M] against \the [src]!") M.Weaken(5) M.apply_damage(20) - hit(50) + take_damage(50) if(4) visible_message("[user] smashes [M] against \the [src]!") M.Weaken(5) M.apply_damage(30) - hit(75) + take_damage(75) return - if(I.flags & NOBLUDGEON) - return - - if(handle_decon(I, user, is_fulltile())) - return - - if(I.damtype == BRUTE || I.damtype == BURN) - user.changeNext_move(CLICK_CD_MELEE) - hit(I.force) - if(health <= 7) - anchored = 0 - update_nearby_icons() - step(src, get_dir(user, src)) - else - playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1) - ..() - -/obj/structure/window/proc/handle_decon(obj/item/W, mob/user, var/takes_time = FALSE) - //screwdriver - if(isscrewdriver(W)) - playsound(loc, W.usesound, 75, 1) - if(reinf) - if(state == 0) - if(takes_time) - to_chat(user, "You begin to [anchored ? "unfasten the frame from" : "fasten the frame to"] the floor.") - if(!do_after(user, 20 * W.toolspeed, target = src)) - return 1 - anchored = !anchored - to_chat(user, "You have [anchored? "fastened the frame to" : "unfastened the frame from"] the floor.") - if(state >= 1) - if(takes_time) - to_chat(user, "You begin to [(state == 1) ? "fasten the window to" : "unfasten the window from"] the frame.") - if(!do_after(user, 20 * W.toolspeed, target = src)) - return 1 - state = 3 - state - to_chat(user, "You have [(state == 1) ? "unfastened the window from" : "fastened the window to"] the frame.") - else - if(takes_time) - to_chat(user, "You begin to [anchored ? "unfasten the frame from" : "fasten the frame to"] the floor.") - if(!do_after(user, 20 * W.toolspeed, target = src)) - return 1 - anchored = !anchored - update_nearby_icons() - to_chat(user, "You have [anchored ? "fastened the window to" : "unfastened the window from"] the floor.") - return 1 - //crowbar - if(iscrowbar(W)) - if(!reinf || state > 1) - return 0 - playsound(loc, W.usesound, 75, 1) - if(takes_time) - to_chat(user, "You begin to pry the window [state ? "out of" : "in to"] the frame.") - if(!do_after(user, 20 * W.toolspeed, target = src)) - return 1 - state = 1 - state - to_chat(user, "You have pried the window [state ? "into" : "out of"] the frame.") - return 1 - //wrench - if(iswrench(W)) - if(anchored) - return 0 - playsound(loc, W.usesound, 50, 1) - if(takes_time) - to_chat(user, "You begin to disassemble [src]...") - if(!do_after(user, 20 * W.toolspeed, target = src)) - return 1 - for(var/i=0; i= S.max_amount) - continue - S.attackby(NS, user) + if(can_deconstruct) + if(isscrewdriver(I)) + playsound(src, I.usesound, 75, 1) if(reinf) - var/obj/item/stack/rods/NR = new (get_turf(src)) - for(var/obj/item/stack/rods/R in loc) - if(R == NR) - continue - if(R.amount >= R.max_amount) - continue - R.attackby(NR, user) + if(state == WINDOW_SCREWED_TO_FRAME || state == WINDOW_IN_FRAME) + to_chat(user, "You begin to [state == WINDOW_SCREWED_TO_FRAME ? "unscrew the window from":"screw the window to"] the frame...") + if(do_after(user, decon_speed*I.toolspeed, target = src, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored))) + state = (state == WINDOW_IN_FRAME ? WINDOW_SCREWED_TO_FRAME : WINDOW_IN_FRAME) + to_chat(user, "You [state == WINDOW_IN_FRAME ? "unfasten the window from":"fasten the window to"] the frame.") + else if(state == WINDOW_OUT_OF_FRAME) + to_chat(user, "You begin to [anchored ? "unscrew the frame from":"screw the frame to"] the floor...") + if(do_after(user, decon_speed*I.toolspeed, target = src, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored))) + anchored = !anchored + update_nearby_icons() + to_chat(user, "You [anchored ? "fasten the frame to":"unfasten the frame from"] the floor.") + else //if we're not reinforced, we don't need to check or update state + to_chat(user, "You begin to [anchored ? "unscrew the window from":"screw the window to"] the floor...") + if(do_after(user, decon_speed*I.toolspeed, target = src, extra_checks = CALLBACK(src, .proc/check_anchored, anchored))) + anchored = !anchored + air_update_turf(TRUE) + update_nearby_icons() + to_chat(user, "You [anchored ? "fasten the window to":"unfasten the window from"] the floor.") + return - to_chat(user, "You have disassembled [src].") - disassembled = 1 - density = 0 - air_update_turf(1) - update_nearby_icons() - qdel(src) - return 1 + else if(iscrowbar(I) && reinf && (state == WINDOW_OUT_OF_FRAME || state == WINDOW_IN_FRAME)) + to_chat(user, "You begin to lever the window [state == WINDOW_OUT_OF_FRAME ? "into":"out of"] the frame...") + playsound(src, I.usesound, 75, 1) + if(do_after(user, decon_speed*I.toolspeed, target = src, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored))) + state = (state == WINDOW_OUT_OF_FRAME ? WINDOW_IN_FRAME : WINDOW_OUT_OF_FRAME) + to_chat(user, "You pry the window [state == WINDOW_IN_FRAME ? "into":"out of"] the frame.") + return + + else if(iswrench(I) && !anchored) + playsound(src, I.usesound, 75, 1) + to_chat(user, " You begin to disassemble [src]...") + if(do_after(user, decon_speed*I.toolspeed, target = src, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored))) + var/obj/item/stack/sheet/G = new glass_type(user.loc, glass_amount) + G.add_fingerprint(user) + playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) + to_chat(user, "You successfully disassemble [src].") + qdel(src) + return + return ..() + +/obj/structure/window/proc/check_state(checked_state) + if(state == checked_state) + return TRUE + +/obj/structure/window/proc/check_anchored(checked_anchored) + if(anchored == checked_anchored) + return TRUE + +/obj/structure/window/proc/check_state_and_anchored(checked_state, checked_anchored) + return check_state(checked_state) && check_anchored(checked_anchored) /obj/structure/window/mech_melee_attack(obj/mecha/M) - if(..()) - hit(M.force, 1) - -/obj/structure/window/proc/hit(var/damage, var/sound_effect = 1) - if(reinf) damage *= 0.5 - health = max(0, health - damage) - if(sound_effect) - playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1) - if(health <= 0) - destroy() + if(!can_be_reached()) return + ..() +/obj/structure/window/proc/can_be_reached(mob/user) + if(!fulltile) + if(get_dir(user, src) & dir) + for(var/obj/O in loc) + if(!O.CanPass(user, user.loc, 1)) + return 0 + return 1 + +/obj/structure/window/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1) + . = ..() + if(.) //received damage + update_nearby_icons() + +/obj/structure/window/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + switch(damage_type) + if(BRUTE) + if(damage_amount) + playsound(src, hitsound, 75, 1) + else + playsound(src, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + playsound(src, 'sound/items/Welder.ogg', 100, 1) + +/obj/structure/window/deconstruct(disassembled = TRUE) + if(QDELETED(src)) + return + if(!disassembled) + playsound(src, breaksound, 70, 1) + if(can_deconstruct) + for(var/i in debris) + var/obj/item/I = i + I.forceMove(loc) + transfer_fingerprints_to(I) + qdel(src) + update_nearby_icons() /obj/structure/window/verb/rotate() set name = "Rotate Window Counter-Clockwise" @@ -325,15 +356,19 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f return if(anchored) - to_chat(usr, "It is fastened to the floor therefore you can't rotate it!") - return 0 + to_chat(usr, "[src] cannot be rotated while it is fastened to the floor!") + return FALSE - dir = turn(dir, 90) -// updateSilicate() + var/target_dir = turn(dir, 90) + if(!valid_window_location(loc, target_dir)) + to_chat(usr, "[src] cannot be rotated in that direction!") + return FALSE + + setDir(target_dir) air_update_turf(1) ini_dir = dir add_fingerprint(usr) - return + return TRUE /obj/structure/window/verb/revrotate() set name = "Rotate Window Clockwise" @@ -344,16 +379,19 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f return if(anchored) - to_chat(usr, "It is fastened to the floor therefore you can't rotate it!") - return 0 + to_chat(usr, "[src] cannot be rotated while it is fastened to the floor!") + return FALSE - dir = turn(dir, 270) -// updateSilicate() - air_update_turf(1) + var/target_dir = turn(dir, 270) + + if(!valid_window_location(loc, target_dir)) + to_chat(usr, "[src] cannot be rotated in that direction!") + return FALSE + + setDir(target_dir) ini_dir = dir add_fingerprint(usr) - return - + return TRUE /obj/structure/window/AltClick(mob/user) if(user.incapacitated()) @@ -363,158 +401,77 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f return revrotate() -/* -/obj/structure/window/proc/updateSilicate() - if(silicateIcon && silicate) - icon = initial(icon) - - var/icon/I = icon(icon,icon_state,dir) - - var/r = (silicate / 100) + 1 - var/g = (silicate / 70) + 1 - var/b = (silicate / 50) + 1 - I.SetIntensity(r,g,b) - icon = I - silicateIcon = I -*/ - -/obj/structure/window/New(Loc,re=0) - ..() - ini_dir = dir - if(!color && !istype(src,/obj/structure/window/plasmabasic) && !istype(src,/obj/structure/window/plasmareinforced)) - color = color_windows(src) - update_nearby_icons() - return - -/obj/structure/window/Initialize() - air_update_turf(1) - return ..() - /obj/structure/window/Destroy() - density = 0 + density = FALSE air_update_turf(1) - if(loc && !disassembled) - playsound(get_turf(src), "shatter", 70, 1) + update_nearby_icons() return ..() - /obj/structure/window/Move() var/turf/T = loc ..() - dir = ini_dir + setDir(ini_dir) move_update_air(T) -//checks if this window is full-tile one -/obj/structure/window/proc/is_fulltile() - if(dir & (dir - 1)) - return 1 - return 0 - /obj/structure/window/CanAtmosPass(turf/T) - if(get_dir(loc, T) == dir) - return !density - if(dir == SOUTHWEST || dir == SOUTHEAST || dir == NORTHWEST || dir == NORTHEAST) - return !density - return 1 + if(!anchored || !density) + return TRUE + return !(FULLTILE_WINDOW_DIR == dir || dir == get_dir(loc, T)) //This proc is used to update the icons of nearby windows. /obj/structure/window/proc/update_nearby_icons() - if(!loc) return 0 update_icon() - for(var/direction in cardinal) - for(var/obj/structure/window/W in get_step(src,direction) ) - W.update_icon() + if(smooth) + smooth_icon_neighbors(src) /obj/structure/window/update_icon() - return + if(!QDELETED(src)) + if(!fulltile) + return + var/ratio = obj_integrity / max_integrity + ratio = CEILING(ratio*4, 1) * 25 + if(smooth) + smooth_icon(src) + overlays -= crack_overlay + if(ratio > 75) + return + crack_overlay = image('icons/obj/structures.dmi',"damage[ratio]",-(layer+0.1)) + overlays += crack_overlay /obj/structure/window/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(exposed_temperature > T0C + 800) - hit(round(exposed_volume / 100), 0) + if(exposed_temperature > (T0C + heat_resistance)) + take_damage(round(exposed_volume / 100), BURN, 0, 0) ..() +/obj/structure/window/GetExplosionBlock() + return reinf && fulltile ? real_explosion_block : 0 + /obj/structure/window/basic - icon_state = "window" desc = "It looks thin and flimsy. A few knocks with... anything, really should shatter it." - basestate = "window" - -/obj/structure/window/plasmabasic - name = "plasma window" - desc = "A plasma-glass alloy window. It looks insanely tough to break. It appears it's also insanely tough to burn through." - basestate = "plasmawindow" - icon_state = "plasmawindow" - shardtype = /obj/item/shard/plasma - glasstype = /obj/item/stack/sheet/plasmaglass - health = 120 - armor = list("melee" = 75, "bullet" = 5, "laser" = 0, "energy" = 0, "bomb" = 45, "bio" = 100, "rad" = 100) - -/obj/structure/window/plasmabasic/New(Loc,re=0) - ..() - ini_dir = dir - update_nearby_icons() - return - -/obj/structure/window/plasmabasic/Initialize() - ..() - air_update_turf(1) - -/obj/structure/window/plasmabasic/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(exposed_temperature > T0C + 32000) - hit(round(exposed_volume / 1000), 0) - ..() - -/obj/structure/window/plasmabasic/BlockSuperconductivity() - return 1 - -/obj/structure/window/plasmareinforced - name = "reinforced plasma window" - desc = "A plasma-glass alloy window, with rods supporting it. It looks hopelessly tough to break. It also looks completely fireproof, considering how basic plasma windows are insanely fireproof." - basestate = "plasmarwindow" - icon_state = "plasmarwindow" - shardtype = /obj/item/shard/plasma - glasstype = /obj/item/stack/sheet/plasmaglass - reinf = 1 - health = 160 - armor = list("melee" = 85, "bullet" = 20, "laser" = 0, "energy" = 0, "bomb" = 60, "bio" = 100, "rad" = 100) - -/obj/structure/window/plasmareinforced/New(Loc,re=0) - ..() - ini_dir = dir - update_nearby_icons() - return - -/obj/structure/window/plasmareinforced/Initialize() - ..() - air_update_turf(1) - -/obj/structure/window/plasmareinforced/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) - return - -/obj/structure/window/plasmareinforced/BlockSuperconductivity() - return 1 //okay this SHOULD MAKE THE TOXINS CHAMBER WORK /obj/structure/window/reinforced name = "reinforced window" desc = "It looks rather strong. Might take a few good hits to shatter it." icon_state = "rwindow" - reinf = 1 - basestate = "rwindow" - health = 40 + reinf = TRUE + cancolor = TRUE + heat_resistance = 1600 armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 25, "bio" = 100, "rad" = 100) + max_integrity = 50 + explosion_block = 1 + glass_type = /obj/item/stack/sheet/rglass /obj/structure/window/reinforced/tinted name = "tinted window" desc = "It looks rather strong and opaque. Might take a few good hits to shatter it." icon_state = "twindow" - basestate = "twindow" opacity = 1 /obj/structure/window/reinforced/tinted/frosted name = "frosted window" desc = "It looks rather strong and frosted over. Looks like it might take a few less hits then a normal reinforced window." icon_state = "fwindow" - basestate = "fwindow" - health = 30 + max_integrity = 30 /obj/structure/window/reinforced/polarized name = "electrochromic window" @@ -529,8 +486,6 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f animate(src, color="#222222", time=5) set_opacity(1) - - /obj/machinery/button/windowtint name = "window tint control" icon = 'icons/obj/power.dmi' @@ -540,7 +495,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f var/id = 0 var/active = 0 -/obj/machinery/button/windowtint/attack_hand(mob/user as mob) +/obj/machinery/button/windowtint/attack_hand(mob/user) if(..()) return 1 @@ -565,3 +520,195 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f /obj/machinery/button/windowtint/update_icon() icon_state = "light[active]" + +/obj/structure/window/plasmabasic + name = "plasma window" + desc = "A window made out of a plasma-silicate alloy. It looks insanely tough to break and burn through." + icon_state = "plasmawindow" + shardtype = /obj/item/shard/plasma + glass_type = /obj/item/stack/sheet/plasmaglass + heat_resistance = 32000 + max_integrity = 120 + explosion_block = 1 + armor = list("melee" = 75, "bullet" = 5, "laser" = 0, "energy" = 0, "bomb" = 45, "bio" = 100, "rad" = 100) + +/obj/structure/window/plasmabasic/BlockSuperconductivity() + return 1 + +/obj/structure/window/plasmareinforced + name = "reinforced plasma window" + desc = "A plasma-glass alloy window, with rods supporting it. It looks hopelessly tough to break. It also looks completely fireproof, considering how basic plasma windows are insanely fireproof." + icon_state = "plasmarwindow" + shardtype = /obj/item/shard/plasma + glass_type = /obj/item/stack/sheet/plasmaglass + reinf = TRUE + max_integrity = 160 + explosion_block = 2 + armor = list("melee" = 85, "bullet" = 20, "laser" = 0, "energy" = 0, "bomb" = 60, "bio" = 100, "rad" = 100) + +/obj/structure/window/plasmareinforced/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + return + +/obj/structure/window/plasmareinforced/BlockSuperconductivity() + return 1 //okay this SHOULD MAKE THE TOXINS CHAMBER WORK + +/obj/structure/window/full + glass_amount = 2 + dir = FULLTILE_WINDOW_DIR + level = 3 + fulltile = TRUE + +/obj/structure/window/full/basic + desc = "It looks thin and flimsy. A few knocks with... anything, really should shatter it." + icon = 'icons/obj/smooth_structures/window.dmi' + icon_state = "window" + max_integrity = 50 + smooth = SMOOTH_TRUE + cancolor = TRUE + canSmoothWith = list(/obj/structure/window/full/basic, /obj/structure/window/full/reinforced, /obj/structure/window/full/reinforced/tinted, /obj/structure/window/full/plasmabasic, /obj/structure/window/full/plasmareinforced) + +/obj/structure/window/full/plasmabasic + name = "plasma window" + desc = "A plasma-glass alloy window. It looks insanely tough to break. It appears it's also insanely tough to burn through." + icon = 'icons/obj/smooth_structures/plasma_window.dmi' + icon_state = "plasmawindow" + shardtype = /obj/item/shard/plasma + glass_type = /obj/item/stack/sheet/plasmaglass + heat_resistance = 32000 + max_integrity = 240 + smooth = SMOOTH_TRUE + canSmoothWith = list(/obj/structure/window/full/basic, /obj/structure/window/full/reinforced, /obj/structure/window/full/reinforced/tinted, /obj/structure/window/full/plasmabasic, /obj/structure/window/full/plasmareinforced) + +/obj/structure/window/full/plasmareinforced + name = "reinforced plasma window" + desc = "A plasma-glass alloy window, with rods supporting it. It looks hopelessly tough to break. It also looks completely fireproof, considering how basic plasma windows are insanely fireproof." + icon = 'icons/obj/smooth_structures/rplasma_window.dmi' + icon_state = "rplasmawindow" + shardtype = /obj/item/shard/plasma + glass_type = /obj/item/stack/sheet/plasmaglass + smooth = SMOOTH_TRUE + reinf = TRUE + max_integrity = 320 + +/obj/structure/window/full/plasmareinforced/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + return + +/obj/structure/window/full/reinforced + name = "reinforced window" + desc = "It looks rather strong. Might take a few good hits to shatter it." + icon = 'icons/obj/smooth_structures/reinforced_window.dmi' + icon_state = "r_window" + smooth = SMOOTH_TRUE + canSmoothWith = list(/obj/structure/window/full/basic, /obj/structure/window/full/reinforced, /obj/structure/window/full/reinforced/tinted, /obj/structure/window/full/plasmabasic, /obj/structure/window/full/plasmareinforced) + max_integrity = 100 + reinf = TRUE + heat_resistance = 1600 + armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 25, "bio" = 100, "rad" = 100) + explosion_block = 1 + glass_type = /obj/item/stack/sheet/rglass + cancolor = TRUE + +/obj/structure/window/full/reinforced/tinted + name = "tinted window" + desc = "It looks rather strong and opaque. Might take a few good hits to shatter it." + icon = 'icons/obj/smooth_structures/tinted_window.dmi' + icon_state = "tinted_window" + opacity = 1 + +obj/structure/window/full/reinforced/ice + icon = 'icons/obj/smooth_structures/rice_window.dmi' + icon_state = "ice_window" + max_integrity = 150 + cancolor = FALSE + +/obj/structure/window/full/shuttle + name = "shuttle window" + desc = "A reinforced, air-locked pod window." + icon = 'icons/obj/smooth_structures/shuttle_window.dmi' + icon_state = "shuttle_window" + max_integrity = 160 + reinf = TRUE + heat_resistance = 1600 + explosion_block = 3 + armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100) + smooth = SMOOTH_TRUE + canSmoothWith = null + glass_type = /obj/item/stack/sheet/titaniumglass + +/obj/structure/window/full/shuttle/narsie_act() + color = "#3C3434" + +/obj/structure/window/full/shuttle/tinted + opacity = TRUE + +/obj/structure/window/plastitanium + name = "plastitanium window" + desc = "An evil looking window of plasma and titanium." + icon = 'icons/obj/smooth_structures/plastitanium_window.dmi' + icon_state = "plastitanium_window" + dir = FULLTILE_WINDOW_DIR + max_integrity = 100 + fulltile = TRUE + reinf = TRUE + heat_resistance = 1600 + armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100) + smooth = SMOOTH_TRUE + canSmoothWith = null + explosion_block = 3 + level = 3 + glass_type = /obj/item/stack/sheet/plastitaniumglass + glass_amount = 2 + +/obj/structure/window/reinforced/clockwork + name = "brass window" + desc = "A paper-thin pane of translucent yet reinforced brass." + icon = 'icons/obj/smooth_structures/clockwork_window.dmi' + icon_state = "clockwork_window_single" + burn_state = FIRE_PROOF + unacidable = 1 + max_integrity = 80 + armor = list("melee" = 60, "bullet" = 25, "laser" = 0, "energy" = 0, "bomb" = 25, "bio" = 100, "rad" = 100) + explosion_block = 2 //fancy AND hard to destroy. the most useful combination. + glass_type = /obj/item/stack/tile/brass + reinf = FALSE + cancolor = FALSE + var/made_glow = FALSE + +/obj/structure/window/reinforced/clockwork/New(loc, direct) + if(fulltile) + made_glow = TRUE + ..() + QDEL_LIST(debris) + if(fulltile) + new /obj/effect/temp_visual/ratvar/window(get_turf(src)) + debris += new/obj/item/stack/tile/brass(src, 2) + else + debris += new/obj/item/stack/tile/brass(src, 1) + +/obj/structure/window/reinforced/clockwork/setDir(direct) + if(!made_glow) + var/obj/effect/E = new /obj/effect/temp_visual/ratvar/window/single(get_turf(src)) + E.setDir(direct) + made_glow = TRUE + ..() + +/obj/structure/window/reinforced/clockwork/ratvar_act() + obj_integrity = max_integrity + update_icon() + +/obj/structure/window/reinforced/clockwork/narsie_act() + take_damage(rand(25, 75), BRUTE) + if(src) + var/previouscolor = color + color = "#960000" + animate(src, color = previouscolor, time = 8) + +/obj/structure/window/reinforced/clockwork/fulltile + icon_state = "clockwork_window" + smooth = SMOOTH_TRUE + canSmoothWith = null + fulltile = TRUE + dir = FULLTILE_WINDOW_DIR + max_integrity = 120 + level = 3 + glass_amount = 2 \ No newline at end of file diff --git a/code/game/response_team.dm b/code/game/response_team.dm index 596d59c7b16..c59dd7bd78f 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -203,13 +203,13 @@ var/ert_request_answered = 0 var/cyborg_unlock = 0 /datum/response_team/proc/setSlots(com, sec, med, eng, jan, par, cyb) - command_slots = com - security_slots = sec - medical_slots = med - engineer_slots = eng - janitor_slots = jan - paranormal_slots = par - cyborg_slots = cyb + command_slots = com == null ? command_slots : com + security_slots = sec == null ? security_slots : sec + medical_slots = med == null ? medical_slots : med + engineer_slots = eng == null ? engineer_slots : eng + janitor_slots = jan == null ? janitor_slots : jan + paranormal_slots = par == null ? paranormal_slots : par + cyborg_slots = cyb == null ? cyborg_slots : cyb /datum/response_team/proc/reduceCyborgSlots() cyborg_slots-- diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index b1cbf84493f..db85329f8c1 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -214,7 +214,7 @@ //Interactions -/turf/simulated/wall/attack_animal(var/mob/living/simple_animal/M) +/turf/simulated/wall/attack_animal(mob/living/simple_animal/M) M.changeNext_move(CLICK_CD_MELEE) M.do_attack_animation(src) if((M.environment_smash & ENVIRONMENT_SMASH_WALLS) || (M.environment_smash & ENVIRONMENT_SMASH_RWALLS)) @@ -229,20 +229,19 @@ to_chat(M, "You push the wall but nothing happens!") return -/turf/simulated/wall/attack_hand(mob/user as mob) - user.changeNext_move(CLICK_CD_MELEE) - if(HULK in user.mutations) - if(prob(hardness) || rotting) - playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1) - to_chat(user, text("You smash through the wall.")) - user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - dismantle_wall(1) - return - else - playsound(src, 'sound/effects/bang.ogg', 50, 1) - to_chat(user, text("You punch the wall.")) - return +/turf/simulated/wall/attack_hulk(mob/user, does_attack_animation = FALSE) + ..(user, TRUE) + if(prob(hardness) || rotting) + playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1) + user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) + dismantle_wall(TRUE) + else + playsound(src, 'sound/effects/bang.ogg', 50, 1) + to_chat(user, text("You punch the wall.")) + return TRUE +/turf/simulated/wall/attack_hand(mob/user) + user.changeNext_move(CLICK_CD_MELEE) if(rotting) if(hardness <= 10) to_chat(user, "This wall feels rather unstable.") @@ -254,183 +253,169 @@ to_chat(user, "You push the wall but nothing happens!") playsound(src, 'sound/weapons/Genhit.ogg', 25, 1) - src.add_fingerprint(user) - ..() - return + add_fingerprint(user) + return ..() -/turf/simulated/wall/attackby(obj/item/W as obj, mob/user as mob, params) +/turf/simulated/wall/attackby(obj/item/I, mob/user, params) user.changeNext_move(CLICK_CD_MELEE) - if(!user.IsAdvancedToolUser()) - to_chat(user, "You don't have the dexterity to do this!") + + if(!isturf(user.loc)) + return // No touching walls unless you're on a turf (pretty sure attackby can't be called anyways but whatever) + + if(rotting && try_rot(I, user, params)) return - //get the user's location - if(!istype(user.loc, /turf)) - return //can't do this stuff whilst inside objects and such + if(thermite && try_thermite(I, user, params)) + return - if(rotting) - if(istype(W, /obj/item/weldingtool) ) - var/obj/item/weldingtool/WT = W - if(WT.remove_fuel(0,user)) - to_chat(user, "You burn away the fungi with \the [WT].") - playsound(src, WT.usesound, 10, 1) - for(var/obj/effect/overlay/wall_rot/WR in src) - qdel(WR) - rotting = 0 - return - else if(!is_sharp(W) && W.force >= 10 || W.force >= 20) - to_chat(user, "\The [src] crumbles away under the force of your [W.name].") - src.dismantle_wall(1) - return + if(try_decon(I, user, params)) + return - //THERMITE related stuff. Calls src.thermitemelt() which handles melting simulated walls and the relevant effects - if(thermite) - if(istype(W, /obj/item/weldingtool)) - var/obj/item/weldingtool/WT = W - if(WT.remove_fuel(0,user)) - thermitemelt(user) - return + if(try_destroy(I, user, params)) + return - else if(istype(W, /obj/item/gun/energy/plasmacutter)) + if(try_wallmount(I, user, params)) + return + + // The magnetic gripper does a separate attackby, so bail from this one + if(istype(I, /obj/item/gripper)) + return + + return ..() + +/turf/simulated/wall/proc/try_rot(obj/item/I, mob/user, params) + if(iswelder(I)) + var/obj/item/weldingtool/WT = I + if(WT.remove_fuel(0, user)) + to_chat(user, "You burn away the fungi with [WT].") + playsound(src, WT.usesound, 10, 1) + for(var/obj/effect/overlay/wall_rot/WR in src) + qdel(WR) + rotting = 0 + return TRUE + else if((!is_sharp(I) && I.force >= 10) || I.force >= 20) + to_chat(user, "[src] crumbles away under the force of your [I.name].") + dismantle_wall(1) + return TRUE + return FALSE + +/turf/simulated/wall/proc/try_thermite(obj/item/I, mob/user, params) + if(iswelder(I)) + var/obj/item/weldingtool/WT = I + if(WT.remove_fuel(0, user)) thermitemelt(user) - return + return TRUE - else if(istype(W, /obj/item/melee/energy/blade)) - var/obj/item/melee/energy/blade/EB = W + else if(istype(I, /obj/item/gun/energy/plasmacutter)) + thermitemelt(user) + return TRUE - EB.spark_system.start() - to_chat(user, "You slash \the [src] with \the [EB]; the thermite ignites!") - playsound(src, "sparks", 50, 1) - playsound(src, EB.usesound, 50, 1) - thermitemelt(user) - return + return FALSE - //DECONSTRUCTION - if(istype(W, /obj/item/weldingtool)) +/turf/simulated/wall/proc/try_decon(obj/item/I, mob/user, params) + if(iswelder(I)) + var/obj/item/weldingtool/WT = I + if(!WT.remove_fuel(0, user)) + to_chat(user, "You need more welding fuel to complete this task.") + return TRUE // this means "don't continue trying to find alternative uses in attackby", not "decon succeeded" var/response = "Dismantle" if(damage) response = alert(user, "Would you like to repair or dismantle [src]?", "[src]", "Repair", "Dismantle") - var/obj/item/weldingtool/WT = W - - if(WT.remove_fuel(0,user)) - if(response == "Repair") + switch(response) + if("Repair") to_chat(user, "You start repairing the damage to [src].") playsound(src, WT.usesound, 100, 1) if(do_after(user, max(5, damage / 5) * WT.toolspeed, target = src) && WT && WT.isOn()) to_chat(user, "You finish repairing the damage to [src].") take_damage(-damage) - - else if(response == "Dismantle") + else to_chat(user, "You begin slicing through the outer plating.") playsound(src, WT.usesound, 100, 1) if(do_after(user, 100 * WT.toolspeed, target = src) && WT && WT.isOn()) to_chat(user, "You remove the outer plating.") dismantle_wall() - else to_chat(user, "You stop slicing through [src].") - return - - else - to_chat(user, "You need more welding fuel to complete this task.") - return - - else if(istype(W, /obj/item/gun/energy/plasmacutter)) + return TRUE + else if(istype(I, /obj/item/gun/energy/plasmacutter)) to_chat(user, "You begin slicing through the outer plating.") - playsound(src, W.usesound, 100, 1) + playsound(src, I.usesound, 100, 1) - if(do_after(user, istype(sheet_type, /obj/item/stack/sheet/mineral/diamond) ? 120 * W.toolspeed : 60 * W.toolspeed, target = src)) + if(do_after(user, istype(sheet_type, /obj/item/stack/sheet/mineral/diamond) ? 120 * I.toolspeed : 60 * I.toolspeed, target = src)) to_chat(user, "You remove the outer plating.") dismantle_wall() - visible_message("[user] slices apart \the [src]!","You hear metal being sliced apart.") + visible_message("[user] slices apart [src]!", "You hear metal being sliced apart.") + return TRUE - //DRILLING - else if(istype(W, /obj/item/pickaxe/drill/diamonddrill)) + return FALSE +/turf/simulated/wall/proc/try_destroy(obj/item/I, mob/user, params) + var/isdiamond = istype(sheet_type, /obj/item/stack/sheet/mineral/diamond) // snowflake bullshit + + if(istype(I, /obj/item/pickaxe/drill/diamonddrill)) to_chat(user, "You begin to drill though the wall.") - if(do_after(user, istype(sheet_type, /obj/item/stack/sheet/mineral/diamond) ? 480 * W.toolspeed : 240 * W.toolspeed, target = src)) // Diamond pickaxe has 0.25 toolspeed, so 120/60 - to_chat(user, "Your drill tears though the last of the reinforced plating.") + if(do_after(user, isdiamond ? 480 * I.toolspeed : 240 * I.toolspeed, target = src)) // Diamond pickaxe has 0.25 toolspeed, so 120/60 + to_chat(user, "Your [I.name] tears though the last of the reinforced plating.") dismantle_wall() - visible_message("[user] drills through \the [src]!","You hear the grinding of metal.") - - else if(istype(W, /obj/item/pickaxe/drill/jackhammer)) + visible_message("[user] drills through [src]!", "You hear the grinding of metal.") + return TRUE + else if(istype(I, /obj/item/pickaxe/drill/jackhammer)) to_chat(user, "You begin to disintegrates the wall.") - if(do_after(user, istype(sheet_type, /obj/item/stack/sheet/mineral/diamond) ? 600 * W.toolspeed : 300 * W.toolspeed, target = src)) // Jackhammer has 0.1 toolspeed, so 60/30 - to_chat(user, "Your sonic jackhammer disintegrate the reinforced plating.") + if(do_after(user, isdiamond ? 600 * I.toolspeed : 300 * I.toolspeed, target = src)) // Jackhammer has 0.1 toolspeed, so 60/30 + to_chat(user, "Your [I.name] disintegrates the reinforced plating.") dismantle_wall() - visible_message("[user] disintegrates \the [src]!","You hear the grinding of metal.") + visible_message("[user] disintegrates [src]!","You hear the grinding of metal.") + return TRUE - else if(istype(W, /obj/item/melee/energy/blade)) - var/obj/item/melee/energy/blade/EB = W + return FALSE - EB.spark_system.start() - to_chat(user, "You stab \the [EB] into the wall and begin to slice it apart.") - playsound(src, "sparks", 50, 1) +/turf/simulated/wall/proc/try_wallmount(obj/item/I, mob/user, params) + if(istype(I, /obj/item/mounted)) + return TRUE // We don't want attack_hand running and doing stupid shit with this - if(do_after(user, istype(sheet_type, /obj/item/stack/sheet/mineral/diamond) ? 140 * EB.toolspeed : 70 * EB.toolspeed, target = src)) - EB.spark_system.start() - playsound(src, "sparks", 50, 1) - playsound(src, EB.usesound, 50, 1) - dismantle_wall(1) - visible_message("[user] slices apart \the [src]!","You hear metal being sliced apart and sparks flying.") - - else if(istype(W,/obj/item/mounted)) //if we place it, we don't want to have a silly message - return - - //Poster stuff - else if(istype(W, /obj/item/poster)) - place_poster(W, user) - return - - //Bone White - Place pipes on walls - else if(istype(W,/obj/item/pipe)) - var/obj/item/pipe/V = W - if(V.pipe_type != -1) // ANY PIPE - var/obj/item/pipe/P = W + if(istype(I, /obj/item/poster)) + place_poster(I, user) + return TRUE + //Bone White - Place pipes on walls // I fucking hate your code with a passion bone + if(istype(I, /obj/item/pipe)) + var/obj/item/pipe/P = I + if(P.pipe_type != -1) // ANY PIPE playsound(get_turf(src), 'sound/weapons/circsawhit.ogg', 50, 1) - user.visible_message( \ - "[user] starts drilling a hole in \the [src].", \ - "You start drilling a hole in \the [src].", \ - "You hear ratchet.") - if(do_after(user, 80 * W.toolspeed, target = src)) - user.visible_message( \ - "[user] drills a hole in \the [src] and pushes \a [P] into the void", \ - "You have finished drilling in \the [src] and push the [P] into the void.", \ - "You hear ratchet.") + user.visible_message( + "[user] starts drilling a hole in [src].", + "You start drilling a hole in [src].", + "You hear a drill.") + + if(do_after(user, 80 * P.toolspeed, target = src)) + user.visible_message( + "[user] drills a hole in [src] and pushes [P] into the void.", + "You finish drilling [src] and push [P] into the void.", + "You hear a ratchet.") user.drop_item() if(P.is_bent_pipe()) // bent pipe rotation fix see construction.dm - P.dir = 5 + P.setDir(5) if(user.dir == 1) - P.dir = 6 + P.setDir(6) else if(user.dir == 2) - P.dir = 9 + P.setDir(9) else if(user.dir == 4) - P.dir = 10 + P.setDir(10) else - P.dir = user.dir - P.x = src.x - P.y = src.y - P.z = src.z - P.loc = src + P.setDir(user.dir) + P.forceMove(src) P.level = 2 - return - // The magnetic gripper does a separate attackby, so bail from this one - else if(istype(W, /obj/item/gripper)) - return - - else - return attack_hand(user) - return + return TRUE + return FALSE /turf/simulated/wall/singularity_pull(S, current_size) if(current_size >= STAGE_FIVE) diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm index 827791be76d..eb054ba19ed 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -33,333 +33,256 @@ if(RWALL_SHEATH) to_chat(user, "The support rods have been sliced through, and the outer sheath is connected loosely to the girder.") -/turf/simulated/wall/r_wall/attackby(obj/item/W, mob/user, params) - user.changeNext_move(CLICK_CD_MELEE) - if(!user.IsAdvancedToolUser()) - to_chat(user, "You don't have the dexterity to do this!") +/turf/simulated/wall/r_wall/attackby(obj/item/I, mob/user, params) + if(try_repair(I, user, params)) return + return ..() - //get the user's location - if(!isturf(user.loc)) - return //can't do this stuff whilst inside objects and such - - if(rotting) - if(iswelder(W)) - var/obj/item/weldingtool/WT = W - if(WT.remove_fuel(0,user)) - to_chat(user, "You burn away the fungi with \the [WT].") - playsound(src, WT.usesound, 10, 1) - for(var/obj/effect/overlay/wall_rot/WR in src) - qdel(WR) - rotting = 0 - return - else if(!is_sharp(W) && W.force >= 10 || W.force >= 20) - to_chat(user, "\The [src] crumbles away under the force of your [W.name].") - dismantle_wall() - return - - //THERMITE related stuff. Calls src.thermitemelt() which handles melting simulated walls and the relevant effects - if(thermite) - if(iswelder(W)) - var/obj/item/weldingtool/WT = W - if(WT.remove_fuel(0,user)) - thermitemelt(user) - return - - else if(istype(W, /obj/item/gun/energy/plasmacutter)) - thermitemelt(user) - return - - else if(istype(W, /obj/item/melee/energy/blade)) - var/obj/item/melee/energy/blade/EB = W - - EB.spark_system.start() - to_chat(user, "You slash \the [src] with \the [EB]; the thermite ignites!") - playsound(src, "sparks", 50, 1) - playsound(src, EB.usesound, 50, 1) - - thermitemelt(user) - return - - else if(istype(W, /obj/item/melee/energy/blade)) - to_chat(user, "This wall is too thick to slice through. You will need to find a different path.") - return - - if(damage && iswelder(W)) - var/obj/item/weldingtool/WT = W - if(WT.remove_fuel(0,user)) - to_chat(user, "You start repairing the damage to [src].") - playsound(src, WT.usesound, 100, 1) - if(do_after(user, max(5, damage / 5) * WT.toolspeed, target = src) && WT && WT.isOn()) - to_chat(user, "You finish repairing the damage to [src].") - take_damage(-damage) - return - else +/turf/simulated/wall/r_wall/proc/try_repair(obj/item/I, mob/user, params) + if(damage && iswelder(I)) + var/obj/item/weldingtool/WT = I + if(!WT.remove_fuel(0, user)) to_chat(user, "You need more welding fuel to complete this task.") - return + return TRUE + to_chat(user, "You start repairing the damage to [src].") + playsound(src, WT.usesound, 100, 1) + if(do_after(user, max(5, damage / 5) * WT.toolspeed, target = src) && WT && WT.isOn()) + to_chat(user, "You finish repairing the damage to [src].") + take_damage(-damage) + return TRUE - //DECONSTRUCTION - switch(d_state) - if(RWALL_INTACT) - if(iswirecutter(W)) - playsound(src, W.usesound, 100, 1) - d_state = RWALL_SUPPORT_LINES + if(d_state) + // Repairing + if(istype(I, /obj/item/stack/sheet/metal)) + var/obj/item/stack/sheet/metal/MS = I + + to_chat(user, "You begin patching-up the wall with [MS]...") + if(do_after(user, max(20 * d_state, 100) * MS.toolspeed, target = src) && d_state) + if(!MS.use(1)) + to_chat(user, "You don't have enough [MS.name] for that!") + return TRUE + + d_state = RWALL_INTACT update_icon() - new /obj/item/stack/rods(src) - to_chat(user, "You cut the outer grille.") - return + smooth_icon_neighbors(src) + to_chat(user, "You repair the last of the damage.") - if(RWALL_SUPPORT_LINES) - if(isscrewdriver(W)) - to_chat(user, "You begin unsecuring the support lines...") - playsound(src, W.usesound, 100, 1) + return TRUE - if(do_after(user, 40 * W.toolspeed, target = src) && d_state == RWALL_SUPPORT_LINES) - d_state = RWALL_COVER - update_icon() - to_chat(user, "You unsecure the support lines.") - return - - //REPAIRING (replacing the outer grille for cosmetic damage) - else if(istype(W, /obj/item/stack/rods)) - var/obj/item/stack/O = W - if(O.use(1)) - d_state = RWALL_INTACT - update_icon() - icon_state = "r_wall" - update_icon() - to_chat(user, "You replace the outer grille.") - else - to_chat(user, "You don't have enough rods for that!") - - if(RWALL_COVER) - if(iswelder(W)) - var/obj/item/weldingtool/WT = W - if(WT.remove_fuel(0,user)) - to_chat(user, "You begin slicing through the metal cover...") - playsound(src, WT.usesound, 100, 1) - - if(do_after(user, 60 * WT.toolspeed, target = src) && d_state == RWALL_COVER) - d_state = RWALL_CUT_COVER - update_icon() - to_chat(user, "You press firmly on the cover, dislodging it.") - - else - to_chat(user, "You need more welding fuel to complete this task.") - return - - if(istype(W, /obj/item/gun/energy/plasmacutter)) - to_chat(user, "You begin slicing through the metal cover...") - playsound(src, W.usesound, 100, 1) - - if(do_after(user, 40 * W.toolspeed, target = src) && d_state == RWALL_COVER) - d_state = RWALL_CUT_COVER - update_icon() - to_chat(user, "You press firmly on the cover, dislodging it.") - return - - if(isscrewdriver(W)) - to_chat(user, "You begin securing the support lines...") - playsound(src, W.usesound, 100, 1) - if(do_after(user, 40*W.toolspeed, target = src)) - if(!istype(src, /turf/simulated/wall/r_wall) || !W || d_state != RWALL_COVER) - return 1 - d_state = RWALL_SUPPORT_LINES - update_icon() - to_chat(user, "The support lines have been secured.") - return 1 - - if(RWALL_CUT_COVER) - if(iscrowbar(W)) - to_chat(user, "You struggle to pry off the cover...") - playsound(src, W.usesound, 100, 1) - - if(do_after(user, 100 * W.toolspeed, target = src) && d_state == RWALL_CUT_COVER) - d_state = RWALL_BOLTS - update_icon() - to_chat(user, "You pry off the cover.") - return - - if(iswelder(W)) - var/obj/item/weldingtool/WT = W - if(WT.remove_fuel(0,user)) - to_chat(user, "You begin welding the metal cover back to the frame...") - playsound(src, WT.usesound, 100, 1) - if(do_after(user, 60*WT.toolspeed, target = src)) - if(!istype(src, /turf/simulated/wall/r_wall) || !WT || !WT.isOn() || d_state != RWALL_CUT_COVER) - return 1 - d_state = RWALL_COVER - update_icon() - to_chat(user, "The metal cover has been welded securely to the frame.") - return 1 - - if(RWALL_BOLTS) - if(iswrench(W)) - to_chat(user, "You start loosening the anchoring bolts which secure the support rods to their frame...") - playsound(src, W.usesound, 100, 1) - - if(do_after(user, 40 * W.toolspeed, target = src) && d_state == RWALL_BOLTS) - d_state = RWALL_SUPPORT_RODS - update_icon() - to_chat(user, "You remove the bolts anchoring the support rods.") - return - - if(iscrowbar(W)) - to_chat(user, "You start to pry the cover back into place...") - playsound(src, W.usesound, 100, 1) - if(do_after(user, 20*W.toolspeed, target = src)) - if(!istype(src, /turf/simulated/wall/r_wall) || !W || d_state != RWALL_BOLTS) - return 1 - d_state = RWALL_CUT_COVER - update_icon() - to_chat(user, "The metal cover has been pried back into place.") - return 1 - - if(RWALL_SUPPORT_RODS) - if(iswelder(W)) - var/obj/item/weldingtool/WT = W - if(WT.remove_fuel(0,user)) - to_chat(user, "You begin slicing through the support rods...") - playsound(src, WT.usesound, 100, 1) - - if(do_after(user, 100 * WT.toolspeed, target = src) && d_state == RWALL_SUPPORT_RODS) - d_state = RWALL_SHEATH - update_icon() - else - to_chat(user, "You need more welding fuel to complete this task.") - return - - if(istype(W, /obj/item/gun/energy/plasmacutter)) - to_chat(user, "You begin slicing through the support rods...") - playsound(src, W.usesound, 100, 1) - - if(do_after(user, 70 * W.toolspeed, target = src) && d_state == RWALL_SUPPORT_RODS) - d_state = RWALL_SHEATH - update_icon() - return - - if(iswrench(W)) - to_chat(user, "You start tightening the bolts which secure the support rods to their frame...") - playsound(src, W.usesound, 100, 1) - if(do_after(user, 40*W.toolspeed, target = src)) - if(!istype(src, /turf/simulated/wall/r_wall) || !W || d_state != RWALL_SUPPORT_RODS) - return 1 - d_state = RWALL_BOLTS - update_icon() - to_chat(user, "You tighten the bolts anchoring the support rods.") - return 1 - - if(RWALL_SHEATH) - if(iscrowbar(W)) - to_chat(user, "You struggle to pry off the outer sheath...") - playsound(src, W.usesound, 100, 1) - - if(do_after(user, 100 * W.toolspeed, target = src) && d_state == RWALL_SHEATH) - to_chat(user, "You pry off the outer sheath.") - dismantle_wall() - return - -//vv OK, we weren't performing a valid deconstruction step or igniting thermite,let's check the other possibilities vv - - //DRILLING - if(istype(W, /obj/item/pickaxe/drill/diamonddrill)) - to_chat(user, "You begin to drill though the wall...") - - if(do_after(user, 800 * W.toolspeed, target = src)) // Diamond drill has 0.25 toolspeed, so 200 - to_chat(user, "Your drill tears through the last of the reinforced plating.") - dismantle_wall() - - if(istype(W,/obj/item/pickaxe/drill/jackhammer)) - to_chat(user, "You begin to disintegrate the wall...") - - if(do_after(user, 1000 * W.toolspeed, target = src)) // Jackhammer has 0.1 toolspeed, so 100 - to_chat(user, "Your sonic jackhammer disintegrates the reinforced plating.") - dismantle_wall() - - //REPAIRING - else if(istype(W, /obj/item/stack/sheet/metal) && d_state) - var/obj/item/stack/sheet/metal/MS = W - - to_chat(user, "You begin patching-up the wall with \a [MS]...") - - if(do_after(user, max(20 * d_state, 100) * MS.toolspeed, target = src) && d_state) - if(!MS.use(1)) - to_chat(user, "You don't have enough metal for that!") - return - - d_state = RWALL_INTACT - update_icon() - smooth_icon_neighbors(src) - to_chat(user, "You repair the last of the damage.") - - //UPGRADING TO COATED - else if(istype(W, /obj/item/stack/sheet/plasteel) && !d_state) - var/obj/item/stack/sheet/plasteel/MS = W + else if(istype(I, /obj/item/stack/sheet/plasteel)) + var/obj/item/stack/sheet/plasteel/PS = I if(!can_be_reinforced) to_chat(user, "The wall is already coated!") - return - to_chat(user, "You begin adding an additional layer of coating to the wall with \a [MS]...") + return FALSE - if(do_after(user, 40 * MS.toolspeed, target = src) && !d_state) - if(!MS.use(2)) - to_chat(user, "You don't have enough plasteel for that!") + to_chat(user, "You begin adding an additional layer of coating to the wall with [PS]...") + if(do_after(user, 40 * PS.toolspeed, target = src) && !d_state) + if(!PS.use(2)) + to_chat(user, "You don't have enough [PS.name] for that!") return to_chat(user, "You add an additional layer of coating to the wall.") ChangeTurf(/turf/simulated/wall/r_wall/coated) update_icon() smooth_icon_neighbors(src) - can_be_reinforced = 0 - return + can_be_reinforced = FALSE + return TRUE + return FALSE - //APC - else if(istype(W,/obj/item/mounted)) - return - //Poster stuff - else if(istype(W, /obj/item/poster)) - place_poster(W, user) - return +/turf/simulated/wall/r_wall/try_decon(obj/item/I, mob/user, params) + switch(d_state) + if(RWALL_INTACT) + // RWALL_INTACT > RWALL_SUPPORT_LINES + if(iswirecutter(I)) + playsound(src, I.usesound, 100, 1) + d_state = RWALL_SUPPORT_LINES + update_icon() + new /obj/item/stack/rods(src) + to_chat(user, "You cut the outer grille.") + return TRUE - //Bone White - Place pipes on walls - else if(istype(W,/obj/item/pipe)) - var/obj/item/pipe/V = W - if(V.pipe_type != -1) // ANY PIPE - var/obj/item/pipe/P = W + if(RWALL_SUPPORT_LINES) + // RWALL_SUPPORT_LINES > RWALL_COVER + if(isscrewdriver(I)) + to_chat(user, "You begin unsecuring the support lines...") + playsound(src, I.usesound, 100, 1) - playsound(get_turf(src), 'sound/weapons/circsawhit.ogg', 50, 1) - user.visible_message( \ - "[user] starts drilling a hole in \the [src]...", \ - "You start drilling a hole in \the [src]. This is going to take a while.", \ - "You hear ratchet.") - if(do_after(user, 160 * V.toolspeed, target = src)) - user.visible_message( \ - "[user] drills a hole in \the [src] and pushes \a [P] into the void.", \ - "You have finished drilling in \the [src] and push the [P] into the void.", \ - "You hear ratchet.") + if(do_after(user, 40 * I.toolspeed, target = src) && d_state == RWALL_SUPPORT_LINES) + d_state = RWALL_COVER + update_icon() + to_chat(user, "You unsecure the support lines.") + return TRUE - user.drop_item() - if(P.is_bent_pipe()) // bent pipe rotation fix see construction.dm - P.dir = 5 - if(user.dir == 1) - P.dir = 6 - else if(user.dir == 2) - P.dir = 9 - else if(user.dir == 4) - P.dir = 10 + // RWALL_INTACT < RWALL_SUPPORT_LINES + if(istype(I, /obj/item/stack/rods)) + var/obj/item/stack/S = I + if(S.use(1)) + d_state = RWALL_INTACT + update_icon() + to_chat(user, "You replace the outer grille.") else - P.dir = user.dir - P.x = src.x - P.y = src.y - P.z = src.z - P.loc = src - P.level = 2 - return + to_chat(user, "You don't have enough rods for that!") + return TRUE + + if(RWALL_COVER) + // RWALL_COVER > RWALL_CUT_COVER + if(iswelder(I)) + var/obj/item/weldingtool/WT = I + if(!WT.remove_fuel(0, user)) + to_chat(user, "You need more welding fuel to complete this task.") + return TRUE + + to_chat(user, "You begin slicing through the metal cover...") + playsound(src, WT.usesound, 100, 1) + + if(do_after(user, 60 * WT.toolspeed, target = src) && d_state == RWALL_COVER) + d_state = RWALL_CUT_COVER + update_icon() + to_chat(user, "You press firmly on the cover, dislodging it.") + return TRUE + + // RWALL_COVER > RWALL_CUT_COVER + if(istype(I, /obj/item/gun/energy/plasmacutter)) + to_chat(user, "You begin slicing through the metal cover...") + playsound(src, I.usesound, 100, 1) + + if(do_after(user, 40 * I.toolspeed, target = src) && d_state == RWALL_COVER) + d_state = RWALL_CUT_COVER + update_icon() + to_chat(user, "You press firmly on the cover, dislodging it.") + return TRUE + + // RWALL_SUPPORT_LINES < RWALL_COVER + if(isscrewdriver(I)) + to_chat(user, "You begin securing the support lines...") + playsound(src, I.usesound, 100, 1) + if(do_after(user, 40 * I.toolspeed, target = src)) + if(!istype(src, /turf/simulated/wall/r_wall) || !I || d_state != RWALL_COVER) + return TRUE + d_state = RWALL_SUPPORT_LINES + update_icon() + to_chat(user, "The support lines have been secured.") + return TRUE + + if(RWALL_CUT_COVER) + // RWALL_CUT_COVER > RWALL_BOLTS + if(iscrowbar(I)) + to_chat(user, "You struggle to pry off the cover...") + playsound(src, I.usesound, 100, 1) + + if(do_after(user, 100 * I.toolspeed, target = src) && d_state == RWALL_CUT_COVER) + d_state = RWALL_BOLTS + update_icon() + to_chat(user, "You pry off the cover.") + return TRUE + + // RWALL_COVER < RWALL_CUT_COVER + if(iswelder(I)) + var/obj/item/weldingtool/WT = I + if(!WT.remove_fuel(0, user)) + return TRUE + + to_chat(user, "You begin welding the metal cover back to the frame...") + playsound(src, WT.usesound, 100, 1) + if(do_after(user, 60 * WT.toolspeed, target = src)) + if(!istype(src, /turf/simulated/wall/r_wall) || !WT || !WT.isOn() || d_state != RWALL_CUT_COVER) + return TRUE + d_state = RWALL_COVER + update_icon() + to_chat(user, "The metal cover has been welded securely to the frame.") + return TRUE + + if(RWALL_BOLTS) + // RWALL_BOLTS > RWALL_SUPPORT_RODS + if(iswrench(I)) + to_chat(user, "You start loosening the anchoring bolts which secure the support rods to their frame...") + playsound(src, I.usesound, 100, 1) + + if(do_after(user, 40 * I.toolspeed, target = src) && d_state == RWALL_BOLTS) + d_state = RWALL_SUPPORT_RODS + update_icon() + to_chat(user, "You remove the bolts anchoring the support rods.") + return TRUE + + // RWALL_CUT_COVER < RWALL_BOLTS + if(iscrowbar(I)) + to_chat(user, "You start to pry the cover back into place...") + playsound(src, I.usesound, 100, 1) + if(do_after(user, 20 * I.toolspeed, target = src)) + if(!istype(src, /turf/simulated/wall/r_wall) || !I || d_state != RWALL_BOLTS) + return TRUE + d_state = RWALL_CUT_COVER + update_icon() + to_chat(user, "The metal cover has been pried back into place.") + return TRUE + + if(RWALL_SUPPORT_RODS) + // RWALL_SUPPORT_RODS > RWALL_SHEATH + if(iswelder(I)) + var/obj/item/weldingtool/WT = I + if(!WT.remove_fuel(0, user)) + to_chat(user, "You need more welding fuel to complete this task.") + return TRUE + + to_chat(user, "You begin slicing through the support rods...") + playsound(src, WT.usesound, 100, 1) + + if(do_after(user, 100 * WT.toolspeed, target = src) && d_state == RWALL_SUPPORT_RODS) + d_state = RWALL_SHEATH + update_icon() + return TRUE + + // RWALL_SUPPORT_RODS > RWALL_SHEATH + if(istype(I, /obj/item/gun/energy/plasmacutter)) + to_chat(user, "You begin slicing through the support rods...") + playsound(src, I.usesound, 100, 1) + + if(do_after(user, 70 * I.toolspeed, target = src) && d_state == RWALL_SUPPORT_RODS) + d_state = RWALL_SHEATH + update_icon() + return TRUE + + // RWALL_BOLTS < RWALL_SUPPORT_RODS + if(iswrench(I)) + to_chat(user, "You start tightening the bolts which secure the support rods to their frame...") + playsound(src, I.usesound, 100, 1) + if(do_after(user, 40 * I.toolspeed, target = src)) + if(!istype(src, /turf/simulated/wall/r_wall) || !I || d_state != RWALL_SUPPORT_RODS) + return TRUE + d_state = RWALL_BOLTS + update_icon() + to_chat(user, "You tighten the bolts anchoring the support rods.") + return TRUE + + if(RWALL_SHEATH) + // RWALL_SHEATH > deconstructed + if(iscrowbar(I)) + to_chat(user, "You struggle to pry off the outer sheath...") + playsound(src, I.usesound, 100, 1) + + if(do_after(user, 100 * I.toolspeed, target = src) && d_state == RWALL_SHEATH) + to_chat(user, "You pry off the outer sheath.") + dismantle_wall() + return TRUE + +/turf/simulated/wall/r_wall/try_destroy(obj/item/I, mob/user, params) + if(istype(I, /obj/item/pickaxe/drill/diamonddrill)) + to_chat(user, "You begin to drill though the wall...") + + if(do_after(user, 800 * I.toolspeed, target = src)) // Diamond drill has 0.25 toolspeed, so 200 + to_chat(user, "Your drill tears through the last of the reinforced plating.") + dismantle_wall() + return TRUE + + if(istype(I, /obj/item/pickaxe/drill/jackhammer)) + to_chat(user, "You begin to disintegrate the wall...") + + if(do_after(user, 1000 * I.toolspeed, target = src)) // Jackhammer has 0.1 toolspeed, so 100 + to_chat(user, "Your sonic jackhammer disintegrates the reinforced plating.") + dismantle_wall() + return TRUE - //Finally, CHECKING FOR FALSE WALLS if it isn't damaged - else if(!d_state) - return attack_hand(user) - return /turf/simulated/wall/r_wall/singularity_pull(S, current_size) if(current_size >= STAGE_FIVE) diff --git a/code/game/turfs/space/transit.dm b/code/game/turfs/space/transit.dm index 611ff1656f3..2831894e3ea 100644 --- a/code/game/turfs/space/transit.dm +++ b/code/game/turfs/space/transit.dm @@ -94,8 +94,7 @@ var/max = world.maxx-TRANSITIONEDGE var/min = 1+TRANSITIONEDGE - var/datum/space_level/dest = pick(levels_by_trait(REACHABLE)) - var/_z = dest.zpos //select a random space zlevel + var/_z = pick(levels_by_trait(REACHABLE)) //select a random space zlevel //now select coordinates for a border turf var/_x diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm index b9a51a661d1..32d5824c4d5 100644 --- a/code/game/verbs/suicide.dm +++ b/code/game/verbs/suicide.dm @@ -84,7 +84,7 @@ do_suicide(damagetype, held_item) return - to_chat(viewers(src), "[src] [pick(species.suicide_messages)] It looks like they're trying to commit suicide.") + to_chat(viewers(src), "[src] [replacetext(pick(species.suicide_messages), "their", p_their())] It looks like [p_theyre()] trying to commit suicide.") do_suicide(0) updatehealth() @@ -129,7 +129,7 @@ if(confirm == "Yes") suiciding = 1 - to_chat(viewers(src), "[src] is powering down. It looks like \he's trying to commit suicide.") + to_chat(viewers(src), "[src] is powering down. It looks like [p_theyre()] trying to commit suicide.") //put em at -175 adjustOxyLoss(max(maxHealth * 2 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) updatehealth() @@ -149,7 +149,7 @@ if(confirm == "Yes") suiciding = 1 - to_chat(viewers(src), "[src] is powering down. It looks like \he's trying to commit suicide.") + to_chat(viewers(src), "[src] is powering down. It looks like [p_theyre()] trying to commit suicide.") //put em at -175 adjustOxyLoss(max(maxHealth * 2 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) updatehealth() @@ -186,7 +186,7 @@ if(confirm == "Yes") suiciding = 1 - to_chat(viewers(src), "[src] is thrashing wildly! It looks like \he's trying to commit suicide.") + to_chat(viewers(src), "[src] is thrashing wildly! It looks like [p_theyre()] trying to commit suicide.") //put em at -175 adjustOxyLoss(max(175 - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) updatehealth() diff --git a/code/game/world.dm b/code/game/world.dm index 7d592864501..ffb9dfb1ecd 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -362,7 +362,7 @@ var/world_topic_spam_protect_time = world.timeofday /world/proc/load_motd() join_motd = file2text("config/motd.txt") - + GLOB.join_tos = file2text("config/tos.txt") /proc/load_configuration() config = new /datum/configuration() diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm index b97993d5327..4c905a0b517 100644 --- a/code/modules/admin/IsBanned.dm +++ b/code/modules/admin/IsBanned.dm @@ -93,7 +93,7 @@ world/IsBanned(key,address,computer_id) var/appealmessage = "" if(config.banappeals) appealmessage = " You may appeal it at [config.banappeals]." - expires = " The is a permanent ban.[appealmessage]" + expires = " This is a permanent ban.[appealmessage]" var/desc = "\nReason: You, or another user of this computer or connection ([pckey]) is banned from playing here. The ban reason is:\n[reason]\nThis ban was applied by [ackey] on [bantime].[expires]" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index b155ddc13dd..051f450179b 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -9,15 +9,17 @@ var/global/nologevent = 0 if(C.prefs && !(C.prefs.toggles & CHAT_NO_ADMINLOGS)) to_chat(C, msg) -/proc/msg_admin_attack(var/text) //Toggleable Attack Messages +/proc/msg_admin_attack(var/text, var/loglevel) if(!nologevent) var/rendered = "ATTACK: [text]" for(var/client/C in admins) if(R_ADMIN & C.holder.rights) - if(C.prefs.toggles & CHAT_ATTACKLOGS) - if(!istype(C, /mob/living)) - var/msg = rendered - to_chat(C, msg) + if(C.prefs.atklog == ATKLOG_NONE) + continue + var/msg = rendered + if(C.prefs.atklog <= loglevel) + to_chat(C, msg) + /proc/message_adminTicket(var/msg) msg = "ADMIN TICKET: [msg]" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 80fbca96dac..91c237a0328 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -868,10 +868,10 @@ var/list/admin_verbs_ticket = list( switch(alert("Do you wish for [H] to be allowed to select non-whitelisted races?","Alter Mob Appearance","Yes","No","Cancel")) if("Yes") - admin_log_and_message_admins("has allowed [H] to change \his appearance, without whitelisting of races.") + admin_log_and_message_admins("has allowed [H] to change [H.p_their()] appearance, without whitelisting of races.") H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 0) if("No") - admin_log_and_message_admins("has allowed [H] to change \his appearance, with whitelisting of races.") + admin_log_and_message_admins("has allowed [H] to change [H.p_their()] appearance, with whitelisting of races.") H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 1) feedback_add_details("admin_verb","CMAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -902,12 +902,27 @@ var/list/admin_verbs_ticket = list( if(!check_rights(R_ADMIN)) return - prefs.toggles ^= CHAT_ATTACKLOGS - prefs.save_preferences(src) - if(prefs.toggles & CHAT_ATTACKLOGS) - to_chat(usr, "You now will get attack log messages") + if(prefs.atklog == ATKLOG_ALL) + prefs.atklog = ATKLOG_ALMOSTALL + to_chat(usr, "Your attack logs preference is now: show ALMOST ALL attack logs (notable exceptions: NPCs attacking other NPCs, vampire bites, equipping/stripping, people pushing each other over)") + else if(prefs.atklog == ATKLOG_ALMOSTALL) + prefs.atklog = ATKLOG_MOST + to_chat(usr, "Your attack logs preference is now: show MOST attack logs (like ALMOST ALL, except that it also hides attacks by players on NPCs)") + else if(prefs.atklog == ATKLOG_MOST) + prefs.atklog = ATKLOG_FEW + to_chat(usr, "Your attack logs preference is now: show FEW attack logs (only the most important stuff: attacks on SSDs, use of explosives, messing with the engine, gibbing, AI wiping, forcefeeding, acid sprays, and organ extraction)") + else if(prefs.atklog == ATKLOG_FEW) + prefs.atklog = ATKLOG_NONE + to_chat(usr, "Your attack logs preference is now: show NO attack logs") + else if(prefs.atklog == ATKLOG_NONE) + prefs.atklog = ATKLOG_ALL + to_chat(usr, "Your attack logs preference is now: show ALL attack logs") else - to_chat(usr, "You now won't get attack log messages") + prefs.atklog = ATKLOG_ALL + to_chat(usr, "Your attack logs preference is now: show ALL attack logs (your preference was set to an invalid value, it has been reset)") + + prefs.save_preferences(src) + /client/proc/toggleadminlogs() set name = "Toggle Admin Log Messages" diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index 21731cc8b7a..fe487ae6431 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -25,8 +25,6 @@ Show current traitors and objectives
Set Night Shift Mode
Bombs
- Bombing List   - Remove all bombs currently in existence [check_rights(R_SERVER, 0) ? "  Toggle bomb cap
" : "
"] Lists
Show last [length(lastsignalers)] signalers   @@ -82,7 +80,6 @@ Security Level - Delta
Create Weather
Weather - Ash Storm   - Weather - Advanced Darkness  
"} @@ -130,5 +127,3 @@ var/datum/browser/popup = new(usr, "secrets", "
Admin Secrets
", 630, 670) popup.set_content(dat) popup.open(0) - - diff --git a/code/modules/admin/tickets/admintickets.dm b/code/modules/admin/tickets/admintickets.dm index 5ef1f58dbf5..ea5f7003870 100644 --- a/code/modules/admin/tickets/admintickets.dm +++ b/code/modules/admin/tickets/admintickets.dm @@ -104,7 +104,7 @@ var/global/datum/adminTicketHolder/globAdminTicketHolder = new /datum/adminTicke /datum/adminTicketHolder/proc/checkForTicket(var/client/C) var/list/tickets = list() for(var/datum/admin_ticket/T in allTickets) - if(T.clientName == C && T.ticketState == ADMIN_TICKET_OPEN || T.ticketState == ADMIN_TICKET_STALE) + if(T.clientName == C && (T.ticketState == ADMIN_TICKET_OPEN || T.ticketState == ADMIN_TICKET_STALE)) tickets += T if(tickets.len) return tickets diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 44328429dc0..abfc807f9df 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -39,35 +39,35 @@ switch(href_list["makeAntag"]) if("1") log_admin("[key_name(usr)] has spawned a traitor.") - if(!src.makeTraitors()) + if(!makeTraitors()) to_chat(usr, "Unfortunately there weren't enough candidates available.") if("2") log_admin("[key_name(usr)] has spawned a changeling.") - if(!src.makeChanglings()) + if(!makeChangelings()) to_chat(usr, "Unfortunately there weren't enough candidates available.") if("3") log_admin("[key_name(usr)] has spawned revolutionaries.") - if(!src.makeRevs()) + if(!makeRevs()) to_chat(usr, "Unfortunately there weren't enough candidates available.") if("4") log_admin("[key_name(usr)] has spawned a cultists.") - if(!src.makeCult()) + if(!makeCult()) to_chat(usr, "Unfortunately there weren't enough candidates available.") if("5") log_admin("[key_name(usr)] has spawned a wizard.") - if(!src.makeWizard()) + if(!makeWizard()) to_chat(usr, "Unfortunately there weren't enough candidates available.") if("6") log_admin("[key_name(usr)] has spawned vampires.") - if(!src.makeVampires()) + if(!makeVampires()) to_chat(usr, "Unfortunately there weren't enough candidates available.") if("7") log_admin("[key_name(usr)] has spawned vox raiders.") - if(!src.makeVoxRaiders()) + if(!makeVoxRaiders()) to_chat(usr, "Unfortunately there weren't enough candidates available.") if("8") log_admin("[key_name(usr)] has spawned an abductor team.") - if(!src.makeAbductorTeam()) + if(!makeAbductorTeam()) to_chat(usr, "Unfortunately there weren't enough candidates available.") else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"] || href_list["dbsearchip"] || href_list["dbsearchcid"] || href_list["dbsearchbantype"]) @@ -1622,14 +1622,14 @@ H.equip_to_slot_or_del( new /obj/item/reagent_containers/food/snacks/cookie(H), slot_r_hand ) if(!(istype(H.r_hand,/obj/item/reagent_containers/food/snacks/cookie))) log_admin("[key_name(H)] has their hands full, so they did not receive their cookie, spawned by [key_name(src.owner)].") - message_admins("[key_name_admin(H)] has their hands full, so they did not receive their cookie, spawned by [key_name_admin(src.owner)].") + message_admins("[key_name_admin(H)] has [H.p_their()] hands full, so [H.p_they()] did not receive [H.p_their()] cookie, spawned by [key_name_admin(src.owner)].") return else H.update_inv_r_hand()//To ensure the icon appears in the HUD else H.update_inv_l_hand() log_admin("[key_name(H)] got their cookie, spawned by [key_name(src.owner)]") - message_admins("[key_name_admin(H)] got their cookie, spawned by [key_name_admin(src.owner)]") + message_admins("[key_name_admin(H)] got [H.p_their()] cookie, spawned by [key_name_admin(src.owner)]") feedback_inc("admin_cookies_spawned",1) to_chat(H, "Your prayers have been answered!! You received the best cookie!") @@ -1683,7 +1683,7 @@ to_chat(usr, "The person you are trying to contact is not wearing a headset") return - var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from Centcomm", "") + var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via [H.p_their()] headset.","Outgoing message from Centcomm", "") if(!input) return to_chat(src.owner, "You sent [input] to [H] via a secure channel.") @@ -1941,7 +1941,7 @@ newtraitor.mind.special_role = SPECIAL_ROLE_TRAITOR var/datum/atom_hud/antag/tatorhud = huds[ANTAG_HUD_TRAITOR] tatorhud.join_hud(newtraitor) - ticker.mode.set_antag_hud(newtraitor, "hudsyndicate") + set_antag_hud(newtraitor, "hudsyndicate") else to_chat(usr, "ERROR: Failed to create a traitor.") return @@ -2045,7 +2045,7 @@ if(!istype(H.l_ear, /obj/item/radio/headset) && !istype(H.r_ear, /obj/item/radio/headset)) to_chat(usr, "The person you are trying to contact is not wearing a headset") return - var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from The Syndicate", "") + var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via [H.p_their()] headset.","Outgoing message from The Syndicate", "") if(!input) return to_chat(src.owner, "You sent [input] to [H] via a secure channel.") @@ -2061,7 +2061,7 @@ to_chat(usr, "The person you are trying to contact is not wearing a headset") return - var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from HONKplanet", "") + var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via [H.p_their()] headset.","Outgoing message from HONKplanet", "") if(!input) return to_chat(src.owner, "You sent [input] to [H] via a secure channel.") @@ -2727,48 +2727,6 @@ for(var/mob/M in player_list) if(M.stat != 2) M.show_message(text("The chilling wind suddenly stops..."), 1) -/* if("shockwave") - ok = 1 - to_chat(world, "ALERT: STATION STRESS CRITICAL") - sleep(60) - to_chat(world, "ALERT: STATION STRESS CRITICAL. TOLERABLE LEVELS EXCEEDED!") - sleep(80) - to_chat(world, "ALERT: STATION STRUCTURAL STRESS CRITICAL. SAFETY MECHANISMS FAILED!") - sleep(40) - for(var/mob/M in world) - shake_camera(M, 400, 1) - for(var/obj/structure/window/W in world) - spawn(0) - sleep(rand(10,400)) - W.ex_act(rand(2,1)) - for(var/obj/structure/grille/G in world) - spawn(0) - sleep(rand(20,400)) - G.ex_act(rand(2,1)) - for(var/obj/machinery/door/D in world) - spawn(0) - sleep(rand(20,400)) - D.ex_act(rand(2,1)) - for(var/turf/station/floor/Floor in world) - spawn(0) - sleep(rand(30,400)) - Floor.ex_act(rand(2,1)) - for(var/obj/structure/cable/Cable in world) - spawn(0) - sleep(rand(30,400)) - Cable.ex_act(rand(2,1)) - for(var/obj/structure/closet/Closet in world) - spawn(0) - sleep(rand(30,400)) - Closet.ex_act(rand(2,1)) - for(var/obj/machinery/Machinery in world) - spawn(0) - sleep(rand(30,400)) - Machinery.ex_act(rand(1,3)) - for(var/turf/station/wall/Wall in world) - spawn(0) - sleep(rand(30,400)) - Wall.ex_act(rand(2,1)) */ if("lightout") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","LO") @@ -2793,7 +2751,7 @@ var/sure = alert(usr, "Are you sure you want to do this?", "Confirmation", "Yes", "No") if(sure == "No") return - weather_master.run_weather("the floor is lava") + SSweather.run_weather(/datum/weather/floor_is_lava) message_admins("[key_name_admin(usr)] made the floor lava") if("fakelava") feedback_inc("admin_secrets_fun_used", 1) @@ -2801,7 +2759,7 @@ var/sure = alert(usr, "Are you sure you want to do this?", "Confirmation", "Yes", "No") if(sure == "No") return - weather_master.run_weather("fake lava") + SSweather.run_weather(/datum/weather/floor_is_lava/fake) message_admins("[key_name_admin(usr)] made aesthetic lava on the floor") if("weatherashstorm") feedback_inc("admin_secrets_fun_used", 1) @@ -2809,16 +2767,8 @@ var/sure = alert(usr, "Are you sure you want to do this?", "Confirmation", "Yes", "No") if(sure == "No") return - weather_master.run_weather("ash storm") + SSweather.run_weather(/datum/weather/ash_storm) message_admins("[key_name_admin(usr)] spawned an ash storm on the mining asteroid") - if("weatherdarkness") - feedback_inc("admin_secrets_fun_used", 1) - feedback_add_details("admin_secrets_fun_used", "WD") - var/sure = alert(usr, "Are you sure you want to do this?", "Confirmation", "Yes", "No") - if(sure == "No") - return - weather_master.run_weather("advanced darkness") - message_admins("[key_name_admin(usr)] made the station go through advanced darkness") if("retardify") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","RET") @@ -2957,13 +2907,6 @@ var/ok = 0 switch(href_list["secretsadmin"]) - if("clear_bombs") - //I do nothing - if("list_bombers") - var/dat = "Bombing List
" - for(var/l in bombers) - dat += text("[l]
") - usr << browse(dat, "window=bombers") if("list_signalers") var/dat = "Showing last [length(lastsignalers)] signalers.
" for(var/sig in lastsignalers) @@ -3432,11 +3375,11 @@ to_chat(hunter_mob, "ATTENTION: You are now on a mission!") to_chat(hunter_mob, "Goal: [killthem ? "MURDER" : "PROTECT"] [H.real_name], currently in [get_area(H.loc)]. "); if(killthem) - to_chat(hunter_mob, "If you kill them, they cannot be revived."); + to_chat(hunter_mob, "If you kill [H.p_them()], [H.p_they()] cannot be revived."); hunter_mob.mind.special_role = SPECIAL_ROLE_TRAITOR var/datum/atom_hud/antag/tatorhud = huds[ANTAG_HUD_TRAITOR] tatorhud.join_hud(hunter_mob) - ticker.mode.set_antag_hud(hunter_mob, "hudsyndicate") + set_antag_hud(hunter_mob, "hudsyndicate") /proc/admin_jump_link(var/atom/target) if(!target) return diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 2533eab0570..600a53d81eb 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -183,6 +183,8 @@ if(check_rights(R_ADMIN|R_MOD, 0, X.mob)) to_chat(X, "[type]: [key_name(src, TRUE, type)]->[key_name(C, TRUE, type)]: [emoji_msg]") + if(type == "Mentorhelp") + return //Check if the mob being PM'd has any open admin tickets. var/tickets = list() tickets = globAdminTicketHolder.checkForTicket(C) diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index f091e49f60e..2a0f78351e4 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -12,6 +12,7 @@ if(check_rights(R_ADMIN,0)) for(var/client/C in admins) if(R_ADMIN & C.holder.rights) + msg = "[msg]" to_chat(C, "ADMIN: [key_name(usr, 1)] ([admin_jump_link(mob)]): [msg]") feedback_add_details("admin_verb","M") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -38,6 +39,7 @@ display_name = "[holder.fakekey]/([key])" else display_name = holder.fakekey + msg = "[msg]" to_chat(C, "MENTOR: [display_name] ([admin_jump_link(mob)]): [msg]") feedback_add_details("admin_verb","MS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 00966ee31fc..682a174c450 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -266,7 +266,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(!choice) return 0 if(!istype(choice, /mob/dead/observer)) - var/confirm = input("[choice.key] isn't ghosting right now. Are you sure you want to yank him out of them out of their body and place them in this pAI?", "Spawn pAI Confirmation", "No") in list("Yes", "No") + var/confirm = input("[choice.key] isn't ghosting right now. Are you sure you want to yank [choice.p_them()] out of [choice.p_their()] body and place [choice.p_them()] in this pAI?", "Spawn pAI Confirmation", "No") in list("Yes", "No") if(confirm != "Yes") return 0 var/obj/item/paicard/card = new(T) diff --git a/code/modules/admin/verbs/infiltratorteam_syndicate.dm b/code/modules/admin/verbs/infiltratorteam_syndicate.dm index cba1beb2cf6..a3f30117cdd 100644 --- a/code/modules/admin/verbs/infiltratorteam_syndicate.dm +++ b/code/modules/admin/verbs/infiltratorteam_syndicate.dm @@ -109,7 +109,7 @@ var/global/sent_syndicate_infiltration_team = 0 new_syndicate_infiltrator.mind.store_memory("Starting Equipment:
- Syndicate Headset ((.h for your radio))
- Chameleon Jumpsuit ((right click to Change Color))
- Agent ID card ((disguise as another job))
- Uplink Implant ((top left of screen))
- Dust Implant ((destroys your body on death))
- Combat Gloves ((insulated, disguised as black gloves))
- Anything bought with your uplink implant") var/datum/atom_hud/antag/opshud = huds[ANTAG_HUD_OPS] opshud.join_hud(new_syndicate_infiltrator.mind.current) - ticker.mode.set_antag_hud(new_syndicate_infiltrator.mind.current, "hudoperative") + set_antag_hud(new_syndicate_infiltrator.mind.current, "hudoperative") new_syndicate_infiltrator.regenerate_icons() num_spawned++ if(!teamsize) @@ -127,7 +127,7 @@ var/global/sent_syndicate_infiltration_team = 0 syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate, slot_wear_mask) var/datum/atom_hud/antag/opshud = huds[ANTAG_HUD_OPS] opshud.join_hud(syndimgmtmob.mind.current) - ticker.mode.set_antag_hud(syndimgmtmob.mind.current, "hudoperative") + set_antag_hud(syndimgmtmob.mind.current, "hudoperative") syndimgmtmob.mind.special_role = "Syndicate Management Consultant" syndimgmtmob.regenerate_icons() to_chat(syndimgmtmob, "You have spawned as Syndicate Management. You should brief them on their mission before they go.") diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index 9b6c4363008..a87308bb9b1 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -92,7 +92,7 @@ var/intercom_range_display_status = 0 if(!(locate(/obj/structure/grille,T))) var/window_check = 0 for(var/obj/structure/window/W in T) - if(W.dir == turn(C1.dir,180) || W.is_fulltile() ) + if(W.dir == turn(C1.dir,180) || W.fulltile) window_check = 1 break if(!window_check) diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index dfca07426c5..c1e28a48f8d 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -46,6 +46,8 @@ var/list/VVpixelmovement = list("step_x", "step_y", "step_size", "bound_height", else if(isfile(var_value)) . = VV_FILE + else if(istype(var_value, /regex)) + . = VV_REGEX else . = VV_NULL @@ -66,6 +68,7 @@ var/list/VVpixelmovement = list("step_x", "step_y", "step_size", "bound_height", VV_DATUM_TYPE, VV_TYPE, VV_MATRIX, + VV_REGEX, VV_FILE, VV_NEW_ATOM, VV_NEW_DATUM, @@ -141,6 +144,14 @@ var/list/VVpixelmovement = list("step_x", "step_y", "step_size", "bound_height", .["class"] = null return + if(VV_REGEX) + var/reg = input("Enter regex", "Regex", "") as null|text + if(!reg) + return + .["value"] = regex(reg) + if(.["value"] == null) + .["class"] = null + if(VV_ATOM_REFERENCE) var/type = pick_closest_path(FALSE) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index b3f0a1a15a8..5c8e1c77745 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -25,6 +25,22 @@ client/proc/one_click_antag() usr << browse(dat, "window=oneclickantag;size=400x400") return +/datum/admins/proc/CandCheck(var/role = null, var/mob/living/carbon/human/M, var/datum/game_mode/temp = null) + // You pass in ROLE define (optional), the applicant, and the gamemode, and it will return true / false depending on whether the applicant qualify for the candidacy in question + if(jobban_isbanned(M, "Syndicate")) + return FALSE + if(M.stat || !M.mind || M.mind.special_role) + return FALSE + if(temp) + if(M.mind.assigned_role in temp.restricted_jobs || M.client.prefs.species in temp.protected_species) + return FALSE + if(role) // Don't even bother evaluating if there's no role + if(player_old_enough_antag(M.client,role) && (role in M.client.prefs.be_special) && (!jobban_isbanned(M, role))) + return TRUE + else + return FALSE + else + return TRUE /datum/admins/proc/makeTraitors() var/datum/game_mode/traitor/temp = new @@ -35,35 +51,29 @@ client/proc/one_click_antag() var/list/mob/living/carbon/human/candidates = list() var/mob/living/carbon/human/H = null - log_admin("[key_name(owner)] tried making Traitors with One-Click-Antag") - message_admins("[key_name_admin(owner)] tried making Traitors with One-Click-Antag") + var/antnum = input(owner, "How many traitors you want to create? Enter 0 to cancel","Amount:", 0) as num + if(!antnum || antnum <= 0) + return + log_admin("[key_name(owner)] tried making [antnum] traitors with One-Click-Antag") + message_admins("[key_name_admin(owner)] tried making [antnum] traitors with One-Click-Antag") for(var/mob/living/carbon/human/applicant in player_list) - if(ROLE_TRAITOR in applicant.client.prefs.be_special) - if(player_old_enough_antag(applicant.client,ROLE_TRAITOR)) - if(!applicant.stat) - if(applicant.mind) - if(!applicant.mind.special_role) - if(!jobban_isbanned(applicant, "traitor") && !jobban_isbanned(applicant, "Syndicate")) - if(!(applicant.mind.assigned_role in temp.restricted_jobs)) - if(!(applicant.client.prefs.species in temp.protected_species)) - candidates += applicant + if(CandCheck(ROLE_TRAITOR, applicant, temp)) + candidates += applicant if(candidates.len) - var/numTratiors = min(candidates.len, 3) + var/numTraitors = min(candidates.len, antnum) - for(var/i = 0, i300)//If more than 30 game seconds passed. + //Generates a list of commandos from active ghosts. Then the user picks which characters to respawn as the commandos. + for(var/mob/G in respawnable_list) + if(!jobban_isbanned(G, "Syndicate")) + spawn(0) + switch(alert(G,"Do you wish to be considered for an elite syndicate strike team being sent in?","Please answer in 30 seconds!","Yes","No")) + if("Yes") + if((world.time-time_passed)>300)//If more than 30 game seconds passed. + return + candidates += G + if("No") return - candidates += G - if("No") - return - else - return - sleep(300) + else + return + sleep(300) - for(var/mob/dead/observer/G in candidates) - if(!G.key) - candidates.Remove(G) + for(var/mob/dead/observer/G in candidates) + if(!G.key) + candidates.Remove(G) - if(candidates.len) - var/numagents = 6 - //Spawns commandos and equips them. - for(var/obj/effect/landmark/L in /area/syndicate_mothership/elite_squad) - if(numagents<=0) - break - if(L.name == "Syndicate-Commando") - syndicate_leader_selected = numagents == 1?1:0 - - var/mob/living/carbon/human/new_syndicate_commando = create_syndicate_death_commando(L, syndicate_leader_selected) - - - while((!theghost || !theghost.client) && candidates.len) - theghost = pick(candidates) - candidates.Remove(theghost) - - if(!theghost) - qdel(new_syndicate_commando) + if(candidates.len) + //Spawns commandos and equips them. + for(var/obj/effect/landmark/L in /area/syndicate_mothership/elite_squad) + if(antnum <= 0) break + if(L.name == "Syndicate-Commando") + syndicate_leader_selected = antnum == 1?1:0 - new_syndicate_commando.key = theghost.key - new_syndicate_commando.internal = new_syndicate_commando.s_store - new_syndicate_commando.update_action_buttons_icon() + var/mob/living/carbon/human/new_syndicate_commando = create_syndicate_death_commando(L, syndicate_leader_selected) - //So they don't forget their code or mission. + while((!theghost || !theghost.client) && candidates.len) + theghost = pick(candidates) + candidates.Remove(theghost) + + if(!theghost) + qdel(new_syndicate_commando) + break + + new_syndicate_commando.key = theghost.key + new_syndicate_commando.internal = new_syndicate_commando.s_store + new_syndicate_commando.update_action_buttons_icon() + + //So they don't forget their code or mission. - to_chat(new_syndicate_commando, "You are an Elite Syndicate. [!syndicate_leader_selected ? "commando" : "LEADER"] in the service of the Syndicate. \nYour current mission is: [input]") + to_chat(new_syndicate_commando, "You are an Elite Syndicate. [!syndicate_leader_selected ? "commando" : "LEADER"] in the service of the Syndicate. \nYour current mission is: [input]") - numagents-- - if(numagents >= 6) - return 0 - - for(var/obj/effect/landmark/L in /area/shuttle/syndicate_elite) - if(L.name == "Syndicate-Commando-Bomb") - new /obj/effect/spawner/newbomb/timer/syndicate(L.loc) + antnum-- + for(var/obj/effect/landmark/L in /area/shuttle/syndicate_elite) + if(L.name == "Syndicate-Commando-Bomb") + new /obj/effect/spawner/newbomb/timer/syndicate(L.loc) return 1 @@ -429,10 +431,12 @@ client/proc/one_click_antag() var/leader_chosen = 0 //when the leader is chosen. The last person spawned. + var/antnum = input(owner, "How many raiders you want to create? Enter 0 to cancel.","Amount:", 0) as num + if(!antnum || antnum <= 0) + return log_admin("[key_name(owner)] tried making Vox Raiders with One-Click-Antag") message_admins("[key_name_admin(owner)] tried making Vox Raiders with One-Click-Antag") - - //Generates a list of candidates from active ghosts. +//Generates a list of candidates from active ghosts. for(var/mob/G in respawnable_list) if(istype(G) && G.client && (ROLE_RAIDER in G.client.prefs.be_special)) if(player_old_enough_antag(G.client,ROLE_RAIDER)) @@ -455,8 +459,7 @@ client/proc/one_click_antag() candidates.Remove(G) if(candidates.len) - var/max_raiders = 1 - var/raiders = max_raiders + var/raiders = min(antnum, candidates.len) //Spawns vox raiders and equips them. for(var/obj/effect/landmark/L in world) if(L.name == "voxstart") @@ -480,8 +483,6 @@ client/proc/one_click_antag() to_chat(new_vox, "Don't forget to turn on your nitrogen internals!") raiders-- - if(raiders > max_raiders) - return 0 else return 0 return 1 @@ -534,32 +535,26 @@ client/proc/one_click_antag() var/list/mob/living/carbon/human/candidates = list() var/mob/living/carbon/human/H = null + var/antnum = input(owner, "How many vampires you want to create? Enter 0 to cancel","Amount:", 0) as num + if(!antnum || antnum <= 0) + return + log_admin("[key_name(owner)] tried making Vampires with One-Click-Antag") message_admins("[key_name_admin(owner)] tried making Vampires with One-Click-Antag") for(var/mob/living/carbon/human/applicant in player_list) - if(ROLE_VAMPIRE in applicant.client.prefs.be_special) - if(player_old_enough_antag(applicant.client,ROLE_VAMPIRE)) - if(!applicant.stat) - if(applicant.mind) - if(!applicant.mind.special_role) - if(!jobban_isbanned(applicant, "vampire") && !jobban_isbanned(applicant, "Syndicate")) - if(!(applicant.job in temp.restricted_jobs)) - if(!(applicant.client.prefs.species in temp.protected_species)) - candidates += applicant + if(CandCheck(ROLE_VAMPIRE, applicant, temp)) + candidates += applicant if(candidates.len) - var/numVampires = min(candidates.len, 3) + var/numVampires = min(candidates.len, antnum) for(var/i = 0, iNobody volunteered to join the DeathSquad.
") return @@ -47,53 +47,62 @@ var/global/sent_strike_team = 0 // Spawns commandos and equips them. var/commando_number = commandos_possible //for selecting a leader var/is_leader = TRUE // set to FALSE after leader is spawned + for(var/obj/effect/landmark/L in landmarks_list) - if(commando_number<=0) break + + if(commando_number <= 0) + break + if(L.name == "Commando") - spawn(0) - var/use_ds_borg = FALSE - var/ghost_key // Ghost ckey that we intend to put into the commando. Can remain undefined if we don't have one. - if(commando_ckeys.len) - ghost_key = pick(commando_ckeys) - commando_ckeys -= ghost_key - if(!is_leader) - var/new_gender = alert(src, "Select Deathsquad Type.", "DS Character Generation", "Organic", "Cyborg") - if(new_gender == "Cyborg") - use_ds_borg = TRUE + if(!commando_ghosts.len) + break - if(use_ds_borg) - var/mob/living/silicon/robot/deathsquad/R = new() - R.forceMove(get_turf(L)) - var/rnum = rand(1,1000) - var/borgname = "Epsilon [rnum]" - R.name = borgname - R.custom_name = borgname - R.real_name = R.name - R.mind = new - R.mind.current = R - R.mind.original = R - R.mind.assigned_role = SPECIAL_ROLE_DEATHSQUAD - R.mind.special_role = SPECIAL_ROLE_DEATHSQUAD - if(!(R.mind in ticker.minds)) - ticker.minds += R.mind - ticker.mode.traitors += R.mind - if(ghost_key) - R.key = ghost_key - if(nuke_code) - R.mind.store_memory("Nuke Code: [nuke_code].") - R.mind.store_memory("Mission: [input].") - to_chat(R, "You are a Special Operations cyborg, in the service of Central Command. \nYour current mission is: [input]") - else - var/mob/living/carbon/human/new_commando = create_death_commando(L, is_leader) - if(ghost_key) - new_commando.key = ghost_key - new_commando.internal = new_commando.s_store - new_commando.update_action_buttons_icon() - if(nuke_code) - new_commando.mind.store_memory("Nuke Code: [nuke_code].") - new_commando.mind.store_memory("Mission: [input].") - to_chat(new_commando, "You are a Special Ops [is_leader ? "TEAM LEADER" : "commando"] in the service of Central Command. Check the table ahead for detailed instructions.\nYour current mission is: [input]") + var/use_ds_borg = FALSE + var/mob/ghost_mob = pick(commando_ghosts) + commando_ghosts -= ghost_mob + if(!ghost_mob || !ghost_mob.key || !ghost_mob.client) + continue + + if(!is_leader) + var/new_dstype = alert(ghost_mob.client, "Select Deathsquad Type.", "DS Character Generation", "Organic", "Cyborg") + if(new_dstype == "Cyborg") + use_ds_borg = TRUE + + if(!ghost_mob || !ghost_mob.key || !ghost_mob.client) // Have to re-check this due to the above alert() call + continue + + if(use_ds_borg) + var/mob/living/silicon/robot/deathsquad/R = new() + R.forceMove(get_turf(L)) + var/rnum = rand(1,1000) + var/borgname = "Epsilon [rnum]" + R.name = borgname + R.custom_name = borgname + R.real_name = R.name + R.mind = new + R.mind.current = R + R.mind.original = R + R.mind.assigned_role = SPECIAL_ROLE_DEATHSQUAD + R.mind.special_role = SPECIAL_ROLE_DEATHSQUAD + if(!(R.mind in ticker.minds)) + ticker.minds += R.mind + ticker.mode.traitors += R.mind + R.key = ghost_mob.key + if(nuke_code) + R.mind.store_memory("Nuke Code: [nuke_code].") + R.mind.store_memory("Mission: [input].") + to_chat(R, "You are a Special Operations cyborg, in the service of Central Command. \nYour current mission is: [input]") + else + var/mob/living/carbon/human/new_commando = create_death_commando(L, is_leader) + new_commando.mind.key = ghost_mob.key + new_commando.key = ghost_mob.key + new_commando.internal = new_commando.s_store + new_commando.update_action_buttons_icon() + if(nuke_code) + new_commando.mind.store_memory("Nuke Code: [nuke_code].") + new_commando.mind.store_memory("Mission: [input].") + to_chat(new_commando, "You are a Special Ops [is_leader ? "TEAM LEADER" : "commando"] in the service of Central Command. Check the table ahead for detailed instructions.\nYour current mission is: [input]") is_leader = FALSE commando_number-- @@ -133,6 +142,7 @@ var/global/sent_strike_team = 0 A.real_name = "[commando_rank] [commando_name]" A.copy_to(new_commando) + new_commando.dna.ready_dna(new_commando)//Creates DNA. //Creates mind stuff. diff --git a/code/modules/admin/verbs/striketeam_syndicate.dm b/code/modules/admin/verbs/striketeam_syndicate.dm index ec31632208e..c5f46c98592 100644 --- a/code/modules/admin/verbs/striketeam_syndicate.dm +++ b/code/modules/admin/verbs/striketeam_syndicate.dm @@ -45,8 +45,8 @@ var/global/sent_syndicate_strike_team = 0 break // Find ghosts willing to be SST - var/list/commando_ckeys = pollCandidatesByKeyWithVeto(src, usr, syndicate_commandos_possible, "Join the Syndicate Strike Team?",, 21, 600, 1, role_playtime_requirements[ROLE_DEATHSQUAD], TRUE, FALSE) - if(!commando_ckeys.len) + var/list/commando_ghosts = pollCandidatesWithVeto(src, usr, syndicate_commandos_possible, "Join the Syndicate Strike Team?",, 21, 600, 1, role_playtime_requirements[ROLE_DEATHSQUAD], TRUE, FALSE) + if(!commando_ghosts.len) to_chat(usr, "Nobody volunteered to join the SST.") return @@ -54,15 +54,29 @@ var/global/sent_syndicate_strike_team = 0 //Spawns commandos and equips them. for(var/obj/effect/landmark/L in landmarks_list) - if(syndicate_commando_number<=0) break + + if(syndicate_commando_number <= 0) + break + if(L.name == "Syndicate-Commando") + + if(!commando_ghosts.len) + break + + var/mob/ghost_mob = pick(commando_ghosts) + commando_ghosts -= ghost_mob + + if(!ghost_mob || !ghost_mob.key || !ghost_mob.client) + continue + var/mob/living/carbon/human/new_syndicate_commando = create_syndicate_death_commando(L, is_leader) - if(commando_ckeys.len) - new_syndicate_commando.key = pick(commando_ckeys) - commando_ckeys -= new_syndicate_commando.key - new_syndicate_commando.internal = new_syndicate_commando.s_store - new_syndicate_commando.update_action_buttons_icon() + if(!new_syndicate_commando) + continue + + new_syndicate_commando.key = ghost_mob.key + new_syndicate_commando.internal = new_syndicate_commando.s_store + new_syndicate_commando.update_action_buttons_icon() //So they don't forget their code or mission. if(nuke_code) diff --git a/code/modules/alarm/alarm.dm b/code/modules/alarm/alarm.dm index ac8b65d9d82..1d4a570999a 100644 --- a/code/modules/alarm/alarm.dm +++ b/code/modules/alarm/alarm.dm @@ -134,5 +134,3 @@ /mob/living/silicon/robot/syndicate/get_alarm_cameras() return list() - -#undef ALARM_LOSS_DELAY diff --git a/code/datums/antagonists/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm similarity index 78% rename from code/datums/antagonists/antag_datum.dm rename to code/modules/antagonists/_common/antag_datum.dm index 51ca4e5d39c..39053fa79d9 100644 --- a/code/datums/antagonists/antag_datum.dm +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -13,14 +13,6 @@ GLOBAL_LIST_EMPTY(antagonists) 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 - var/antag_moodlet //typepath of moodlet that the mob will gain with their status - - //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 - var/show_name_in_check_antagonists = FALSE //Will append antagonist name in admin listings - use for categories that share more than one antag type - - /datum/antagonist/New() GLOB.antagonists += src @@ -110,4 +102,36 @@ GLOBAL_LIST_EMPTY(antagonists) //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 \ No newline at end of file diff --git a/code/datums/antagonists/antag_helpers.dm b/code/modules/antagonists/_common/antag_helpers.dm similarity index 100% rename from code/datums/antagonists/antag_helpers.dm rename to code/modules/antagonists/_common/antag_helpers.dm diff --git a/code/game/gamemodes/antag_hud.dm b/code/modules/antagonists/_common/antag_hud.dm similarity index 78% rename from code/game/gamemodes/antag_hud.dm rename to code/modules/antagonists/_common/antag_hud.dm index 4b290932e8e..693b0b9450d 100644 --- a/code/game/gamemodes/antag_hud.dm +++ b/code/modules/antagonists/_common/antag_hud.dm @@ -1,11 +1,12 @@ /datum/atom_hud/antag hud_icons = list(SPECIALROLE_HUD,NATIONS_HUD) - var/self_visible = 1 + var/self_visible = TRUE /datum/atom_hud/antag/hidden - self_visible = 0 + self_visible = FALSE -/datum/atom_hud/antag/proc/join_hud(mob/M,var/slave) +/datum/atom_hud/antag/proc/join_hud(mob/M, slave) + //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 && !slave) //note: please let this runtime if a mob has no mind, as mindless mobs shouldn't be getting antagged @@ -16,6 +17,8 @@ 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) @@ -26,7 +29,7 @@ //GAME_MODE PROCS //called to set a mob's antag icon state -/datum/game_mode/proc/set_antag_hud(mob/M, new_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[SPECIALROLE_HUD] @@ -36,7 +39,7 @@ M.mind.antag_hud_icon_state = new_icon_state //Nations Icons -/datum/game_mode/proc/set_nations_hud(mob/M, new_icon_state) +/proc/set_nations_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[NATIONS_HUD] @@ -47,9 +50,9 @@ //MIND PROCS //these are called by mind.transfer_to() -/datum/mind/proc/transfer_antag_huds(var/datum/atom_hud/antag/newhud) +/datum/mind/proc/transfer_antag_huds(datum/atom_hud/antag/newhud) leave_all_huds() - ticker.mode.set_antag_hud(current, antag_hud_icon_state) + set_antag_hud(current, antag_hud_icon_state) if(newhud) newhud.join_hud(current) @@ -77,11 +80,11 @@ name = mastername thrallhud = new() -/datum/mindslaves/proc/add_serv_hud(datum/mind/serv_mind,var/icon) - thrallhud.join_hud(serv_mind.current,1) +/datum/mindslaves/proc/add_serv_hud(datum/mind/serv_mind, icon) + thrallhud.join_hud(serv_mind.current, 1) icontype = "hud[icon]" - ticker.mode.set_antag_hud(serv_mind.current,icontype) + set_antag_hud(serv_mind.current, icontype) /datum/mindslaves/proc/leave_serv_hud(datum/mind/free_mind) thrallhud.leave_hud(free_mind.current) - ticker.mode.set_antag_hud(free_mind.current,null) \ No newline at end of file + set_antag_hud(free_mind.current, null) \ 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 89% rename from code/game/gamemodes/antag_spawner.dm rename to code/modules/antagonists/_common/antag_spawner.dm index 23fed691ec6..c81f30efc83 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/modules/antagonists/_common/antag_spawner.dm @@ -2,12 +2,12 @@ throw_speed = 1 throw_range = 5 w_class = WEIGHT_CLASS_TINY - var/used = 0 + var/used = FALSE -/obj/item/antag_spawner/proc/spawn_antag(var/client/C, var/turf/T, var/type = "") +/obj/item/antag_spawner/proc/spawn_antag(client/C, turf/T, type = "") return -/obj/item/antag_spawner/proc/equip_antag(mob/target as mob) +/obj/item/antag_spawner/proc/equip_antag(mob/target) return @@ -16,41 +16,41 @@ desc = "A single-use teleporter used to deploy a Syndicate Cyborg on the field." icon = 'icons/obj/device.dmi' icon_state = "locator" - var/checking = 0 + var/checking = FALSE var/TC_cost = 0 var/borg_to_spawn var/list/possible_types = list("Assault", "Medical") -/obj/item/antag_spawner/borg_tele/attack_self(mob/user as mob) +/obj/item/antag_spawner/borg_tele/attack_self(mob/user) if(used) to_chat(user, "[src] is out of power!") return if(!(user.mind in ticker.mode.syndicates)) to_chat(user, "AUTHENTICATION FAILURE. ACCESS DENIED.") - return 0 + return FALSE if(checking) to_chat(user, "[src] is already checking for possible borgs.") return borg_to_spawn = input("What type of borg would you like to teleport?", "Cyborg Type", type) as null|anything in possible_types if(!borg_to_spawn || checking || used) return - checking = 1 + checking = TRUE to_chat(user, "The device is now checking for possible borgs.") var/list/borg_candidates = pollCandidates("Do you want to play as a Syndicate [borg_to_spawn] borg?", ROLE_OPERATIVE, 1) if(borg_candidates.len > 0 && !used) - checking = 0 - used = 1 + checking = FALSE + used = TRUE var/mob/M = pick(borg_candidates) var/client/C = M.client spawn_antag(C, get_turf(src.loc), "syndieborg") else - checking = 0 + checking = FALSE 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.") return -/obj/item/antag_spawner/borg_tele/spawn_antag(var/client/C, var/turf/T, var/type = "") +/obj/item/antag_spawner/borg_tele/spawn_antag(client/C, turf/T, type = "") if(!borg_to_spawn) //If there's no type at all, let it still be used but don't do anything - used = 0 + used = FALSE return var/datum/effect_system/spark_spread/S = new /datum/effect_system/spark_spread S.set_up(4, 1, src) @@ -79,7 +79,7 @@ var/objective_verb = "Kill" var/mob/living/demon_type = /mob/living/simple_animal/slaughter -/obj/item/antag_spawner/slaughter_demon/attack_self(mob/user as mob) +/obj/item/antag_spawner/slaughter_demon/attack_self(mob/user) if(level_blocks_magic(user.z))//this is to make sure the wizard does NOT summon a demon from the Den.. to_chat(user, "You should probably wait until you reach the station.") return @@ -87,7 +87,7 @@ if(used) to_chat(user, "This bottle already has a broken seal.") return - used = 1 + used = TRUE to_chat(user, "You break the seal on the bottle, calling upon the dire spirits of the underworld...") var/list/candidates = pollCandidates("Do you want to play as a slaughter demon summoned by [user.real_name]?", ROLE_DEMON, 1, 100) @@ -100,10 +100,10 @@ playsound(user.loc, 'sound/effects/Glassbr1.ogg', 100, 1) qdel(src) else - used = 0 + used = FALSE to_chat(user, "The demons do not respond to your summon. Perhaps you should try again later.") -/obj/item/antag_spawner/slaughter_demon/spawn_antag(var/client/C, var/turf/T, var/type = "", mob/user as mob) +/obj/item/antag_spawner/slaughter_demon/spawn_antag(client/C, turf/T, type = "", mob/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.vialspawned = TRUE diff --git a/code/datums/antagonists/antag_team.dm b/code/modules/antagonists/_common/antag_team.dm similarity index 100% rename from code/datums/antagonists/antag_team.dm rename to code/modules/antagonists/_common/antag_team.dm diff --git a/code/modules/antagonists/wishgranter/wishgranter.dm b/code/modules/antagonists/wishgranter/wishgranter.dm new file mode 100644 index 00000000000..54d12867ac1 --- /dev/null +++ b/code/modules/antagonists/wishgranter/wishgranter.dm @@ -0,0 +1,81 @@ +/datum/antagonist/wishgranter + name = "Wishgranter Avatar" + +/datum/antagonist/wishgranter/proc/forge_objectives() + var/datum/objective/hijack/hijack = new + hijack.owner = owner + objectives += hijack + owner.objectives |= objectives + +/datum/antagonist/wishgranter/on_gain() + owner.special_role = "Avatar of the Wish Granter" + forge_objectives() + . = ..() + give_powers() + +/datum/antagonist/wishgranter/greet() + to_chat(owner.current, "Your inhibitions are swept away, the bonds of loyalty broken, you are free to murder as you please!") + owner.announce_objectives() + +/datum/antagonist/wishgranter/proc/give_powers() + var/mob/living/carbon/human/H = owner.current + if(!istype(H)) + return + H.ignore_gene_stability = TRUE + H.dna.SetSEState(HULKBLOCK, TRUE) + genemutcheck(H, HULKBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(XRAYBLOCK, TRUE) + genemutcheck(H, XRAYBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(FIREBLOCK, TRUE) + genemutcheck(H, FIREBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(COLDBLOCK, TRUE) + genemutcheck(H, COLDBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(TELEBLOCK, TRUE) + genemutcheck(H, TELEBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(INCREASERUNBLOCK, TRUE) + genemutcheck(H, INCREASERUNBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(BREATHLESSBLOCK, TRUE) + genemutcheck(H, BREATHLESSBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(REGENERATEBLOCK, TRUE) + genemutcheck(H, REGENERATEBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(SHOCKIMMUNITYBLOCK, TRUE) + genemutcheck(H, SHOCKIMMUNITYBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(SMALLSIZEBLOCK, TRUE) + genemutcheck(H, SMALLSIZEBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(SOBERBLOCK, TRUE) + genemutcheck(H, SOBERBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(PSYRESISTBLOCK, TRUE) + genemutcheck(H, PSYRESISTBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(SHADOWBLOCK, TRUE) + genemutcheck(H, SHADOWBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(CRYOBLOCK, TRUE) + genemutcheck(H, CRYOBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(EATBLOCK, TRUE) + genemutcheck(H, EATBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(JUMPBLOCK, TRUE) + genemutcheck(H, JUMPBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(SUPERFARTBLOCK, TRUE) + genemutcheck(H, SUPERFARTBLOCK, null, MUTCHK_FORCED) + + H.dna.SetSEState(IMMOLATEBLOCK, TRUE) + genemutcheck(H, IMMOLATEBLOCK, null, MUTCHK_FORCED) + + H.mutations.Add(LASER) + H.update_mutations() + H.update_body() \ No newline at end of file diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index e5f1cb10525..763152cc5cf 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -45,13 +45,13 @@ if((istype(W, /obj/item/weldingtool) && W:welding)) if(!status) status = 1 - bombers += "[key_name(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]" - msg_admin_attack("[key_name_admin(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]") + investigate_log("[key_name(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]", INVESTIGATE_BOMB) + msg_admin_attack("[key_name_admin(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]", ATKLOG_FEW) log_game("[key_name(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature - T0C]") to_chat(user, "A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited.") else status = 0 - bombers += "[key_name(user)] unwelded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]" + investigate_log("[key_name(user)] unwelded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]", INVESTIGATE_BOMB) to_chat(user, "The hole has been closed.") add_fingerprint(user) ..() diff --git a/code/modules/assembly/igniter.dm b/code/modules/assembly/igniter.dm index 08601522c5e..785e4549a47 100644 --- a/code/modules/assembly/igniter.dm +++ b/code/modules/assembly/igniter.dm @@ -28,7 +28,7 @@ if(istype(src.loc.loc, /obj/structure/reagent_dispensers/fueltank/)) var/obj/structure/reagent_dispensers/fueltank/tank = src.loc.loc if(tank) - tank.boom() + tank.boom(TRUE) if(istype(src.loc.loc, /obj/item/reagent_containers/glass/beaker/)) var/obj/item/reagent_containers/glass/beaker/beakerbomb = src.loc.loc if(beakerbomb) @@ -41,4 +41,4 @@ /obj/item/assembly/igniter/attack_self(mob/user as mob) activate() add_fingerprint(user) - return \ No newline at end of file + return diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index 6bcefc6027c..5d6aa7490e2 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -75,7 +75,7 @@ if(!user.hand) which_hand = "r_hand" triggered(user, which_hand) - user.visible_message("[user] accidentally sets off [src], breaking their fingers.", \ + user.visible_message("[user] accidentally sets off [src], breaking [user.p_their()] fingers.", \ "You accidentally trigger [src]!") return to_chat(user, "You disarm [src].") @@ -91,7 +91,7 @@ if(!user.hand) which_hand = "r_hand" triggered(user, which_hand) - user.visible_message("[user] accidentally sets off [src], breaking their fingers.", \ + user.visible_message("[user] accidentally sets off [src], breaking [user.p_their()] fingers.", \ "You accidentally trigger [src]!") return ..() @@ -114,7 +114,7 @@ on_found(mob/finder as mob) if(armed) - finder.visible_message("[finder] accidentally sets off [src], breaking their fingers.", \ + finder.visible_message("[finder] accidentally sets off [src], breaking [finder.p_their()] fingers.", \ "You accidentally trigger [src]!") triggered(finder, finder.hand ? "l_hand" : "r_hand") return 1 //end the search! diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index 5d8c0ed1e98..a585a689f2c 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -114,7 +114,7 @@ timing = !timing if(timing && istype(holder, /obj/item/transfer_valve)) message_admins("[key_name_admin(usr)] activated [src] attachment on [holder].") - bombers += "[key_name(usr)] activated [src] attachment for [loc]" + investigate_log("[key_name(usr)] activated [src] attachment for [loc]", INVESTIGATE_BOMB) log_game("[key_name(usr)] activated [src] attachment for [loc]") update_icon() if(href_list["reset"]) diff --git a/code/modules/awaymissions/mission_code/spacehotel.dm b/code/modules/awaymissions/mission_code/spacehotel.dm index 4e4f2628736..81d21df5dcf 100644 --- a/code/modules/awaymissions/mission_code/spacehotel.dm +++ b/code/modules/awaymissions/mission_code/spacehotel.dm @@ -299,6 +299,4 @@ return S.retal_target = target - S.retal = 1 - -#undef CHECKOUT_TIME + S.retal = 1 \ No newline at end of file diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm index ad25c8fdeb1..db4f33ac121 100644 --- a/code/modules/client/preference/preferences.dm +++ b/code/modules/client/preference/preferences.dm @@ -54,15 +54,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts return max(0, days - C.player_age) return 0 -//used for alternate_option -#define GET_RANDOM_JOB 0 -#define BE_CIVILIAN 1 -#define RETURN_TO_LOBBY 2 - #define MAX_SAVE_SLOTS 20 // Save slots for regular players #define MAX_SAVE_SLOTS_MEMBER 20 // Save slots for BYOND members - #define TAB_CHAR 0 #define TAB_GAME 1 #define TAB_GEAR 2 @@ -96,6 +90,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts var/UI_style_alpha = 255 var/windowflashing = TRUE var/clientfps = 0 + var/atklog = ATKLOG_ALL //ghostly preferences var/ghost_anonsay = 0 @@ -209,6 +204,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts b_type = pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+") max_gear_slots = config.max_loadout_points + var/loaded_preferences_successfully = FALSE if(istype(C)) if(!IsGuestKey(C.key)) unlock_content = C.IsByondMember() @@ -217,16 +213,17 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if(C.donator_level >= DONATOR_LEVEL_ONE) max_gear_slots += 5 - var/loaded_preferences_successfully = load_preferences(C) - if(loaded_preferences_successfully) - if(load_character(C)) - return + loaded_preferences_successfully = load_preferences(C) // Do not call this with no client/C, it generates a runtime / SQL error + if(loaded_preferences_successfully) + if(load_character(C)) + return //we couldn't load character data so just randomize the character appearance + name random_character() //let's create a random character then - rather than a fat, bald and naked man. real_name = random_name(gender) - if(!loaded_preferences_successfully) - save_preferences(C) - save_character(C) //let's save this new random character so it doesn't keep generating new ones. + if(istype(C)) + if(!loaded_preferences_successfully) + save_preferences(C) // Do not call this with no client/C, it generates a runtime / SQL error + save_character(C) // Do not call this with no client/C, it generates a runtime / SQL error /datum/preferences/proc/color_square(colour) return "___" @@ -699,7 +696,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts switch(alternate_option) if(GET_RANDOM_JOB) HTML += "

Get random job if preferences unavailable

" - if(BE_CIVILIAN) + if(BE_ASSISTANT) HTML += "

Be a civilian if preferences unavailable

" if(RETURN_TO_LOBBY) HTML += "

Return to lobby if preferences unavailable

" @@ -1051,7 +1048,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts ResetJobs() SetChoices(user) if("random") - if(alternate_option == GET_RANDOM_JOB || alternate_option == BE_CIVILIAN) + if(alternate_option == GET_RANDOM_JOB || alternate_option == BE_ASSISTANT) alternate_option += 1 else if(alternate_option == RETURN_TO_LOBBY) alternate_option = 0 diff --git a/code/modules/client/preference/preferences_mysql.dm b/code/modules/client/preference/preferences_mysql.dm index f2a9d739cfe..a175e39bc71 100644 --- a/code/modules/client/preference/preferences_mysql.dm +++ b/code/modules/client/preference/preferences_mysql.dm @@ -17,7 +17,8 @@ windowflashing, ghost_anonsay, exp, - clientfps + clientfps, + atklog FROM [format_table_name("player")] WHERE ckey='[C.ckey]'"} ) @@ -48,6 +49,7 @@ ghost_anonsay = text2num(query.item[15]) exp = query.item[16] clientfps = text2num(query.item[17]) + atklog = text2num(query.item[18]) //Sanitize ooccolor = sanitize_hexcolor(ooccolor, initial(ooccolor)) @@ -66,6 +68,7 @@ ghost_anonsay = sanitize_integer(ghost_anonsay, 0, 1, initial(ghost_anonsay)) exp = sanitize_text(exp, initial(exp)) clientfps = sanitize_integer(clientfps, 0, 1000, initial(clientfps)) + atklog = sanitize_integer(atklog, 0, 100, initial(atklog)) return 1 /datum/preferences/proc/save_preferences(client/C) @@ -85,6 +88,7 @@ be_role='[sanitizeSQL(list2params(be_special))]', default_slot='[default_slot]', toggles='[toggles]', + atklog='[atklog]', sound='[sound]', randomslot='[randomslot]', volume='[volume]', @@ -93,7 +97,8 @@ lastchangelog='[lastchangelog]', windowflashing='[windowflashing]', ghost_anonsay='[ghost_anonsay]', - clientfps='[clientfps]' + clientfps='[clientfps]', + atklog='[atklog]' WHERE ckey='[C.ckey]'"} ) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 282603a8879..060e53df5b7 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -411,7 +411,7 @@ BLIND // can't see anything desc = "[desc] They have had their toes opened up." update_icon() else - to_chat(user, "[src] have already had their toes cut open!") + to_chat(user, "[src] have already had [p_their()] toes cut open!") return else ..() @@ -489,7 +489,7 @@ BLIND // can't see anything for(var/obj/item/I in O.contents) //Dump the pocket out onto the floor below the user. user.unEquip(I,1) - user.visible_message("[user] bellows, [pick("shredding", "ripping open", "tearing off")] their jacket in a fit of rage!","You accidentally [pick("shred", "rend", "tear apart")] \the [src] with your [pick("excessive", "extreme", "insane", "monstrous", "ridiculous", "unreal", "stupendous")] [pick("power", "strength")]!") + user.visible_message("[user] bellows, [pick("shredding", "ripping open", "tearing off")] [user.p_their()] jacket in a fit of rage!","You accidentally [pick("shred", "rend", "tear apart")] [src] with your [pick("excessive", "extreme", "insane", "monstrous", "ridiculous", "unreal", "stupendous")] [pick("power", "strength")]!") user.unEquip(src) qdel(src) //Now that the pockets have been emptied, we can safely destroy the jacket. user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!")) diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 32f86cc6e57..40c29c1d991 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -132,3 +132,14 @@ cell.forceMove(get_turf(loc)) cell = null update_icon() + +/obj/item/clothing/gloves/fingerless/rapid + name = "Gloves of the North Star" + desc = "Just looking at these fills you with an urge to beat the shit out of people." + +/obj/item/clothing/gloves/fingerless/rapid/Touch(mob/living/target, proximity = TRUE) + var/mob/living/M = loc + + if(M.a_intent == INTENT_HARM) + M.changeNext_move(CLICK_CD_RAPID) + .= FALSE \ No newline at end of file diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 10f5a348318..dc8c4b59a4d 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -222,7 +222,7 @@ return 1 /obj/item/clothing/head/fedora/proc/tip_fedora(mob/user) - user.visible_message("[user] tips their fedora.", "You tip your fedora") + user.visible_message("[user] tips [user.p_their()] fedora.", "You tip your fedora") /obj/item/clothing/head/fez diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 60cbfff3dd9..22f293aedfc 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -8,7 +8,7 @@ gas_transfer_coefficient = 0.90 put_on_delay = 20 var/resist_time = 0 //deciseconds of how long you need to gnaw to get rid of the gag, 0 to make it impossible to remove - var/mute = MUTE_ALL + var/mute = MUZZLE_MUTE_ALL var/security_lock = FALSE // Requires brig access to remove 0 - Remove as normal var/locked = FALSE //Indicates if a mask is locked, should always start as 0. species_fit = list("Vox") @@ -22,8 +22,8 @@ return 0 else if(security_lock && locked) if(do_unlock(user)) - visible_message("[user] unlocks their [src.name].", \ - "[user] unlocks their [src.name].") + visible_message("[user] unlocks [user.p_their()] [src.name].", \ + "[user] unlocks [user.p_their()] [src.name].") ..() return 1 @@ -93,7 +93,7 @@ item_state = null w_class = WEIGHT_CLASS_TINY resist_time = 150 - mute = MUTE_MUFFLE + mute = MUZZLE_MUTE_MUFFLE flags = DROPDEL species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin", "Grey") sprite_sheets = list( @@ -117,7 +117,7 @@ name = "safety muzzle" desc = "A muzzle designed to prevent biting." resist_time = 600 - mute = MUTE_NONE + mute = MUZZLE_MUTE_NONE security_lock = TRUE locked = FALSE @@ -169,7 +169,7 @@ return 1 /obj/item/clothing/mask/fakemoustache/proc/pontificate(mob/user) - user.visible_message("\ [user] twirls \his moustache and laughs [pick("fiendishly","maniacally","diabolically","evilly")]!") + user.visible_message("\ [user] twirls [user.p_their()] moustache and laughs [pick("fiendishly","maniacally","diabolically","evilly")]!") //scarves (fit in in mask slot) diff --git a/code/modules/clothing/spacesuits/ert.dm b/code/modules/clothing/spacesuits/ert.dm index 123b4e5fd5e..91884eeba2d 100644 --- a/code/modules/clothing/spacesuits/ert.dm +++ b/code/modules/clothing/spacesuits/ert.dm @@ -9,9 +9,10 @@ var/obj/machinery/camera/camera var/has_camera = TRUE strip_delay = 130 - species_fit = list("Grey") + species_fit = list("Grey", "Vox") sprite_sheets = list( - "Grey" = 'icons/mob/species/grey/helmet.dmi' + "Grey" = 'icons/mob/species/grey/helmet.dmi', + "Vox" = 'icons/mob/species/vox/helmet.dmi' ) /obj/item/clothing/head/helmet/space/hardsuit/ert/attack_self(mob/user) @@ -41,9 +42,10 @@ /obj/item/radio, /obj/item/analyzer, /obj/item/gun/energy/laser, /obj/item/gun/energy/pulse, \ /obj/item/gun/energy/gun/advtaser, /obj/item/melee/baton, /obj/item/gun/energy/gun) strip_delay = 130 - species_fit = list("Drask") + species_fit = list("Drask", "Vox") sprite_sheets = list( - "Drask" = 'icons/mob/species/drask/suit.dmi' + "Drask" = 'icons/mob/species/drask/suit.dmi', + "Vox" = 'icons/mob/species/vox/suit.dmi' ) //Commander diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index f5a6176a6c4..8ee357b1ffb 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -71,6 +71,11 @@ allowed = list(/obj/item/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs,/obj/item/tank,/obj/item/kitchen/knife/combat) armor = list(melee = 40, bullet = 30, laser = 30, energy = 30, bomb = 50, bio = 90, rad = 20) strip_delay = 120 + species_restricted = list("exclude", "Diona", "Wryn") + species_fit = list("Vox") + sprite_sheets = list( + "Vox" = 'icons/mob/species/vox/suit.dmi' + ) /obj/item/clothing/head/helmet/space/deathsquad/beret name = "officer's beret" diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 7a2d9e5e495..eab5aa0c5bb 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -366,7 +366,7 @@ correct_piece.icon_state = "[initial(icon_state)]" switch(msg_type) if("boots") - to_chat(wearer, "\The [correct_piece] relax their grip on your legs.") + to_chat(wearer, "\The [correct_piece] relax [correct_piece.p_their()] grip on your legs.") if(user != wearer) to_chat(user, "\The [correct_piece] has been unsealed.") wearer.update_inv_shoes() diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 74d07164101..7880dcc1dd3 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -9,6 +9,10 @@ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES burn_state = FIRE_PROOF + species_fit = list("Vox") + sprite_sheets = list( + "Vox" = 'icons/mob/species/vox/helmet.dmi' + ) /obj/item/clothing/suit/bio_suit name = "bio suit" diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 6aa79584fc7..e0b444afcd0 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -77,7 +77,7 @@ burn_state = FIRE_PROOF species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/head.dmi' + "Vox" = 'icons/mob/species/vox/helmet.dmi' ) /obj/item/clothing/suit/bomb_suit @@ -108,16 +108,12 @@ /obj/item/clothing/head/bomb_hood/security icon_state = "bombsuitsec" item_state = "bombsuitsec" - species_fit = null - sprite_sheets = null /obj/item/clothing/suit/bomb_suit/security icon_state = "bombsuitsec" item_state = "bombsuitsec" allowed = list(/obj/item/gun/energy,/obj/item/melee/baton,/obj/item/restraints/handcuffs) - species_fit = null - sprite_sheets = null /* * Radiation protection diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index 6d2e0363138..aac34032dfb 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -131,7 +131,7 @@ /obj/item/clothing/accessory/stethoscope/attack(mob/living/carbon/human/M, mob/living/user) if(ishuman(M) && isliving(user)) if(user == M) - user.visible_message("[user] places \the [src] against \his chest and listens attentively.", "You place \the [src] against your chest...") + user.visible_message("[user] places [src] against [user.p_their()] chest and listens attentively.", "You place [src] against your chest...") else user.visible_message("[user] places \the [src] against [M]'s chest and listens attentively.", "You place \the [src] against [M]'s chest...") var/obj/item/organ/internal/H = M.get_int_organ(/obj/item/organ/internal/heart) @@ -250,7 +250,7 @@ to_chat(user, "Waving around a badge before swiping an ID would be pretty pointless.") return if(isliving(user)) - user.visible_message("[user] displays their Nanotrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.","You display your Nanotrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.") + user.visible_message("[user] displays [user.p_their()] Nanotrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.","You display your Nanotrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.") /obj/item/clothing/accessory/holobadge/attackby(var/obj/item/O as obj, var/mob/user as mob, params) if(istype(O, /obj/item/card/id) || istype(O, /obj/item/pda)) @@ -284,7 +284,7 @@ /obj/item/clothing/accessory/holobadge/attack(mob/living/carbon/human/M, mob/living/user) if(isliving(user)) - user.visible_message("[user] invades [M]'s personal space, thrusting [src] into their face insistently.","You invade [M]'s personal space, thrusting [src] into their face insistently. You are the law.") + user.visible_message("[user] invades [M]'s personal space, thrusting [src] into [M.p_their()] face insistently.","You invade [M]'s personal space, thrusting [src] into [M.p_their()] face insistently. You are the law.") /obj/item/storage/box/holobadge name = "holobadge box" diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index 1ca94e9a4f3..76bef3e056b 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -69,9 +69,10 @@ item_state = "clown" item_color = "clown" flags_size = ONESIZEFITSALL + var/honk_sound = 'sound/items/bikehorn.ogg' /obj/item/clothing/under/rank/clown/hit_reaction() - playsound(loc, 'sound/items/bikehorn.ogg', 50, 1, -1) + playsound(loc, honk_sound, 50, 1, -1) if(ishuman(loc)) var/mob/living/carbon/human/H = loc if(H.mind && H.mind.assigned_role == "Clown") diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 6a5d5dd0519..a229b72f745 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -46,7 +46,7 @@ var/mob/living/carbon/human/target = M if(istype(target.species, /datum/species/machine)) - to_chat(user, "[target] has no skin, how do you expect to tattoo them?") + to_chat(user, "[target] has no skin, how do you expect to tattoo [target.p_them()]?") return if(target.m_styles["body"] != "None") @@ -1265,6 +1265,8 @@ name = "engraved hand mirror" desc = "A very classy hand mirror, with fancy detailing." icon = 'icons/obj/custom_items.dmi' + lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi' + righthand_file = 'icons/mob/inhands/fluff_righthand.dmi' icon_state = "hand_mirror" attack_verb = list("smacked") hitsound = 'sound/weapons/tap.ogg' @@ -1311,6 +1313,8 @@ name = "Classy victorian suit" desc = "A blue and black victorian suit with silver buttons, very fancy!" icon = 'icons/obj/custom_items.dmi' + lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi' + righthand_file = 'icons/mob/inhands/fluff_righthand.dmi' icon_state = "victorianlightfire" item_state = "victorianvest" item_color = "victorianlightfire" @@ -1330,7 +1334,7 @@ to_chat(user, "You can't modify [target]!") return - to_chat(user, "You modify the appearance of [target] based on the kite blueprints.") + to_chat(user, "You modify the appearance of [target] based on the kit blueprints.") var/obj/spacepod/pod = target pod.icon = 'icons/48x48/custom_pod.dmi' pod.icon_state = "pod_dece" @@ -1348,4 +1352,31 @@ righthand_file = 'icons/mob/inhands/fluff_righthand.dmi' icon_state = "teri_horn" item_state = "teri_horn" - honk_sound = 'sound/items/teri_horn.ogg' \ No newline at end of file + honk_sound = 'sound/items/teri_horn.ogg' + +/obj/item/clothing/suit/fluff/vetcoat //Furasian: Fillmoore Grayson + name = "Veteran Coat" + desc = "An old, yet well-kept Nanotrasen uniform. Very few of its kind are still produced." + icon = 'icons/obj/custom_items.dmi' + lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi' + righthand_file = 'icons/mob/inhands/fluff_righthand.dmi' + icon_state = "alchemistcoatblack" + item_state = "alchemistcoatblack" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS + +/obj/item/clothing/suit/fluff/vetcoat/red //Furasian: Fillmoore Grayson + icon_state = "alchemistcoatred" + item_state = "alchemistcoatred" + +/obj/item/clothing/suit/fluff/vetcoat/navy //Furasian: Fillmoore Grayson + icon_state = "alchemistcoatnavy" + item_state = "alchemistcoatnavy" + +/obj/item/clothing/accessory/medal/fluff/panzermedal //PanzerSkull: GRN-DER + name = "Cross of Valor" + desc = "A medal from the bygone Asteroid Wars. Its Ruby shines with a strange intensity." + icon = 'icons/obj/custom_items.dmi' + icon_state = "panzermedal" + item_state = "panzermedal" + item_color = "panzermedal" + slot_flags = SLOT_TIE \ No newline at end of file diff --git a/code/modules/economy/Economy.dm b/code/modules/economy/Economy.dm index 028c2810ae7..57d76e98c5c 100644 --- a/code/modules/economy/Economy.dm +++ b/code/modules/economy/Economy.dm @@ -38,7 +38,7 @@ #define MINERALS 8 #define EMERGENCY 9 -#define GAS 10 +#define EGAS 10 #define MAINTENANCE 11 #define ELECTRICAL 12 #define ROBOTICS 13 diff --git a/code/modules/economy/Economy_Events.dm b/code/modules/economy/Economy_Events.dm index c1e5b95273e..10e0d574f98 100644 --- a/code/modules/economy/Economy_Events.dm +++ b/code/modules/economy/Economy_Events.dm @@ -29,16 +29,16 @@ if(INDUSTRIAL_ACCIDENT) dearer_goods = list(EMERGENCY, BIOMEDICAL, ROBOTICS) if(BIOHAZARD_OUTBREAK) - dearer_goods = list(BIOMEDICAL, GAS) + dearer_goods = list(BIOMEDICAL, EGAS) if(PIRATES) dearer_goods = list(SECURITY, MINERALS) if(CORPORATE_ATTACK) dearer_goods = list(SECURITY, MAINTENANCE) if(ALIEN_RAIDERS) dearer_goods = list(BIOMEDICAL, ANIMALS) - cheaper_goods = list(GAS, MINERALS) + cheaper_goods = list(EGAS, MINERALS) if(AI_LIBERATION) - dearer_goods = list(EMERGENCY, GAS, MAINTENANCE) + dearer_goods = list(EMERGENCY, EGAS, MAINTENANCE) if(MOURNING) cheaper_goods = list(MINERALS, MAINTENANCE) if(CULT_CELL_REVEALED) diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index b514924abfa..cf2e3621498 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -11,7 +11,7 @@ /datum/event/disease_outbreak/start() if(!virus_type) - virus_type = pick(/datum/disease/advance/flu, /datum/disease/advance/cold, /datum/disease/brainrot, /datum/disease/magnitis) + virus_type = pick(/datum/disease/advance/flu, /datum/disease/advance/cold, /datum/disease/brainrot, /datum/disease/magnitis, /datum/disease/beesease, /datum/disease/anxiety, /datum/disease/fake_gbs, /datum/disease/fluspanish, /datum/disease/pierrot_throat, /datum/disease/lycan) for(var/mob/living/carbon/human/H in shuffle(living_mob_list)) if(issmall(H)) //don't infect monkies; that's a waste diff --git a/code/modules/events/infestation.dm b/code/modules/events/infestation.dm index c5a5873afa0..d11a1227ddf 100644 --- a/code/modules/events/infestation.dm +++ b/code/modules/events/infestation.dm @@ -107,7 +107,6 @@ #undef LOC_HYDRO #undef LOC_VAULT #undef LOC_TECH -#undef LOC_TACTICAL #undef VERM_MICE #undef VERM_LIZARDS diff --git a/code/modules/events/radiation_storm.dm b/code/modules/events/radiation_storm.dm index 0f2da54818c..4b822dd718e 100644 --- a/code/modules/events/radiation_storm.dm +++ b/code/modules/events/radiation_storm.dm @@ -1,70 +1,11 @@ -/datum/event/radiation_storm - announceWhen = 1 - var/safe_zones = list( - /area/maintenance, - /area/crew_quarters/sleep, - /area/security/brig, - /area/shuttle, - /area/vox_station, - /area/syndicate_station - ) - +/datum/event/radiation_storm/setup() + startWhen = 3 + endWhen = startWhen + 1 + announceWhen = 1 /datum/event/radiation_storm/announce() - // Don't do anything, we want to pack the announcement with the actual event - -/datum/event/radiation_storm/proc/is_safe_zone(var/area/A) - for(var/szt in safe_zones) - if(istype(A, szt)) - return 1 - return 0 + priority_announcement.Announce("High levels of radiation detected near the station. Maintenance is best shielded from radiation.", "Anomaly Alert", 'sound/ai/radiation.ogg') + //sound not longer matches the text, but an audible warning is probably good /datum/event/radiation_storm/start() - spawn() - event_announcement.Announce("High levels of radiation detected near the station. Please evacuate into one of the shielded maintenance tunnels.", "Anomaly Alert", new_sound = 'sound/AI/radiation.ogg') - - for(var/area/A in world) - if(!is_station_level(A.z) || is_safe_zone(A)) - continue - A.radiation_alert() - - make_maint_all_access() - - sleep(600) - - event_announcement.Announce("The station has entered the radiation belt. Please remain in a sheltered area until we have passed the radiation belt.", "Anomaly Alert") - - for(var/i = 0, i < 10, i++) - for(var/mob/living/carbon/human/H in living_mob_list) - var/armor = H.getarmor(type = "rad") - if((RADIMMUNE in H.species.species_traits) || armor >= 100) // Leave radiation-immune species/fully rad armored players completely unaffected - continue - var/turf/T = get_turf(H) - if(!T) - continue - if(!is_station_level(T.z) || is_safe_zone(T.loc)) - continue - - if(istype(H,/mob/living/carbon/human)) - H.apply_effect((rand(15,35)),IRRADIATE,0) - if(prob(5)) - H.apply_effect((rand(40,70)),IRRADIATE,0) - if(prob(75)) - randmutb(H) // Applies bad mutation - domutcheck(H,null,1) - else - randmutg(H) // Applies good mutation - domutcheck(H,null,1) - - sleep(100) - - event_announcement.Announce("The station has passed the radiation belt. Please report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly.", "Anomaly Alert") - - for(var/area/A in world) - if(!is_station_level(A.z) || is_safe_zone(A)) - continue - A.reset_radiation_alert() - - sleep(600) // Want to give them time to get out of maintenance. - - revoke_maint_all_access() + SSweather.run_weather(/datum/weather/rad_storm) \ No newline at end of file diff --git a/code/modules/fish/fish_items.dm b/code/modules/fish/fish_items.dm index 58566f9872d..63a4b668930 100644 --- a/code/modules/fish/fish_items.dm +++ b/code/modules/fish/fish_items.dm @@ -26,7 +26,7 @@ throw_range = 7 suicide_act(mob/user) //"A tiny net is a death sentence: it's a net and it's tiny!" https://www.youtube.com/watch?v=FCI9Y4VGCVw - to_chat(viewers(user), "[user] places the [src.name] on top of \his head, \his fingers tangled in the netting! It looks like \he's trying to commit suicide.") + to_chat(viewers(user), "[user] places the [src.name] on top of [user.p_their()] head, [user.p_their()] fingers tangled in the netting! It looks like [user.p_theyre()] trying to commit suicide.") return(OXYLOSS) /obj/item/fishfood @@ -52,7 +52,7 @@ attack_verb = list("scrubbed", "brushed", "scraped") suicide_act(mob/user) - to_chat(viewers(user), "[user] is vigorously scrubbing \himself raw with the [src.name]! It looks like \he's trying to commit suicide.") + to_chat(viewers(user), "[user] is vigorously scrubbing [user.p_them()]self raw with the [name]! It looks like [user.p_theyre()] trying to commit suicide.") return(BRUTELOSS|FIRELOSS) ////////////////////////////////////////////// diff --git a/code/modules/fish/fishtank.dm b/code/modules/fish/fishtank.dm index 584fdd5b93c..412c5407ddc 100644 --- a/code/modules/fish/fishtank.dm +++ b/code/modules/fish/fishtank.dm @@ -1,6 +1,6 @@ ////////////////////////////// -// Fish Tanks! // +// Fish Tanks // ////////////////////////////// @@ -9,44 +9,41 @@ desc = "So generic, it might as well have no description at all." icon = 'icons/obj/fish_items.dmi' icon_state = "tank1" - density = 0 - anchored = 0 + density = FALSE + anchored = FALSE pass_flags = 0 var/tank_type = "" // Type of aquarium, used for icon updating var/water_capacity = 0 // Number of units the tank holds (varies with tank type) var/water_level = 0 // Number of units currently in the tank (new tanks start empty) var/light_switch = 0 // 0 = off, 1 = on (off by default) - var/filth_level = 0.0 // How dirty the tank is (max 10) + var/filth_level = 0 // How dirty the tank is (max 10) var/lid_switch = 0 // 0 = open, 1 = closed (open by default) var/max_fish = 0 // How many fish the tank can support (varies with tank type, 1 fish per 50 units sounds reasonable) var/food_level = 0 // Amount of fishfood floating in the tank (max 10) var/fish_count = 0 // Number of fish in the tank - var/list/fish_list = null // Tracks the current types of fish in the tank + var/list/fish_list = list() // Tracks the current types of fish in the tank var/egg_count = 0 // How many fish eggs can be harvested from the tank (capped at the max_fish value) - var/list/egg_list = null // Tracks the current types of harvestable eggs in the tank + var/list/egg_list = list() // Tracks the current types of harvestable eggs in the tank - var/has_lid = 0 // 0 if the tank doesn't have a lid/light, 1 if it does - var/max_health = 0 // Can handle a couple hits - var/cur_health = 0 // Current health, starts at max_health - var/leaking = 0 // 0 if not leaking, 1 if minor leak, 2 if major leak (not leaking by default) + var/has_lid = FALSE // 0 if the tank doesn't have a lid/light, 1 if it does + var/leaking = FALSE // 0 if not leaking, 1 if minor leak, 2 if major leak (not leaking by default) var/shard_count = 0 // Number of glass shards to salvage when broken (1 less than the number of sheets to build the tank) /obj/machinery/fishtank/bowl name = "fish bowl" desc = "A small bowl capable of housing a single fish, commonly found on desks. This one has a tiny treasure chest in it!" icon_state = "bowl1" - density = 0 // Small enough to not block stuff - anchored = 0 // Small enough to move even when filled + density = FALSE // Small enough to not block stuff + anchored = FALSE // Small enough to move even when filled pass_flags = PASSTABLE | LETPASSTHROW // Just like at the county fair, you can't seem to throw the ball in to win the goldfish, and it's small enough to pull onto a table tank_type = "bowl" water_capacity = 50 // Not very big, therefore it can't hold much max_fish = 1 // What a lonely fish - has_lid = 0 - max_health = 15 // Not very sturdy - cur_health = 15 + has_lid = FALSE + max_integrity = 15 // Not very sturdy shard_count = 0 // No salvageable shards /obj/machinery/fishtank/tank @@ -54,17 +51,16 @@ desc = "A large glass tank designed to house aquatic creatures. Contains an integrated water circulation system." icon = 'icons/obj/fish_items.dmi' icon_state = "tank1" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE pass_flags = LETPASSTHROW tank_type = "tank" water_capacity = 200 // Decent sized, holds almost 2 full buckets max_fish = 4 // Room for a few fish - has_lid = 1 - max_health = 50 // Average strength, will take a couple hits from a toolbox. - cur_health = 50 + has_lid = TRUE + max_integrity = 50 // Average strength, will take a couple hits from a toolbox. shard_count = 2 @@ -72,17 +68,16 @@ name = "wall aquarium" desc = "This aquarium is massive! It completely occupies the same space as a wall, and looks very sturdy too!" icon_state = "wall1" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE pass_flags = 0 // This thing is the size of a wall, you can't throw past it. tank_type = "wall" water_capacity = 500 // This thing fills an entire tile, it holds a lot. max_fish = 10 // Plenty of room for a lot of fish - has_lid = 1 - max_health = 100 // This thing is a freaking wall, it can handle abuse. - cur_health = 100 + has_lid = TRUE + max_integrity = 100 // This thing is a freaking wall, it can handle abuse. shard_count = 3 @@ -94,9 +89,10 @@ set name = "Toggle Tank Lid" set category = "Object" set src in view(1) - toggle_lid(usr) -/obj/machinery/fishtank/proc/toggle_lid(var/mob/living/user) + toggle_lid() + +/obj/machinery/fishtank/proc/toggle_lid() lid_switch = !lid_switch update_icon() @@ -104,12 +100,13 @@ set name = "Toggle Tank Light" set category = "Object" set src in view(1) - toggle_light(usr) -/obj/machinery/fishtank/proc/toggle_light(var/mob/living/user) + toggle_light() + +/obj/machinery/fishtank/proc/toggle_light() light_switch = !light_switch if(light_switch) - set_light(2,2,"#a0a080") + set_light(2, 2, "#a0a080") else adjust_tank_light() @@ -119,8 +116,6 @@ /obj/machinery/fishtank/New() ..() - fish_list = new/list() - egg_list = new/list() if(!has_lid) //Tank doesn't have a lid/light, remove the verbs for then verbs -= /obj/machinery/fishtank/verb/toggle_lid_verb verbs -= /obj/machinery/fishtank/verb/toggle_light_verb @@ -154,7 +149,8 @@ overlays += "over_leak_[leaking]" //Green if we aren't leaking, light blue and slow blink if minor link, dark blue and rapid flashing for major leak //Update water overlay - if(water_level == 0) return //Skip the rest of this if there is no water in the aquarium + if(!water_level) + return //Skip the rest of this if there is no water in the aquarium var/water_type = "_clean" //Default to clean water if(filth_level > 5) water_type = "_dirty" //Show dirty water above filth_level 5 (breeding threshold) if(water_level > (water_capacity * 0.85)) //Show full if the water_level is over 85% of water_capacity @@ -162,15 +158,13 @@ else if(water_level > (water_capacity * 0.35)) //Show half-full if the water_level is over 35% of water_capacity overlays += "over_[tank_type]_half[water_type]" - return - ////////////////////////////// // PROCESS PROC // ////////////////////////////// //Stops atmos from passing wall tanks, since they are effectively full-windows. -/obj/machinery/fishtank/wall/CanAtmosPass(var/turf/T) - return 0 +/obj/machinery/fishtank/wall/CanAtmosPass(turf/T) + return FALSE /obj/machinery/fishtank/process() //Start by counting fish in the tank @@ -238,9 +232,7 @@ adjust_tank_light() /obj/machinery/fishtank/proc/adjust_tank_light() - if(light_switch) //tank light overrides fish lights - return - else + if(!light_switch) //tank light overrides fish lights var/glo_light = 0 for(var/datum/fish/fish in fish_list) if(istype(fish, /datum/fish/glofish)) @@ -261,19 +253,13 @@ food_level = min(10, max(0, food_level + amount)) /obj/machinery/fishtank/proc/check_health() - //Max value check - if(cur_health > max_health) //Cur_health cannot exceed max_health, set it to max_health if it does - cur_health = max_health //Leaking status check - if(cur_health <= (max_health * 0.25)) //Major leak at or below 25% health (-10 water/cycle) + if(obj_integrity <= (max_integrity * 0.25)) //Major leak at or below 25% health (-10 water/cycle) leaking = 2 - else if(cur_health <= (max_health * 0.5)) //Minor leak at or below 50% health (-1 water/cycle) + else if(obj_integrity <= (max_integrity * 0.5)) //Minor leak at or below 50% health (-1 water/cycle) leaking = 1 else //Not leaking above 50% health leaking = 0 - //Destruction check - if(cur_health <= 0) //The tank is broken, destroy it - destroy() /obj/machinery/fishtank/proc/kill_fish(datum/fish/fish_type = null) //Check if we were passed a fish to kill, otherwise kill a random one @@ -292,12 +278,12 @@ fish_list.Add(fish_type) //Add a fish of the specified type fish_count++ //Increase fish_count to reflect the introduction of a fish, so the everything else works fine //Announce the new fish - visible_message("A new [fish_type.fish_name] has hatched in \the [src]!") + visible_message("A new [fish_type.fish_name] has hatched in [src]!") //Null type fish are dud eggs, give a message to inform the player else to_chat(usr, "The eggs disolve in the water. They were duds!") -/obj/machinery/fishtank/proc/harvest_eggs(var/mob/user) +/obj/machinery/fishtank/proc/harvest_eggs(mob/user) if(!egg_count) //Can't harvest non-existant eggs return @@ -312,62 +298,39 @@ egg_list.Cut() //Destroy any excess eggs, clearing the egg_list -/obj/machinery/fishtank/proc/harvest_fish(var/mob/user) - if(fish_count <= 0) //Can't catch non-existant fish! - to_chat(usr, "There are no fish in \the [src] to catch!") +/obj/machinery/fishtank/proc/harvest_fish(mob/user) + if(fish_count <= 0) //Can't catch non-existant fish! + to_chat(user, "There are no fish in [src] to catch!") return var/list/fish_names_list = list() for(var/datum/fish/fish_type in fish_list) fish_names_list += list("[fish_type.fish_name]" = fish_type) var/caught_fish = input("Select a fish to catch.", "Fishing") as null|anything in fish_names_list //Select a fish from the tank if(fish_count <= 0) - to_chat(usr, "There are no fish in \the [src] to catch!") + to_chat(user, "There are no fish in [src] to catch!") return else if(caught_fish) - user.visible_message("[user.name] harvests \a [caught_fish] from \the [src].", "You scoop \a [caught_fish] out of \the [src].") + user.visible_message("[user.name] harvests \a [caught_fish] from [src].", "You scoop \a [caught_fish] out of [src].") var/datum/fish/fish_type = fish_names_list[caught_fish] var/fish_item = fish_type.fish_item if(fish_item) new fish_item(get_turf(user)) //Spawn the appropriate fish_item at the user's feet. kill_fish(fish_type) //Kill the caught fish from the tank - -/obj/machinery/fishtank/proc/destroy(var/deconstruct = 0) - var/turf/T = get_turf(src) //Store the tank's turf for atmos updating after deletion of tank - if(!deconstruct) //Check if we are deconstructing or breaking the tank - var/shards_left = shard_count - while(shards_left > 0) //Produce the appropriate number of glass shards - new /obj/item/shard(get_turf(src)) - shards_left -- - if(water_level) //Spill any water that was left in the tank when it broke - spill_water() - else //We are deconstructing, make glass sheets instead of shards - var/sheets = shard_count + 1 //Deconstructing it salvages all the glass used to build the tank - new /obj/item/stack/sheet/glass(get_turf(src), sheets) //Produce the appropriate number of glass sheets, in a single stack - qdel(src) //qdel the tank and it's contents - T.air_update_turf(1) //Update the air for the turf, to avoid permanent atmos sealing with wall tanks - + //Update the air for the turf, to avoid permanent atmos sealing with wall tanks /obj/machinery/fishtank/proc/spill_water() + var/turf/simulated/T = get_turf(src) switch(tank_type) if("bowl") //Fishbowl: Wets it's own tile - var/turf/T = get_turf(src) - if(!istype(T, /turf/simulated)) return - var/turf/simulated/S = T - S.MakeSlippery() + if(istype(T)) + T.MakeSlippery() if("tank") //Fishtank: Wets it's own tile and the 4 adjacent tiles (cardinal directions) - var/turf/ST = get_turf(src) - if(istype(ST, /turf/simulated)) - var/turf/simulated/ST2 = ST - ST2.MakeSlippery() - var/list/L = ST.CardinalTurfs() - for(var/turf/T in L) - if(!istype(T, /turf/simulated)) continue - var/turf/simulated/S = T - S.MakeSlippery() + if(istype(T)) + T.MakeSlippery() + for(var/turf/simulated/ST in T.CardinalTurfs()) + ST.MakeSlippery() if("wall") //Wall-tank: Wets it's own tile and the surrounding 8 tiles (3x3 square) - for(var/turf/T in spiral_range_turfs(1, src.loc)) - if(!istype(T, /turf/simulated)) continue - var/turf/simulated/S = T - S.MakeSlippery() + for(var/turf/simulated/ST in spiral_range_turfs(1, loc)) + ST.MakeSlippery() /obj/machinery/fishtank/proc/breed_fish() var/list/breed_candidates = fish_list.Copy() @@ -412,20 +375,20 @@ examine_message += "Water level: " - if(water_level == 0) - examine_message += "\The [src] is empty! " + if(!water_level) + examine_message += "[src] is empty! " else if(water_level < water_capacity * 0.1) - examine_message += "\The [src] is nearly empty! " + examine_message += "[src] is nearly empty! " else if(water_level <= water_capacity * 0.25) - examine_message += "\The [src] is about one-quarter filled. " + examine_message += "[src] is about one-quarter filled. " else if(water_level <= water_capacity * 0.5) - examine_message += "\The [src] is about half filled. " + examine_message += "[src] is about half filled. " else if(water_level <= water_capacity * 0.75) - examine_message += "\The [src] is about three-quarters filled. " + examine_message += "[src] is about three-quarters filled. " else if(water_level < water_capacity) - examine_message += "\The [src] is nearly full! " + examine_message += "[src] is nearly full! " else if(water_level == water_capacity) - examine_message += "\The [src] is full! " + examine_message += "[src] is full! " examine_message += "
Cleanliness level: " @@ -467,7 +430,7 @@ //Report the number and types of live fish if there is water in the tank if(fish_count == 0) - examine_message += "\The [src] doesn't contain any live fish. " + examine_message += "[src] doesn't contain any live fish. " else //Build a message reporting the types of fish var/fish_num = fish_count @@ -483,7 +446,7 @@ message +=", " message +="." //No more fish, end the message with a period //Display the number of fish and previously constructed message - examine_message += "\The [src] contains [fish_count] live fish. [message] " + examine_message += "[src] contains [fish_count] live fish. [message] " examine_message += "
" @@ -498,12 +461,16 @@ examine_message += "
" //Report if the tank is leaking/cracked - if(water_level > 0) //Tank has water, so it's actually leaking - if(leaking == 1) examine_message += "\The [src] is leaking." - if(leaking == 2) examine_message += "\The [src] is leaking profusely!" + if(water_level) //Tank has water, so it's actually leaking + if(leaking == 1) + examine_message += "[src] is leaking." + if(leaking == 2) + examine_message += "[src] is leaking profusely!" else //No water, report the cracks instead - if(leaking == 1) examine_message += "\The [src] is cracked." - if(leaking == 2) examine_message += "\The [src] is nearly shattered!" + if(leaking == 1) + examine_message += "[src] is cracked." + if(leaking == 2) + examine_message += "[src] is nearly shattered!" //Finally, report the full examine_message constructed from the above reports @@ -514,127 +481,113 @@ // ATACK PROCS // ////////////////////////////// -/obj/machinery/fishtank/attack_animal(mob/living/simple_animal/M as mob) +/obj/machinery/fishtank/attack_animal(mob/living/simple_animal/M) if(istype(M, /mob/living/simple_animal/pet/cat)) if(M.a_intent == INTENT_HELP) //Cats can try to fish in open tanks on help intent if(lid_switch) //Can't fish in a closed tank. Fishbowls are ALWAYS open. - M.visible_message("[M.name] stares at into \the [src] while sitting perfectly still.", "The lid is closed, so you stare into \the [src] intently.") + M.visible_message("[M.name] stares at into [src] while sitting perfectly still.", "The lid is closed, so you stare into [src] intently.") else if(fish_count) //Tank must actually have fish to try catching one - M.visible_message("[M.name] leaps up onto \the[src] and attempts to fish through the opening!", "You jump up onto \the [src] and begin fishing through the opening!") - spawn(10) - if(water_level && prob(45)) //If there is water, there is a chance the cat will slip, Syndicat will spark like E-N when this happens - M.visible_message("[M.name] slipped and got soaked!", "You slipped and got soaked!") - if(istype(M, /mob/living/simple_animal/pet/cat/Syndi)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() - else //No water or didn't slip, get that fish! - M.visible_message("[M.name] catches and devours a live fish!", "You catch and devour a live fish, yum!") - kill_fish() //Kill a random fish - M.health = M.maxHealth //Eating fish heals the predator + M.visible_message("[M.name] leaps up onto [src] and attempts to fish through the opening!", "You jump up onto [src] and begin fishing through the opening!") + if(water_level && prob(45)) //If there is water, there is a chance the cat will slip, Syndicat will spark like E-N when this happens + M.visible_message("[M.name] slipped and got soaked!", "You slipped and got soaked!") + if(istype(M, /mob/living/simple_animal/pet/cat/Syndi)) + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(3, 1, src) + s.start() + else //No water or didn't slip, get that fish! + M.visible_message("[M.name] catches and devours a live fish!", "You catch and devour a live fish, yum!") + kill_fish() //Kill a random fish + M.health = M.maxHealth //Eating fish heals the predator else - to_chat(usr, "There are no fish in [src]!") + to_chat(M, "There are no fish in [src]!") else - attack_generic(M, M.harm_intent_damage) + return ..() else if(istype(M, /mob/living/simple_animal/hostile/bear)) if(M.a_intent == INTENT_HELP) //Bears can try to fish in open tanks on help intent if(lid_switch) //Can't fish in a closed tank. Fishbowls are ALWAYS open. - M.visible_message("[M.name] scrapes it's claws along \the [src]'s lid.", "The lid is closed, so you scrape your claws against \the [src]'s lid.") + M.visible_message("[M.name] scrapes it's claws along [src]'s lid.", "The lid is closed, so you scrape your claws against [src]'s lid.") else if(fish_count) //Tank must actually have fish to try catching one - M.visible_message("[M.name] reaches into \the[src] and attempts to fish through the opening!", "You reach into \the [src] and begin fishing through the opening!") - spawn(5) - if(water_level && prob(5)) //Bears are good at catching fish, only a 5% chance to fail - M.visible_message("[M.name] swipes at the water!", "You just barely missed that fish!") - else //No water or didn't slip, get that fish! - M.visible_message("[M.name] catches and devours a live fish!", "You catch and devour a live fish, yum!") - kill_fish() //Kill a random fish - M.health = M.maxHealth //Eating fish heals the predator + M.visible_message("[M.name] reaches into [src] and attempts to fish through the opening!", "You reach into [src] and begin fishing through the opening!") + if(water_level && prob(5)) //Bears are good at catching fish, only a 5% chance to fail + M.visible_message("[M.name] swipes at the water!", "You just barely missed that fish!") + else //No water or didn't slip, get that fish! + M.visible_message("[M.name] catches and devours a live fish!", "You catch and devour a live fish, yum!") + kill_fish() //Kill a random fish + M.health = M.maxHealth //Eating fish heals the predator else - to_chat(usr, "There are no fish in [src]!") + to_chat(M, "There are no fish in [src]!") else - attack_generic(M, M.harm_intent_damage) + return ..() else - if(M.melee_damage_upper > 0) //If the simple_animal has a melee_damage_upper defined, use that for the damage - attack_generic(M, M.melee_damage_upper) - else if(M.a_intent == INTENT_HARM) //Let any simple_animal try to break tanks when on harm intent - if(M.harm_intent_damage <= 0) return //If it doesn't do damage, don't bother with the attack - attack_generic(M, M.harm_intent_damage) - check_health() + return ..() -/obj/machinery/fishtank/attack_alien(mob/living/user as mob) - if(islarva(user)) return - attack_generic(user, 15) - -/obj/machinery/fishtank/attack_slime(mob/living/user as mob) - var/mob/living/carbon/slime/S = user - if(!S.is_adult) - return - attack_generic(user, rand(10, 15)) - -/obj/machinery/fishtank/attack_hand(mob/user as mob) - if(HULK in user.mutations) - user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!")) - user.visible_message("[user] smashes through [src]!") - destroy() - else if(usr.a_intent == INTENT_HARM) - user.changeNext_move(CLICK_CD_MELEE) +/obj/machinery/fishtank/attack_hand(mob/user) + user.changeNext_move(CLICK_CD_MELEE) + if(user.a_intent == INTENT_HARM) playsound(get_turf(src), 'sound/effects/glassknock.ogg', 80, 1) - usr.visible_message("[usr.name] bangs against the [src.name]!", \ - "You bang against the [src.name]!", \ + user.visible_message("[user.name] bangs against the [name]!", \ + "You bang against the [name]!", \ "You hear a banging sound.") else - user.changeNext_move(CLICK_CD_MELEE) - playsound(src.loc, 'sound/effects/glassknock.ogg', 80, 1) - usr.visible_message("[usr.name] taps on the [src.name].", \ - "You tap on the [src.name].", \ + playsound(loc, 'sound/effects/glassknock.ogg', 80, 1) + user.visible_message("[user.name] taps on the [name].", \ + "You tap on the [name].", \ "You hear a knocking sound.") - return -/obj/machinery/fishtank/proc/hit(var/damage, var/sound_effect = 1) - cur_health = max(0, cur_health - damage) - if(sound_effect) - playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1) - check_health() - -/obj/machinery/fishtank/attack_generic(mob/living/user, damage = 0) //used by attack_alien, attack_animal, and attack_slime - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - cur_health -= damage - if(cur_health <= 0) - user.visible_message("[user] smashes through \the [src]!") - destroy() - else //for nicer text~ - user.visible_message("[user] smashes into \the [src]!") - playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1) +/obj/machinery/fishtank/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1) + . = ..() + if(.) //received damage check_health() -/obj/machinery/fishtank/attackby(var/obj/item/O, var/mob/user as mob) +/obj/machinery/fishtank/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + switch(damage_type) + if(BRUTE) + if(damage_amount) + playsound(src, 'sound/effects/Glasshit.ogg', 75, 1) + else + playsound(src, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + playsound(src, 'sound/items/Welder.ogg', 100, 1) + +/obj/machinery/fishtank/deconstruct(disassembled = TRUE) + if(QDELETED(src)) + return + if(!disassembled) + playsound(src, "shatter", 70, 1) + for(var/i in 1 to shard_count) //Produce the appropriate number of glass shards + var/obj/item/shard/S = new /obj/item/shard(get_turf(src)) + transfer_fingerprints_to(S) + if(water_level) //Spill any water that was left in the tank when it broke + spill_water() + else //We are deconstructing, make glass sheets instead of shards + new /obj/item/stack/sheet/glass(get_turf(src), shard_count + 1) //Produce the appropriate number of glass sheets, in a single stack + qdel(src) + +/obj/machinery/fishtank/attackby(obj/item/O, mob/user) //Welders repair damaged tanks on help intent, damage on all others - if(istype(O, /obj/item/weldingtool)) + if(iswelder(O)) var/obj/item/weldingtool/W = O if(user.a_intent == INTENT_HELP) if(W.isOn()) - if(cur_health < max_health) + if(obj_integrity < max_integrity) playsound(loc, W.usesound, 50, 1) - to_chat(usr, "You repair some of the cracks on \the [src].") - cur_health += 20 + to_chat(user, "You repair some of the cracks on [src].") + obj_integrity = min(obj_integrity + 20, max_integrity) check_health() else - to_chat(usr, "There is no damage to fix!") + to_chat(user, "There is no damage to fix!") else - if(cur_health < max_health) - to_chat(usr, "[W.name] must be on to repair this damage.") + if(obj_integrity < max_integrity) + to_chat(user, "[W] must be on to repair this damage.") else - user.changeNext_move(CLICK_CD_MELEE) - hit(W.force) - return + return ..() //Open reagent containers add and remove water - if(O.is_open_container()) + else if(O.is_open_container()) if(istype(O, /obj/item/reagent_containers/glass)) if(lid_switch) - to_chat(usr, "Open the lid on \the [src] first!") + to_chat(user, "Open the lid on [src] first!") return var/obj/item/reagent_containers/glass/C = O //Containers with any reagents will get dumped in @@ -652,57 +605,52 @@ C.reagents.clear_reagents() else if(water_level == water_capacity) - to_chat(usr, "[src] is already full!") - return + to_chat(user, "[src] is already full!") else message = "The filtration process purifies the water, raising the water level." if((water_level + water_value) == water_capacity) - message += " You filled \the [src] to the brim!" + message += " You filled [src] to the brim!" if((water_level + water_value) > water_capacity) - message += " You overfilled \the [src] and some water runs down the side, wasted." + message += " You overfilled [src] and some water runs down the side, wasted." C.reagents.clear_reagents() adjust_water_level(water_value) - user.visible_message("[user.name] pours the contents of [C.name] into \the [src].", "[message]") - return + user.visible_message("[user.name] pours the contents of [C.name] into [src].", "[message]") //Empty containers will scoop out water, filling the container as much as possible from the water_level else - if(water_level == 0) - to_chat(usr, "[src] is empty!") + if(!water_level) + to_chat(user, "[src] is empty!") else if(water_level >= C.volume) //Enough to fill the container completely C.reagents.add_reagent("fishwater", C.volume) adjust_water_level(-C.volume) - user.visible_message("[user.name] scoops out some water from \the [src].", "You completely fill [C.name] from \the [src].") + user.visible_message("[user.name] scoops out some water from [src].", "You completely fill [C.name] from [src].") else //Fill the container as much as possible with the water_level C.reagents.add_reagent("fishwater", water_level) adjust_water_level(-water_level) - user.visible_message("[user.name] scoops out some water from \the [src].", "You fill [C.name] with the last of the water in \the [src].") - return + user.visible_message("[user.name] scoops out some water from [src].", "You fill [C.name] with the last of the water in [src].") //Wrenches can deconstruct empty tanks, but not tanks with any water. Kills any fish left inside and destroys any unharvested eggs in the process - if(istype(O, /obj/item/wrench)) - if(water_level == 0) - to_chat(usr, "Now disassembling [src].") - playsound(src.loc, O.usesound, 50, 1) + else if(iswrench(O)) + if(!water_level) + to_chat(user, "Now disassembling [src].") + playsound(loc, O.usesound, 50, 1) if(do_after(user, 50 * O.toolspeed, target = src)) - destroy(1) + deconstruct(TRUE) else - to_chat(usr, "[src] must be empty before you disassemble it!") - return + to_chat(user, "[src] must be empty before you disassemble it!") //Fish eggs else if(istype(O, /obj/item/fish_eggs)) var/obj/item/fish_eggs/egg = O //Don't add eggs if there is no water (they kinda need that to live) - if(water_level == 0) - to_chat(usr, "[src] has no water; [egg.name] won't hatch without water!") + if(!water_level) + to_chat(user, "[src] has no water; [egg.name] won't hatch without water!") else //Don't add eggs if the tank already has the max number of fish if(fish_count >= max_fish) - to_chat(usr, "[src] can't hold any more fish.") + to_chat(user, "[src] can't hold any more fish.") else add_fish(egg.fish_type) qdel(egg) - return //Fish food else if(istype(O, /obj/item/fishfood)) //Only add food if there is water and it isn't already full of food @@ -711,33 +659,28 @@ if(fish_count == 0) user.visible_message("[user.name] shakes some fish food into the empty [src]... How sad.", "You shake some fish food into the empty [src]... If only it had fish.") else - user.visible_message("[user.name] feeds the fish in \the [src]. The fish look excited!", "You feed the fish in \the [src]. They look excited!") + user.visible_message("[user.name] feeds the fish in [src]. The fish look excited!", "You feed the fish in [src]. They look excited!") adjust_food_level(10) else - to_chat(usr, "[src] already has plenty of food in it. You decide to not add more.") + to_chat(user, "[src] already has plenty of food in it. You decide to not add more.") else - to_chat(usr, "[src] doesn't have any water in it. You should fill it with water first.") - return + to_chat(user, "[src] doesn't have any water in it. You should fill it with water first.") //Fish egg scoop else if(istype(O, /obj/item/egg_scoop)) if(egg_count) - user.visible_message("[user.name] harvests some fish eggs from \the [src].", "You scoop the fish eggs out of \the [src].") + user.visible_message("[user.name] harvests some fish eggs from [src].", "You scoop the fish eggs out of [src].") harvest_eggs(user) else - user.visible_message("[user.name] fails to harvest any fish eggs from \the [src].", "There are no fish eggs in \the [src] to scoop out.") - return + user.visible_message("[user.name] fails to harvest any fish eggs from [src].", "There are no fish eggs in [src] to scoop out.") //Fish net - if(istype(O, /obj/item/fish_net)) + else if(istype(O, /obj/item/fish_net)) harvest_fish(user) - return //Tank brush - if(istype(O, /obj/item/tank_brush)) + else if(istype(O, /obj/item/tank_brush)) if(filth_level == 0) - to_chat(usr, "[src] is already spotless!") + to_chat(user, "[src] is already spotless!") else adjust_filth_level(-filth_level) - user.visible_message("[user.name] scrubs the inside of \the [src], cleaning the filth.", "You scrub the inside of \the [src], cleaning the filth.") - else if(O && O.force) - user.visible_message("\The [src] has been attacked by [user.name] with \the [O]!") - hit(O.force) - return + user.visible_message("[user.name] scrubs the inside of [src], cleaning the filth.", "You scrub the inside of [src], cleaning the filth.") + else + return ..() \ No newline at end of file diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm index 6a1d28eaf87..b69ed4738b6 100644 --- a/code/modules/flufftext/Dreaming.dm +++ b/code/modules/flufftext/Dreaming.dm @@ -43,7 +43,7 @@ nightmare() if(ishuman(src)) if(prob(10)) - emote("writhes in their sleep.") + emote("writhes in [p_their()] sleep.") dir = pick(cardinal) /mob/living/carbon/proc/experience_dream(dream_image, isNightmare) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 021db59f8a4..d8a1f4f1526 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -641,6 +641,7 @@ Gunshots/explosions/opening doors/less rare audio (done) updateimage() else if(prob(15)) + do_attack_animation(my_target, ATTACK_EFFECT_PUNCH) if(weapon_name) my_target.playsound_local(my_target, weap.hitsound, 1) my_target.show_message("[src.name] has attacked [my_target] with [weapon_name]!", 1) diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index a5aa4662c63..91ee910c8d4 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -47,7 +47,7 @@ to_chat(chugger, "You need to open [src] first!") return if(istype(chugger) && loc == chugger && src == chugger.get_active_hand() && reagents.total_volume) - chugger.visible_message("[chugger] raises the [src] to their mouth and starts [pick("chugging","gulping")] it down like [pick("a savage","a mad beast","it's going out of style","there's no tomorrow")]!", "You start chugging \the [src].", "You hear what sounds like gulping.") + chugger.visible_message("[chugger] raises the [src] to [chugger.p_their()] mouth and starts [pick("chugging","gulping")] it down like [pick("a savage","a mad beast","it's going out of style","there's no tomorrow")]!", "You start chugging [src].", "You hear what sounds like gulping.") while(do_mob(chugger, chugger, 40)) //Between the default time for do_mob and the time it takes for a vampire to suck blood. chugger.eat(src, chugger, 25) //Half of a glass, quarter of a bottle. if(!reagents.total_volume) //Finish in style. diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index a7274c53f4e..d9c59a46d58 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -102,8 +102,8 @@ target.visible_message("[user] has hit [target][head_attack_message] with a bottle of [name]!", \ "[user] has hit [target][head_attack_message] with a bottle of [name]!") else - user.visible_message("[target] hits \himself with a bottle of [name][head_attack_message]!", \ - "[target] hits \himself with a bottle of [name][head_attack_message]!") + user.visible_message("[target] hits [target.p_them()]self with a bottle of [name][head_attack_message]!", \ + "[target] hits [target.p_them()]self with a bottle of [name][head_attack_message]!") //Attack logs add_attack_logs(user, target, "Hit with [src]") diff --git a/code/modules/food_and_drinks/drinks/drinks/cans.dm b/code/modules/food_and_drinks/drinks/drinks/cans.dm index 282278c990e..979acf473fd 100644 --- a/code/modules/food_and_drinks/drinks/drinks/cans.dm +++ b/code/modules/food_and_drinks/drinks/drinks/cans.dm @@ -33,14 +33,14 @@ to_chat(user, "You need to open the drink!") return else if(M == user && !reagents.total_volume && user.a_intent == INTENT_HARM && user.zone_sel.selecting == "head") - user.visible_message("[user] crushes ["\the [src]"] on \his forehead!", "You crush \the [src] on your forehead.") + user.visible_message("[user] crushes [src] on [user.p_their()] forehead!", "You crush [src] on your forehead.") crush(user) return return ..() /obj/item/reagent_containers/food/drinks/cans/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/storage/bag/trash/cyborg)) - user.visible_message("[user] crushes \the [src] in their trash compactor.", "You crush \the [src] in your trash compactor.") + user.visible_message("[user] crushes [src] in [user.p_their()] trash compactor.", "You crush [src] in your trash compactor.") var/obj/can = crush(user) can.attackby(I, user, params) return 1 diff --git a/code/modules/food_and_drinks/drinks/drinks/shotglass.dm b/code/modules/food_and_drinks/drinks/drinks/shotglass.dm index 24b50489402..393543b093c 100644 --- a/code/modules/food_and_drinks/drinks/drinks/shotglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/shotglass.dm @@ -38,7 +38,7 @@ /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/proc/clumsilyDrink(mob/living/carbon/human/user) //Clowns beware if(burn_state != ON_FIRE) return - user.visible_message("[user] pours [src] all over themself!", "You pour [src] all over yourself!", "You hear a 'whoompf' and a sizzle.") + user.visible_message("[user] pours [src] all over [user.p_them()]self!", "You pour [src] all over yourself!", "You hear a 'whoompf' and a sizzle.") extinguish(TRUE) reagents.reaction(user, TOUCH) reagents.clear_reagents() @@ -90,7 +90,7 @@ if((CLUMSY in user.mutations) && prob(50)) clumsilyDrink(user) else - user.visible_message("[user] places their hand over [src] to put it out!", "You use your hand to extinguish [src]!") + user.visible_message("[user] places [user.p_their()] hand over [src] to put it out!", "You use your hand to extinguish [src]!") extinguish() /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/MouseDrop(mob/living/carbon/human/user) diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index c40e47e213a..b0c0d24efaa 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -131,7 +131,7 @@ possible_states = list() /obj/item/reagent_containers/food/condiment/saltshaker/suicide_act(mob/user) - user.visible_message("[user] begins to swap forms with the salt shaker! It looks like \he's trying to commit suicide.") + user.visible_message("[user] begins to swap forms with the salt shaker! It looks like [user.p_theyre()] trying to commit suicide.") var/newname = "[name]" name = "[user.name]" user.name = newname diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index bc442486d5c..5dc010bfae9 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -99,6 +99,7 @@ U.overlays += I var/obj/item/reagent_containers/food/snacks/collected = new type + collected.name = name collected.loc = U collected.reagents.remove_any(collected.reagents.total_volume) collected.trash = null diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index b4a787ea4c8..6f6d9132fdf 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -58,7 +58,7 @@ C.emote("scream") user.changeNext_move(CLICK_CD_MELEE) C.apply_damage(25, BURN, "head") //25 fire damage and disfigurement because your face was just deep fried! - head.disfigure("burn") + head.disfigure() add_attack_logs(user, G.affecting, "Deep-fried with [src]") qdel(G) //Removes the grip so the person MIGHT have a small chance to run the fuck away and to prevent rapid dunks. return 0 diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index 0c2af905a74..a67b88f97d4 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -260,7 +260,7 @@ new /obj/effect/decal/cleanable/blood/gibs(src) if(!UserOverride) - add_attack_logs(user, occupant, "Gibbed in [src]", !!occupant.ckey) + add_attack_logs(user, occupant, "Gibbed in [src]", !!occupant.ckey ? ATKLOG_FEW : ATKLOG_ALL) if(!iscarbon(user)) occupant.LAssailant = null diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm index 58cec86dc1c..950b873af55 100644 --- a/code/modules/hydroponics/beekeeping/beebox.dm +++ b/code/modules/hydroponics/beekeeping/beebox.dm @@ -179,7 +179,7 @@ visible_message("The [qb] refuses to settle down. Maybe it's something to do with its reagent?") if(queen_bee) - visible_message("[user] sets [qb] down inside the apiary, making it their new home.") + visible_message("[user] sets [qb] down inside the apiary, making it [user.p_their()] new home.") var/relocated = 0 for(var/b in bees) var/mob/living/simple_animal/hostile/poison/bees/worker/B = b diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index 36065efa298..6874038a7bf 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -25,7 +25,7 @@ bitesize = 5 /obj/item/reagent_containers/food/snacks/grown/banana/suicide_act(mob/user) - user.visible_message("[user] is aiming the [src.name] at themself! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is aiming the [name] at [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide.") playsound(loc, 'sound/items/bikehorn.ogg', 50, 1, -1) sleep(25) if(!user) @@ -34,7 +34,7 @@ sleep(25) if(!user) return (OXYLOSS) - user.visible_message("[user] laughs so hard they begin to suffocate!") + user.visible_message("[user] laughs so hard [user.p_they()] begin[user.p_s()] to suffocate!") return (OXYLOSS) /obj/item/grown/bananapeel @@ -49,7 +49,7 @@ throw_range = 7 /obj/item/grown/bananapeel/suicide_act(mob/user) - user.visible_message("[user] is deliberately slipping on the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is deliberately slipping on the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.") playsound(loc, 'sound/misc/slip.ogg', 50, 1, -1) return (BRUTELOSS) diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm index 157a2813b8f..86bc8082661 100644 --- a/code/modules/hydroponics/grown/citrus.dm +++ b/code/modules/hydroponics/grown/citrus.dm @@ -109,7 +109,7 @@ var/area/A = get_area(user) user.visible_message("[user] primes the [src]!", "You prime the [src]!") var/message = "[ADMIN_LOOKUPFLW(user)] primed a combustible lemon for detonation at [A] [ADMIN_COORDJMP(user)]" - bombers += message + investigate_log("[key_name(user)] primed a combustible lemon for detonation at [A] [COORD(user)].", INVESTIGATE_BOMB) message_admins(message) log_game("[key_name(user)] primed a combustible lemon for detonation at [A] [COORD(user)].") if(iscarbon(user)) diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 0169e3bb5d9..09c16544396 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -22,7 +22,7 @@ return S /obj/item/seeds/kudzu/suicide_act(mob/user) - user.visible_message("[user] swallows the pack of kudzu seeds! It looks like \he's trying to commit suicide..") + user.visible_message("[user] swallows the pack of kudzu seeds! It looks like [user.p_theyre()] trying to commit suicide..") plant(user) return (BRUTELOSS) diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm index c65c9dcf618..8bbe4a4e240 100644 --- a/code/modules/hydroponics/grown/nettle.dm +++ b/code/modules/hydroponics/grown/nettle.dm @@ -44,7 +44,7 @@ attack_verb = list("stung") /obj/item/grown/nettle/suicide_act(mob/user) - user.visible_message("[user] is eating some of the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is eating some of the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.") return (BRUTELOSS|TOXLOSS) /obj/item/grown/nettle/pickup(mob/living/user) diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 7bb064f752e..6b2da2c29ae 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -33,7 +33,7 @@ reagents.add_reagent("atrazine", 100) /obj/item/reagent_containers/spray/weedspray/suicide_act(mob/user) - user.visible_message("[user] is huffing the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is huffing the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.") return (TOXLOSS) /obj/item/reagent_containers/spray/pestspray // -- Skie @@ -55,7 +55,7 @@ reagents.add_reagent("pestkiller", 100) /obj/item/reagent_containers/spray/pestspray/suicide_act(mob/user) - user.visible_message("[user] is huffing the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is huffing the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.") return (TOXLOSS) /obj/item/cultivator @@ -89,7 +89,7 @@ sharp = 1 /obj/item/hatchet/suicide_act(mob/user) - user.visible_message("[user] is chopping at \himself with the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is chopping at [user.p_them()]self with the [name]! It looks like [user.p_theyre()] trying to commit suicide.") playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) return (BRUTELOSS) @@ -119,7 +119,7 @@ var/swiping = FALSE /obj/item/scythe/suicide_act(mob/user) - user.visible_message("[user] is beheading \himself with the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is beheading [user.p_them()]self with the [name]! It looks like [user.p_theyre()] trying to commit suicide.") if(ishuman(user)) var/mob/living/carbon/human/H = user var/obj/item/organ/external/affecting = H.get_organ("head") diff --git a/code/modules/library/computers/checkout.dm b/code/modules/library/computers/checkout.dm index 0f0774aa1f4..fdcfee0e87a 100644 --- a/code/modules/library/computers/checkout.dm +++ b/code/modules/library/computers/checkout.dm @@ -49,7 +49,7 @@ if(src.arcanecheckout) new /obj/item/tome(src.loc) 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 dusty old tome sitting on the desk. You don't really remember printing it.") - user.visible_message("[user] stares at the blank screen for a few moments, his expression frozen in fear. When he finally awakens from it, he looks a lot older.", 2) + 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) src.arcanecheckout = 0 if(1) // Inventory diff --git a/code/modules/martial_arts/brawling.dm b/code/modules/martial_arts/brawling.dm index 9f9fa5236b2..a40a52b86be 100644 --- a/code/modules/martial_arts/brawling.dm +++ b/code/modules/martial_arts/brawling.dm @@ -11,7 +11,7 @@ /datum/martial_art/boxing/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - A.do_attack_animation(D) + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) var/atk_verb = pick("left hook","right hook","straight punch") @@ -62,7 +62,7 @@ /datum/martial_art/drunk_brawling/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) add_attack_logs(A, D, "Melee attacked with [src]") - A.do_attack_animation(D) + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) var/atk_verb = pick("jab","uppercut","overhand punch","drunken right hook","drunken left hook") diff --git a/code/modules/martial_arts/krav_maga.dm b/code/modules/martial_arts/krav_maga.dm index d17d1b30495..9e889bdce7a 100644 --- a/code/modules/martial_arts/krav_maga.dm +++ b/code/modules/martial_arts/krav_maga.dm @@ -109,7 +109,6 @@ datum/martial_art/krav_maga/grab_act(var/mob/living/carbon/human/A, var/mob/livi if(check_streak(A,D)) return 1 add_attack_logs(A, D, "Melee attacked with [src]") - A.do_attack_animation(D) var/picked_hit_type = pick("punches", "kicks") var/bonus_damage = 10 if(D.weakened || D.resting || D.lying) @@ -117,8 +116,10 @@ datum/martial_art/krav_maga/grab_act(var/mob/living/carbon/human/A, var/mob/livi picked_hit_type = "stomps on" D.apply_damage(bonus_damage, BRUTE) if(picked_hit_type == "kicks" || picked_hit_type == "stomps") + A.do_attack_animation(D, ATTACK_EFFECT_KICK) playsound(get_turf(D), 'sound/effects/hit_kick.ogg', 50, 1, -1) else + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) playsound(get_turf(D), 'sound/effects/hit_punch.ogg', 50, 1, -1) D.visible_message("[A] [picked_hit_type] [D]!", \ "[A] [picked_hit_type] you!") diff --git a/code/modules/martial_arts/martial.dm b/code/modules/martial_arts/martial.dm index 3e1be19b0de..f42b7963104 100644 --- a/code/modules/martial_arts/martial.dm +++ b/code/modules/martial_arts/martial.dm @@ -33,7 +33,6 @@ /datum/martial_art/proc/basic_hit(var/mob/living/carbon/human/A,var/mob/living/carbon/human/D) - A.do_attack_animation(D) var/damage = rand(A.species.punchdamagelow, A.species.punchdamagehigh) var/datum/unarmed_attack/attack = A.species.unarmed @@ -41,6 +40,12 @@ if(D.lying) atk_verb = "kick" + switch(atk_verb) + if("kick") + A.do_attack_animation(D, ATTACK_EFFECT_KICK) + else + A.do_attack_animation(D, attack.animation_type) + if(!damage) playsound(D.loc, attack.miss_sound, 25, 1, -1) D.visible_message("[A] has attempted to [atk_verb] [D]!") @@ -55,7 +60,7 @@ D.apply_damage(damage, BRUTE, affecting, armor_block) - add_attack_logs(A, D, "Melee attacked with martial-art [src]", admin_notify = (damage > 0) ? TRUE : FALSE) + add_attack_logs(A, D, "Melee attacked with martial-art [src]", (damage > 0) ? null : ATKLOG_ALL) if((D.stat != DEAD) && damage >= A.species.punchstunthreshold) D.visible_message("[A] has weakened [D]!!", \ @@ -205,7 +210,7 @@ return ..() var/mob/living/carbon/C = target if(C.stat) - to_chat(user, "It would be dishonorable to attack a foe while they cannot retaliate.") + to_chat(user, "It would be dishonorable to attack a foe while [C.p_they()] cannot retaliate.") return switch(user.a_intent) if(INTENT_DISARM) @@ -231,7 +236,7 @@ if(H.staminaloss && !H.sleeping) var/total_health = (H.health - H.staminaloss) if(total_health <= config.health_threshold_crit && !H.stat) - H.visible_message("[user] delivers a heavy hit to [H]'s head, knocking them out cold!", \ + H.visible_message("[user] delivers a heavy hit to [H]'s head, knocking [H.p_them()] out cold!", \ "[user] knocks you unconscious!") H.SetSleeping(30) H.adjustBrainLoss(25) diff --git a/code/modules/martial_arts/mimejutsu.dm b/code/modules/martial_arts/mimejutsu.dm index 4d8edbf7236..38605c3538d 100644 --- a/code/modules/martial_arts/mimejutsu.dm +++ b/code/modules/martial_arts/mimejutsu.dm @@ -55,8 +55,8 @@ /datum/martial_art/mimejutsu/proc/mimePalm(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) if(!D.stat && !D.stunned && !D.weakened) - D.visible_message("[A] has barely touched [D] with their palm!", \ - "[A] hovers their palm over your face!") + D.visible_message("[A] has barely touched [D] with [A.p_their()] palm!", \ + "[A] hovers [A.p_their()] palm over your face!") var/atom/throw_target = get_edge_target_turf(D, get_dir(D, get_step_away(D, A))) D.throw_at(throw_target, 200, 4,A) diff --git a/code/modules/martial_arts/plasma_fist.dm b/code/modules/martial_arts/plasma_fist.dm index d2e047dc08d..5aed9b8e9e1 100644 --- a/code/modules/martial_arts/plasma_fist.dm +++ b/code/modules/martial_arts/plasma_fist.dm @@ -46,7 +46,7 @@ return /datum/martial_art/plasma_fist/proc/Plasma(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - A.do_attack_animation(D) + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) playsound(D.loc, 'sound/weapons/punch1.ogg', 50, 1, -1) A.say("PLASMA FIST!") D.visible_message("[A] has hit [D] with THE PLASMA FIST TECHNIQUE!", \ diff --git a/code/modules/martial_arts/sleeping_carp.dm b/code/modules/martial_arts/sleeping_carp.dm index 45f4948bc14..a6cd25d50c0 100644 --- a/code/modules/martial_arts/sleeping_carp.dm +++ b/code/modules/martial_arts/sleeping_carp.dm @@ -36,7 +36,7 @@ /datum/martial_art/the_sleeping_carp/proc/wristWrench(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) if(!D.stat && !D.stunned && !D.weakened) - A.do_attack_animation(D) + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) D.visible_message("[A] grabs [D]'s wrist and wrenches it sideways!", \ "[A] grabs your wrist and violently wrenches it to the side!") playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) @@ -51,7 +51,7 @@ /datum/martial_art/the_sleeping_carp/proc/backKick(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) if(A.dir == D.dir && !D.stat && !D.weakened) - A.do_attack_animation(D) + A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] kicks [D] in the back!", \ "[A] kicks you in the back, making you stumble and fall!") step_to(D,get_step(D,D.dir),1) @@ -64,7 +64,7 @@ /datum/martial_art/the_sleeping_carp/proc/kneeStomach(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) if(!D.stat && !D.weakened) - A.do_attack_animation(D) + A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] knees [D] in the stomach!", \ "[A] winds you with a knee in the stomach!") D.audible_message("[D] gags!") @@ -78,7 +78,7 @@ /datum/martial_art/the_sleeping_carp/proc/headKick(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) if(!D.stat && !D.weakened) - A.do_attack_animation(D) + A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] kicks [D] in the head!", \ "[A] kicks you in the jaw!") D.apply_damage(20, BRUTE, "head") @@ -92,9 +92,9 @@ /datum/martial_art/the_sleeping_carp/proc/elbowDrop(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) if(D.weakened || D.resting || D.stat) - A.do_attack_animation(D) + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) D.visible_message("[A] elbow drops [D]!", \ - "[A] piledrives you with their elbow!") + "[A] piledrives you with [A.p_their()] elbow!") if(D.stat) D.death() //FINISH HIM! D.apply_damage(50, BRUTE, "chest") @@ -117,7 +117,7 @@ add_to_streak("H",D) if(check_streak(A,D)) return 1 - A.do_attack_animation(D) + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) var/atk_verb = pick("punches", "kicks", "chops", "hits", "slams") D.visible_message("[A] [atk_verb] [D]!", \ "[A] [atk_verb] you!") diff --git a/code/modules/mining/coins.dm b/code/modules/mining/coins.dm index 9f4f7629c7e..4d94793a5e9 100644 --- a/code/modules/mining/coins.dm +++ b/code/modules/mining/coins.dm @@ -106,7 +106,7 @@ return if(CC.use(1)) - overlays += image('icons/obj/items.dmi',"coin_string_overlay") + overlays += image('icons/obj/economy.dmi',"coin_string_overlay") string_attached = 1 to_chat(user, "You attach a string to the coin.") else diff --git a/code/modules/mining/lavaland/loot/ashdragon_loot.dm b/code/modules/mining/lavaland/loot/ashdragon_loot.dm index fba4725e5f0..ff0db975895 100644 --- a/code/modules/mining/lavaland/loot/ashdragon_loot.dm +++ b/code/modules/mining/lavaland/loot/ashdragon_loot.dm @@ -52,7 +52,7 @@ return to_chat(user, "You call out for aid, attempting to summon spirits to your side.") - notify_ghosts("[user] is raising their [src], calling for your help!", enter_link="(Click to help)", source = user, action = NOTIFY_FOLLOW) + notify_ghosts("[user] is raising [user.p_their()] [src], calling for your help!", enter_link="(Click to help)", source = user, action = NOTIFY_FOLLOW) summon_cooldown = world.time + 600 diff --git a/code/modules/mining/lavaland/loot/bubblegum_loot.dm b/code/modules/mining/lavaland/loot/bubblegum_loot.dm index 03ee7eb0a8d..613239b58a9 100644 --- a/code/modules/mining/lavaland/loot/bubblegum_loot.dm +++ b/code/modules/mining/lavaland/loot/bubblegum_loot.dm @@ -75,7 +75,7 @@ for(var/mob/living/carbon/human/H in player_list) if(H == L) continue - to_chat(H, "You have an overwhelming desire to kill [L]. They have been marked red! Go kill them!") + to_chat(H, "You have an overwhelming desire to kill [L]. [L.p_they(TRUE)] [L.p_have()] been marked red! Go kill [L.p_them()]!") H.put_in_hands(new /obj/item/kitchen/knife/butcher(H)) qdel(src) \ No newline at end of file diff --git a/code/modules/mining/lavaland/loot/hierophant_loot.dm b/code/modules/mining/lavaland/loot/hierophant_loot.dm index 62d72d4a0a9..1d66d59d316 100644 --- a/code/modules/mining/lavaland/loot/hierophant_loot.dm +++ b/code/modules/mining/lavaland/loot/hierophant_loot.dm @@ -57,7 +57,7 @@ return if(!rune) if(isturf(user.loc)) - user.visible_message("[user] holds [src] carefully in front of them, moving it in a strange pattern...", \ + user.visible_message("[user] holds [src] carefully in front of [user.p_them()], moving it in a strange pattern...", \ "You start creating a hierophant rune to teleport to...") timer = world.time + 51 if(do_after(user, 50, target = user)) @@ -67,7 +67,7 @@ var/obj/effect/hierophant/H = new/obj/effect/hierophant(T) rune = H user.update_action_buttons_icon() - user.visible_message("[user] creates a strange rune beneath them!", \ + user.visible_message("[user] creates a strange rune beneath [user.p_them()]!", \ "You create a hierophant rune, which you can teleport yourself and any allies to at any time!\n\ You can remove the rune to place a new one by striking it with the staff.") else diff --git a/code/modules/mining/lavaland/loot/legion_loot.dm b/code/modules/mining/lavaland/loot/legion_loot.dm index 210710db4d9..f11d6162f55 100644 --- a/code/modules/mining/lavaland/loot/legion_loot.dm +++ b/code/modules/mining/lavaland/loot/legion_loot.dm @@ -5,7 +5,6 @@ item_state = "staffofstorms" icon = 'icons/obj/guns/magic.dmi' slot_flags = SLOT_BACK - item_state = "staffofstorms" w_class = WEIGHT_CLASS_BULKY force = 25 damtype = BURN @@ -19,34 +18,36 @@ return var/area/user_area = get_area(user) + var/turf/user_turf = get_turf(user) + if(!user_area || !user_turf) + to_chat(user, "Something is preventing you from using the staff here.") + return var/datum/weather/A - var/z_level_name = space_manager.levels_by_name[user.z] - for(var/V in weather_master.existing_weather) + for(var/V in SSweather.processing) var/datum/weather/W = V - if(W.target_z == z_level_name && W.area_type == user_area.type) + if((user_turf.z in W.impacted_z_levels) && W.area_type == user_area.type) A = W break - if(A) + if(A) if(A.stage != END_STAGE) if(A.stage == WIND_DOWN_STAGE) to_chat(user, "The storm is already ending! It would be a waste to use the staff now.") return user.visible_message("[user] holds [src] skywards as an orange beam travels into the sky!", \ "You hold [src] skyward, dispelling the storm!") - playsound(user, 'sound/magic/Staff_Change.ogg', 200, 0) + playsound(user, 'sound/magic/staff_change.ogg', 200, 0) A.wind_down() return else - A = new storm_type + A = new storm_type(list(user_turf.z)) A.name = "staff storm" A.area_type = user_area.type - A.target_z = z_level_name A.telegraph_duration = 100 A.end_duration = 100 user.visible_message("[user] holds [src] skywards as red lightning crackles into the sky!", \ "You hold [src] skyward, calling down a terrible storm!") - playsound(user, 'sound/magic/Staff_Change.ogg', 200, 0) + playsound(user, 'sound/magic/staff_change.ogg', 200, 0) A.telegraph() storm_cooldown = world.time + 200 diff --git a/code/modules/mining/lavaland/loot/tendril_loot.dm b/code/modules/mining/lavaland/loot/tendril_loot.dm index 9c6ea675ba3..e1c6c7f28a9 100644 --- a/code/modules/mining/lavaland/loot/tendril_loot.dm +++ b/code/modules/mining/lavaland/loot/tendril_loot.dm @@ -355,7 +355,7 @@ if(cooldown < world.time) feedback_add_details("immortality_talisman","U") // usage cooldown = world.time + 600 - user.visible_message("[user] vanishes from reality, leaving a a hole in their place!") + user.visible_message("[user] vanishes from reality, leaving a a hole in [user.p_their()] place!") var/obj/effect/immortality_talisman/Z = new(get_turf(src.loc)) Z.name = "hole in reality" Z.desc = "It's shaped an awful lot like [user.name]." diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 1ef887c2527..0a151babe67 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -341,20 +341,28 @@ //Pod turfs and objects //Window +/obj/structure/window/shuttle/survival_pod + name = "pod window" + icon = 'icons/obj/smooth_structures/pod_window.dmi' + icon_state = "smooth" + dir = FULLTILE_WINDOW_DIR + max_integrity = 100 + fulltile = TRUE + reinf = TRUE + heat_resistance = 1600 + armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100) + smooth = SMOOTH_MORE + canSmoothWith = list(/turf/simulated/wall/mineral/titanium/survival, /obj/machinery/door/airlock/survival_pod, /obj/structure/window/shuttle/survival_pod) + explosion_block = 3 + level = 3 + glass_type = /obj/item/stack/sheet/titaniumglass + glass_amount = 2 + /obj/structure/window/reinforced/survival_pod name = "pod window" icon = 'icons/obj/lavaland/survival_pod.dmi' icon_state = "pwindow" -// This override can be removed whenever we get rid of the stupid fucking `dir = 9` = full tile!!!! shit -/obj/structure/window/reinforced/survival_pod/CanPass(atom/movable/mover, turf/target, height=0) - if(istype(mover) && mover.checkpass(PASSGLASS)) - return 1 - if(get_dir(loc, target) == dir) - return !density - else - return 1 - //Floors /turf/simulated/floor/pod name = "pod floor" diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index 711d4cea992..57be913c699 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -70,7 +70,7 @@ if(speaker == src) to_chat(src, "You cannot hear yourself speak!") else - to_chat(src, "[speaker_name][alt_name] talks but you cannot hear them.") + to_chat(src, "[speaker_name][alt_name] talks but you cannot hear [speaker.p_them()].") else if(language) to_chat(src, "[speaker_name][alt_name] [track][language.format_message(message, verb)]") diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index dc2e8ee7106..93bdfe30c27 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -310,12 +310,7 @@ to_chat(speaker,"You can't communicate while unable to move your hands to your head!") return FALSE - var/their = "their" - if(speaker.gender == "female") - their = "her" - if(speaker.gender == "male") - their = "his" - speaker.visible_message("[speaker] touches [their] fingers to [their] temple.") //If placed in grey/broadcast, it will happen regardless of the success of the action. + speaker.visible_message("[speaker] touches [speaker.p_their()] fingers to [speaker.p_their()] temple.") //If placed in grey/broadcast, it will happen regardless of the success of the action. return TRUE diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index e706b89ca85..8f74fbce413 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -1,7 +1,3 @@ -#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point -#define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point -#define HEAT_DAMAGE_LEVEL_3 8 //Amount of damage applied when your body temperature passes the 1000K point - /mob/living/carbon/alien name = "alien" voice_name = "alien" @@ -229,10 +225,6 @@ Des: Removes all infected images from the alien. /mob/living/carbon/alien/can_use_vents() return -#undef HEAT_DAMAGE_LEVEL_1 -#undef HEAT_DAMAGE_LEVEL_2 -#undef HEAT_DAMAGE_LEVEL_3 - /mob/living/carbon/alien/handle_footstep(turf/T) if(..()) if(T.footstep_sounds["xeno"]) diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index 22954451834..72bf30ceedf 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -29,13 +29,13 @@ In all, this is a lot like the monkey code. /N else if(health > 0) - M.do_attack_animation(src) + M.do_attack_animation(src, ATTACK_EFFECT_BITE) playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1) var/damage = 1 visible_message("[M.name] bites [src]!", \ "[M.name] bites [src]!") adjustBruteLoss(damage) - add_attack_logs(M, src, "Alien attack", FALSE) + add_attack_logs(M, src, "Alien attack", ATKLOG_ALL) updatehealth() else to_chat(M, "[name] is too injured for that.") @@ -52,8 +52,10 @@ In all, this is a lot like the monkey code. /N help_shake_act(M) if(INTENT_GRAB) grabbedby(M) - if(INTENT_HARM, INTENT_DISARM) - M.do_attack_animation(src) + if(INTENT_HARM) + M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) + if(INTENT_DISARM) + M.do_attack_animation(src, ATTACK_EFFECT_DISARM) return 1 return 0 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 a2527317eec..7f23be77774 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -161,7 +161,7 @@ Doesn't work on other aliens/AI.*/ stomach_contents.Remove(M) M.loc = loc //Paralyse(10) - src.visible_message("[src] hurls out the contents of their stomach!") + src.visible_message("[src] hurls out the contents of [p_their()] stomach!") return /mob/living/carbon/proc/getPlasma() diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm index 0056bb709a5..3fa08702605 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm @@ -1,16 +1,25 @@ +/mob/living/carbon/alien/humanoid/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + ..(user, TRUE) + adjustBruteLoss(15) + var/hitverb = "punched" + if(mob_size < MOB_SIZE_LARGE) + Paralyse(1) + spawn(0) + step_away(src, user, 15) + sleep(1) + step_away(src, user, 15) + hitverb = "slammed" + playsound(loc, "punch", 25, 1, -1) + visible_message("[user] has [hitverb] [src]!", "[user] has [hitverb] [src]!") + return TRUE + /mob/living/carbon/alien/humanoid/attack_hand(mob/living/carbon/human/M) if(..()) switch(M.a_intent) if(INTENT_HARM) var/damage = rand(1, 9) if(prob(90)) - if(HULK in M.mutations)//HULK SMASH - damage = 15 - spawn(0) - Paralyse(1) - step_away(src, M, 15) - sleep(3) - step_away(src, M, 15) playsound(loc, "punch", 25, 1, -1) visible_message("[M] has punched [src]!", \ "[M] has punched [src]!") @@ -43,3 +52,8 @@ else playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) visible_message("[M] has attempted to disarm [src]!") + +/mob/living/carbon/alien/humanoid/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect, end_pixel_y) + if(!no_effect && !visual_effect_icon) + visual_effect_icon = ATTACK_EFFECT_CLAW + ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm index f1bcfc0eeaf..44287493718 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -3,7 +3,7 @@ #define X_SUIT_LAYER 2 #define X_L_HAND_LAYER 3 #define X_R_HAND_LAYER 4 -#define TARGETED_LAYER 5 +#define X_TARGETED_LAYER 5 #define X_FIRE_LAYER 6 #define X_TOTAL_LAYERS 6 ///////////////////////////////// @@ -161,6 +161,6 @@ #undef X_SUIT_LAYER #undef X_L_HAND_LAYER #undef X_R_HAND_LAYER -#undef TARGETED_LAYER +#undef X_TARGETED_LAYER #undef X_FIRE_LAYER #undef X_TOTAL_LAYERS diff --git a/code/modules/mob/living/carbon/alien/larva/larva_defense.dm b/code/modules/mob/living/carbon/alien/larva/larva_defense.dm index fc7fa22510b..919eecee8d8 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva_defense.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva_defense.dm @@ -2,13 +2,6 @@ if(..()) var/damage = rand(1, 9) if(prob(90)) - if(HULK in M.mutations) - damage += 5 - spawn(0) - Paralyse(1) - step_away(src, M, 15) - sleep(3) - step_away(src, M, 15) playsound(loc, "punch", 25, 1, -1) add_attack_logs(M, src, "Melee attacked with fists") visible_message("[M] has kicked [src]!", \ @@ -22,3 +15,20 @@ playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) visible_message("[M] has attempted to kick [src]!", \ "[M] has attempted to kick [src]!") + + +/mob/living/carbon/alien/larva/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + ..(user, TRUE) + adjustBruteLoss(5 + rand(1, 9)) + spawn(0) + Paralyse(1) + step_away(src, user, 15) + sleep(3) + step_away(src, user, 15) + return TRUE + +/mob/living/carbon/alien/larva/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect, end_pixel_y) + if(!no_effect && !visual_effect_icon) + visual_effect_icon = ATTACK_EFFECT_BITE + ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 2abc612f758..8c02bac91d1 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -15,6 +15,7 @@ parent_organ = "head" slot = "brain" vital = 1 + hidden_pain = TRUE //the brain has no pain receptors, and brain damage is meant to be a stealthy damage type. var/mmi_icon = 'icons/obj/assemblies.dmi' var/mmi_icon_state = "mmi_full" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 8a6c501186e..c653a257883 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -201,7 +201,7 @@ swap_hand() /mob/living/carbon/proc/help_shake_act(mob/living/carbon/M) - add_attack_logs(M, src, "Shaked", admin_notify = FALSE) + add_attack_logs(M, src, "Shaked", ATKLOG_ALL) if(health >= config.health_threshold_crit) if(src == M && ishuman(src)) var/mob/living/carbon/human/H = src @@ -256,14 +256,9 @@ H.play_xylophone() else if(player_logged) - M.visible_message("[M] shakes [src], but they do not respond. Probably suffering from SSD.", \ - "You shake [src], but they are unresponsive. Probably suffering from SSD.") + M.visible_message("[M] shakes [src], but [p_they()] [p_do()] not respond. Probably suffering from SSD.", \ + "You shake [src], but [p_theyre()] unresponsive. Probably suffering from SSD.") if(lying) // /vg/: For hugs. This is how update_icon figgers it out, anyway. - N3X15 - var/t_him = "it" - if(gender == MALE) - t_him = "him" - else if(gender == FEMALE) - t_him = "her" if(ishuman(src)) var/mob/living/carbon/human/H = src if(H.w_uniform) @@ -277,8 +272,8 @@ playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) if(!player_logged) M.visible_message( \ - "[M] shakes [src] trying to wake [t_him] up!",\ - "You shake [src] trying to wake [t_him] up!",\ + "[M] shakes [src] trying to wake [p_them()] up!",\ + "You shake [src] trying to wake [p_them()] up!",\ ) // BEGIN HUGCODE - N3X else @@ -745,7 +740,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, if(restrained()) changeNext_move(CLICK_CD_BREAKOUT) last_special = world.time + CLICK_CD_BREAKOUT - visible_message("[src] attempts to unbuckle themself!", \ + visible_message("[src] attempts to unbuckle [p_them()]self!", \ "You attempt to unbuckle yourself... (This will take around one minute and you need to stay still.)") if(do_after(src, 600, 0, target = src)) if(!buckled) @@ -762,11 +757,11 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, Weaken(3, 1, 1) //We dont check for CANWEAKEN, I don't care how immune to weakening you are, if you're rolling on the ground, you're busy. update_canmove() spin(32,2) - visible_message("[src] rolls on the floor, trying to put themselves out!", \ + visible_message("[src] rolls on the floor, trying to put [p_them()]self out!", \ "You stop, drop, and roll!") sleep(30) if(fire_stacks <= 0) - visible_message("[src] has successfully extinguished themselves!", \ + visible_message("[src] has successfully extinguished [p_them()]self!", \ "You extinguish yourself.") ExtinguishMob() @@ -1020,7 +1015,11 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, return 1 /mob/living/carbon/proc/forceFedAttackLog(var/obj/item/reagent_containers/food/toEat, mob/user) +<<<<<<< HEAD add_attack_logs(user, src, "Fed [toEat]. Reagents: [toEat.reagentlist()]") +======= + add_attack_logs(user, src, "Fed [toEat]. Reagents: [toEat.reagentlist(toEat)]", ATKLOG_FEW) +>>>>>>> master if(!iscarbon(user)) LAssailant = null else diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 84b4608b233..37749c0dd76 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -139,9 +139,11 @@ /mob/living/carbon/human/proc/makeSkeleton() var/obj/item/organ/external/head/H = get_organ("head") - if(SKELETON in src.mutations) return + if(SKELETON in src.mutations) + return if(istype(H)) + H.disfigured = TRUE if(H.f_style) H.f_style = initial(H.f_style) if(H.h_style) @@ -159,16 +161,17 @@ mutations.Add(SKELETON) mutations.Add(NOCLONE) - status_flags |= DISFIGURED update_body(0) update_mutantrace() return /mob/living/carbon/human/proc/ChangeToHusk() var/obj/item/organ/external/head/H = bodyparts_by_name["head"] - if(HUSK in mutations) return + if(HUSK in mutations) + return if(istype(H)) + H.disfigured = TRUE //makes them unknown without fucking up other stuff like admintools if(H.f_style) H.f_style = "Shaved" //we only change the icon_state of the hair datum, so it doesn't mess up their UI/UE if(H.h_style) @@ -177,7 +180,6 @@ update_hair(0) mutations.Add(HUSK) - status_flags |= DISFIGURED //makes them unknown without fucking up other stuff like admintools update_body(0) update_mutantrace() return diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index e9ae44bf433..be46cc9fa7d 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -173,14 +173,14 @@ if("clack", "clacks") var/M = handle_emote_param(param) - message = "[src] clacks their mandibles[M ? " at [M]" : ""]." + message = "[src] clacks [p_their()] mandibles[M ? " at [M]" : ""]." playsound(loc, 'sound/effects/Kidanclack.ogg', 50, 0) //Credit to DrMinky (freesound.org) for the sound. m_type = 2 if("click", "clicks") var/M = handle_emote_param(param) - message = "[src] clicks their mandibles[M ? " at [M]" : ""]." + message = "[src] clicks [p_their()] mandibles[M ? " at [M]" : ""]." playsound(loc, 'sound/effects/Kidanclack2.ogg', 50, 0) //Credit to DrMinky (freesound.org) for the sound. m_type = 2 @@ -201,7 +201,7 @@ if("quill", "quills") var/M = handle_emote_param(param) - message = "[src] rustles their quills[M ? " at [M]" : ""]." + message = "[src] rustles [p_their()] quills[M ? " at [M]" : ""]." playsound(loc, 'sound/effects/voxrustle.ogg', 50, 0) //Credit to sound-ideas (freesfx.co.uk) for the sound. m_type = 2 @@ -222,12 +222,12 @@ if("wag", "wags") if(body_accessory) if(body_accessory.try_restrictions(src)) - message = "[src] starts wagging \his tail." + message = "[src] starts wagging [p_their()] tail." start_tail_wagging(1) else if(species.bodyflags & TAIL_WAGGING) if(!wear_suit || !(wear_suit.flags_inv & HIDETAIL) && !istype(wear_suit, /obj/item/clothing/suit/space)) - message = "[src] starts wagging \his tail." + message = "[src] starts wagging [p_their()] tail." start_tail_wagging(1) else return @@ -237,7 +237,7 @@ if("swag", "swags") if(species.bodyflags & TAIL_WAGGING || body_accessory) - message = "[src] stops wagging \his tail." + message = "[src] stops wagging [p_their()] tail." stop_tail_wagging(1) else return @@ -282,7 +282,7 @@ if("choke", "chokes") if(miming) - message = "[src] clutches \his throat desperately!" + message = "[src] clutches [p_their()] throat desperately!" m_type = 1 else if(!muzzled) @@ -294,7 +294,7 @@ if("burp", "burps") if(miming) - message = "[src] opens their mouth rather obnoxiously." + message = "[src] opens [p_their()] mouth rather obnoxiously." m_type = 1 else if(!muzzled) @@ -330,7 +330,7 @@ if("flap", "flaps") if(!restrained()) - message = "[src] flaps \his wings." + message = "[src] flaps [p_their()] wings." m_type = 2 if(miming) m_type = 1 @@ -382,7 +382,7 @@ if("aflap", "aflaps") if(!restrained()) - message = "[src] flaps \his wings ANGRILY!" + message = "[src] flaps [p_their()] wings ANGRILY!" m_type = 2 if(miming) m_type = 1 @@ -479,7 +479,7 @@ m_type = 2 if("deathgasp", "deathgasps") - message = "[src] [species.death_message]" + message = "[src] [replacetext(species.death_message, "their", p_their())]" m_type = 1 if("giggle", "giggles") @@ -527,7 +527,7 @@ message = "[src] cries." m_type = 2 else - message = "[src] makes a weak noise. \He frowns." + message = "[src] makes a weak noise. [p_they(TRUE)] frown[p_s()]." m_type = 2 if("sigh", "sighs") @@ -605,7 +605,7 @@ message = "[src] takes a drag from a cigarette and blows \"[M]\" out in smoke." m_type = 1 else - message = "[src] says, \"[M], please. They had a family.\" [name] takes a drag from a cigarette and blows their name out in smoke." + message = "[src] says, \"[M], please. They had a family.\" [name] takes a drag from a cigarette and blows [p_their()] name out in smoke." m_type = 2 if("point", "points") @@ -631,7 +631,7 @@ if("shake", "shakes") var/M = handle_emote_param(param, 1) //Check to see if the param is valid (mob with the param name is in view) but exclude ourselves. - message = "[src] shakes \his head[M ? " at [M]" : ""]." + message = "[src] shakes [p_their()] head[M ? " at [M]" : ""]." m_type = 1 if("shrug", "shrugs") @@ -742,7 +742,7 @@ if(M) message = "[src] hugs [M]." else - message = "[src] hugs \himself." + message = "[src] hugs [p_them()]self." if("handshake") m_type = 1 @@ -753,7 +753,7 @@ if(M.canmove && !M.r_hand && !M.restrained()) message = "[src] shakes hands with [M]." else - message = "[src] holds out \his hand to [M]." + message = "[src] holds out [p_their()] hand to [M]." if("dap", "daps") m_type = 1 @@ -763,7 +763,7 @@ if(M) message = "[src] gives daps to [M]." else - message = "[src] sadly can't find anybody to give daps to, and daps \himself. Shameful." + message = "[src] sadly can't find anybody to give daps to, and daps [p_them()]self. Shameful." if("slap", "slaps") m_type = 1 @@ -773,7 +773,7 @@ if(M) message = "[src] slaps [M] across the face. Ouch!" else - message = "[src] slaps \himself!" + message = "[src] slaps [p_them()]self!" adjustFireLoss(4) playsound(loc, 'sound/effects/snap.ogg', 50, 1) @@ -814,10 +814,10 @@ var/M = handle_emote_param(param) - message = "[src] snaps \his fingers[M ? " at [M]" : ""]." + message = "[src] snaps [p_their()] fingers[M ? " at [M]" : ""]." playsound(loc, 'sound/effects/fingersnap.ogg', 50, 1, -3) else - message = "[src] snaps \his fingers right off!" + message = "[src] snaps [p_their()] fingers right off!" playsound(loc, 'sound/effects/snap.ogg', 50, 1) // Needed for M_TOXIC_FART @@ -826,34 +826,34 @@ return // playsound(loc, 'sound/effects/fart.ogg', 50, 1, -3) //Admins still vote no to fun if(locate(/obj/item/storage/bible) in get_turf(src)) - to_chat(viewers(src), "[src] farts on the Bible!") - var/image/cross = image('icons/obj/storage.dmi',"bible") - var/adminbfmessage = "\blue [bicon(cross)] Bible Fart: [key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src)]) (CA) (SMITE):" + to_chat(viewers(src), "[src] farts on the Bible!") + var/image/cross = image('icons/obj/storage.dmi', "bible") + var/adminbfmessage = "[bicon(cross)] Bible Fart: [key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src)]) (CA) (SMITE):" for(var/client/X in admins) - if(check_rights(R_EVENT,0,X.mob)) + if(check_rights(R_EVENT, 0, X.mob)) to_chat(X, adminbfmessage) else if(TOXIC_FARTS in mutations) - message = "[src] unleashes a [pick("horrible","terrible","foul","disgusting","awful")] fart." + message = "[src] unleashes a [pick("horrible", "terrible", "foul", "disgusting", "awful")] fart." else if(SUPER_FART in mutations) - message = "[src] unleashes a [pick("loud","deafening")] fart." - newtonian_move(dir) + message = "[src] unleashes a [pick("loud", "deafening")] fart." else - message = "[src] [pick("passes wind","farts")]." + message = "[src] [pick("passes wind", "farts")]." m_type = 2 var/turf/location = get_turf(src) - var/aoe_range=2 // Default // Process toxic farts first. if(TOXIC_FARTS in mutations) - for(var/mob/M in range(location,aoe_range)) - if(M.internal != null && M.wear_mask && (M.wear_mask.flags & AIRTIGHT)) + for(var/mob/living/carbon/C in range(location, 2)) + if(C.internal != null && C.wear_mask && (C.wear_mask.flags & AIRTIGHT)) continue - // Now, we don't have this: - //new /obj/effects/fart_cloud(T,L) - if(M == src) + if(C == src) continue - M.reagents.add_reagent("jenkem", 1) + C.reagents.add_reagent("jenkem", 1) + + // Farting as a form of locomotion in space + if(SUPER_FART in mutations) + newtonian_move(dir) if("hem") message = "[src] hems." @@ -941,7 +941,7 @@ set desc = "Sets a description which will be shown when someone examines you." set category = "IC" - pose = sanitize(copytext(input(usr, "This is [src]. \He is...", "Pose", null) as text, 1, MAX_MESSAGE_LEN)) + pose = sanitize(copytext(input(usr, "This is [src]. [p_they(TRUE)] [p_are()]...", "Pose", null) as text, 1, MAX_MESSAGE_LEN)) /mob/living/carbon/human/verb/set_flavor() set name = "Set Flavour Text" diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index c15f30f94bd..ef352b5a8f8 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -23,41 +23,10 @@ if(wear_mask) skipface |= wear_mask.flags_inv & HIDEFACE - - // crappy hacks because you can't do \his[src] etc. I'm sorry this proc is so unreadable, blame the text macros :< - var/t_He = "It" //capitalised for use at the start of each line. - var/t_his = "its" - var/t_him = "it" - var/t_has = "has" - var/t_is = "is" - var/msg = "*---------*\nThis is " - if((skipjumpsuit && skipface)) //big suits/masks/helmets make it hard to tell their gender - t_He = "They" - t_his = "their" - t_him = "them" - t_has = "have" - t_is = "are" - else - if(icon) - msg += "[bicon(icon(icon, dir=SOUTH))] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated - switch(gender) - if(MALE) - t_He = "He" - t_his = "his" - t_him = "him" - if(FEMALE) - t_He = "She" - t_his = "her" - t_him = "her" - if(PLURAL) - t_He = "They" - t_his = "their" - t_him = "them" - t_has = "have" - t_is = "are" - + if(!(skipjumpsuit && skipface) && icon) //big suits/masks/helmets make it hard to tell their gender + msg += "[bicon(icon(icon, dir=SOUTH))] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated msg += "[name]" var/list/nospecies = list("Abductor", "Shadowling", "Neara", "Monkey", "Stok", "Farwa", "Wolpin") //species that won't show their race no matter what @@ -86,129 +55,129 @@ tie_msg += " with [english_accessory_list(U)]" if(w_uniform.blood_DNA) - msg += "[t_He] [t_is] wearing [bicon(w_uniform)] [w_uniform.gender==PLURAL?"some":"a"] [w_uniform.blood_color != "#030303" ? "blood-stained":"oil-stained"] [w_uniform.name][tie_msg]!\n" + msg += "[p_they(TRUE)] [p_are()] wearing [bicon(w_uniform)] [w_uniform.gender==PLURAL?"some":"a"] [w_uniform.blood_color != "#030303" ? "blood-stained":"oil-stained"] [w_uniform.name][tie_msg]!\n" else - msg += "[t_He] [t_is] wearing [bicon(w_uniform)] \a [w_uniform][tie_msg].\n" + msg += "[p_they(TRUE)] [p_are()] wearing [bicon(w_uniform)] \a [w_uniform][tie_msg].\n" //head if(head && !(head.flags & ABSTRACT)) if(head.blood_DNA) - msg += "[t_He] [t_is] wearing [bicon(head)] [head.gender==PLURAL?"some":"a"] [head.blood_color != "#030303" ? "blood-stained":"oil-stained"] [head.name] on [t_his] head!\n" + msg += "[p_they(TRUE)] [p_are()] wearing [bicon(head)] [head.gender==PLURAL?"some":"a"] [head.blood_color != "#030303" ? "blood-stained":"oil-stained"] [head.name] on [p_their()] head!\n" else - msg += "[t_He] [t_is] wearing [bicon(head)] \a [head] on [t_his] head.\n" + msg += "[p_they(TRUE)] [p_are()] wearing [bicon(head)] \a [head] on [p_their()] head.\n" //suit/armour if(wear_suit && !(wear_suit.flags & ABSTRACT)) if(wear_suit.blood_DNA) - msg += "[t_He] [t_is] wearing [bicon(wear_suit)] [wear_suit.gender==PLURAL?"some":"a"] [wear_suit.blood_color != "#030303" ? "blood-stained":"oil-stained"] [wear_suit.name]!\n" + msg += "[p_they(TRUE)] [p_are()] wearing [bicon(wear_suit)] [wear_suit.gender==PLURAL?"some":"a"] [wear_suit.blood_color != "#030303" ? "blood-stained":"oil-stained"] [wear_suit.name]!\n" else - msg += "[t_He] [t_is] wearing [bicon(wear_suit)] \a [wear_suit].\n" + msg += "[p_they(TRUE)] [p_are()] wearing [bicon(wear_suit)] \a [wear_suit].\n" //suit/armour storage if(s_store && !skipsuitstorage) if(s_store.blood_DNA) - msg += "[t_He] [t_is] carrying [bicon(s_store)] [s_store.gender==PLURAL?"some":"a"] [s_store.blood_color != "#030303" ? "blood-stained":"oil-stained"] [s_store.name] on [t_his] [wear_suit.name]!\n" + msg += "[p_they(TRUE)] [p_are()] carrying [bicon(s_store)] [s_store.gender==PLURAL?"some":"a"] [s_store.blood_color != "#030303" ? "blood-stained":"oil-stained"] [s_store.name] on [p_their()] [wear_suit.name]!\n" else - msg += "[t_He] [t_is] carrying [bicon(s_store)] \a [s_store] on [t_his] [wear_suit.name].\n" + msg += "[p_they(TRUE)] [p_are()] carrying [bicon(s_store)] \a [s_store] on [p_their()] [wear_suit.name].\n" //back if(back && !(back.flags & ABSTRACT)) if(back.blood_DNA) - msg += "[t_He] [t_has] [bicon(back)] [back.gender==PLURAL?"some":"a"] [back.blood_color != "#030303" ? "blood-stained":"oil-stained"] [back] on [t_his] back.\n" + msg += "[p_they(TRUE)] [p_have()] [bicon(back)] [back.gender==PLURAL?"some":"a"] [back.blood_color != "#030303" ? "blood-stained":"oil-stained"] [back] on [p_their()] back.\n" else - msg += "[t_He] [t_has] [bicon(back)] \a [back] on [t_his] back.\n" + msg += "[p_they(TRUE)] [p_have()] [bicon(back)] \a [back] on [p_their()] back.\n" //left hand if(l_hand && !(l_hand.flags & ABSTRACT)) if(l_hand.blood_DNA) - msg += "[t_He] [t_is] holding [bicon(l_hand)] [l_hand.gender==PLURAL?"some":"a"] [l_hand.blood_color != "#030303" ? "blood-stained":"oil-stained"] [l_hand.name] in [t_his] left hand!\n" + msg += "[p_they(TRUE)] [p_are()] holding [bicon(l_hand)] [l_hand.gender==PLURAL?"some":"a"] [l_hand.blood_color != "#030303" ? "blood-stained":"oil-stained"] [l_hand.name] in [p_their()] left hand!\n" else - msg += "[t_He] [t_is] holding [bicon(l_hand)] \a [l_hand] in [t_his] left hand.\n" + msg += "[p_they(TRUE)] [p_are()] holding [bicon(l_hand)] \a [l_hand] in [p_their()] left hand.\n" //right hand if(r_hand && !(r_hand.flags & ABSTRACT)) if(r_hand.blood_DNA) - msg += "[t_He] [t_is] holding [bicon(r_hand)] [r_hand.gender==PLURAL?"some":"a"] [r_hand.blood_color != "#030303" ? "blood-stained":"oil-stained"] [r_hand.name] in [t_his] right hand!\n" + msg += "[p_they(TRUE)] [p_are()] holding [bicon(r_hand)] [r_hand.gender==PLURAL?"some":"a"] [r_hand.blood_color != "#030303" ? "blood-stained":"oil-stained"] [r_hand.name] in [p_their()] right hand!\n" else - msg += "[t_He] [t_is] holding [bicon(r_hand)] \a [r_hand] in [t_his] right hand.\n" + msg += "[p_they(TRUE)] [p_are()] holding [bicon(r_hand)] \a [r_hand] in [p_their()] right hand.\n" //gloves if(gloves && !skipgloves && !(gloves.flags & ABSTRACT)) if(gloves.blood_DNA) - msg += "[t_He] [t_has] [bicon(gloves)] [gloves.gender==PLURAL?"some":"a"] [gloves.blood_color != "#030303" ? "blood-stained":"oil-stained"] [gloves.name] on [t_his] hands!\n" + msg += "[p_they(TRUE)] [p_have()] [bicon(gloves)] [gloves.gender==PLURAL?"some":"a"] [gloves.blood_color != "#030303" ? "blood-stained":"oil-stained"] [gloves.name] on [p_their()] hands!\n" else - msg += "[t_He] [t_has] [bicon(gloves)] \a [gloves] on [t_his] hands.\n" + msg += "[p_they(TRUE)] [p_have()] [bicon(gloves)] \a [gloves] on [p_their()] hands.\n" else if(blood_DNA) - msg += "[t_He] [t_has] [hand_blood_color != "#030303" ? "blood-stained":"oil-stained"] hands!\n" + msg += "[p_they(TRUE)] [p_have()] [hand_blood_color != "#030303" ? "blood-stained":"oil-stained"] hands!\n" //handcuffed? if(handcuffed) if(istype(handcuffed, /obj/item/restraints/handcuffs/cable/zipties)) - msg += "[t_He] [t_is] [bicon(handcuffed)] restrained with zipties!\n" + msg += "[p_they(TRUE)] [p_are()] [bicon(handcuffed)] restrained with zipties!\n" else if(istype(handcuffed, /obj/item/restraints/handcuffs/cable)) - msg += "[t_He] [t_is] [bicon(handcuffed)] restrained with cable!\n" + msg += "[p_they(TRUE)] [p_are()] [bicon(handcuffed)] restrained with cable!\n" else - msg += "[t_He] [t_is] [bicon(handcuffed)] handcuffed!\n" + msg += "[p_they(TRUE)] [p_are()] [bicon(handcuffed)] handcuffed!\n" //belt if(belt) if(belt.blood_DNA) - msg += "[t_He] [t_has] [bicon(belt)] [belt.gender==PLURAL?"some":"a"] [belt.blood_color != "#030303" ? "blood-stained":"oil-stained"] [belt.name] about [t_his] waist!\n" + msg += "[p_they(TRUE)] [p_have()] [bicon(belt)] [belt.gender==PLURAL?"some":"a"] [belt.blood_color != "#030303" ? "blood-stained":"oil-stained"] [belt.name] about [p_their()] waist!\n" else - msg += "[t_He] [t_has] [bicon(belt)] \a [belt] about [t_his] waist.\n" + msg += "[p_they(TRUE)] [p_have()] [bicon(belt)] \a [belt] about [p_their()] waist.\n" //shoes if(shoes && !skipshoes && !(shoes.flags & ABSTRACT)) if(shoes.blood_DNA) - msg += "[t_He] [t_is] wearing [bicon(shoes)] [shoes.gender==PLURAL?"some":"a"] [shoes.blood_color != "#030303" ? "blood-stained":"oil-stained"] [shoes.name] on [t_his] feet!\n" + msg += "[p_they(TRUE)] [p_are()] wearing [bicon(shoes)] [shoes.gender==PLURAL?"some":"a"] [shoes.blood_color != "#030303" ? "blood-stained":"oil-stained"] [shoes.name] on [p_their()] feet!\n" else - msg += "[t_He] [t_is] wearing [bicon(shoes)] \a [shoes] on [t_his] feet.\n" + msg += "[p_they(TRUE)] [p_are()] wearing [bicon(shoes)] \a [shoes] on [p_their()] feet.\n" else if(blood_DNA) - msg += "[t_He] [t_has] [feet_blood_color != "#030303" ? "blood-stained":"oil-stained"] feet!\n" + msg += "[p_they(TRUE)] [p_have()] [feet_blood_color != "#030303" ? "blood-stained":"oil-stained"] feet!\n" //mask if(wear_mask && !skipmask && !(wear_mask.flags & ABSTRACT)) if(wear_mask.blood_DNA) - msg += "[t_He] [t_has] [bicon(wear_mask)] [wear_mask.gender==PLURAL?"some":"a"] [wear_mask.blood_color != "#030303" ? "blood-stained":"oil-stained"] [wear_mask.name] on [t_his] face!\n" + msg += "[p_they(TRUE)] [p_have()] [bicon(wear_mask)] [wear_mask.gender==PLURAL?"some":"a"] [wear_mask.blood_color != "#030303" ? "blood-stained":"oil-stained"] [wear_mask.name] on [p_their()] face!\n" else - msg += "[t_He] [t_has] [bicon(wear_mask)] \a [wear_mask] on [t_his] face.\n" + msg += "[p_they(TRUE)] [p_have()] [bicon(wear_mask)] \a [wear_mask] on [p_their()] face.\n" //eyes if(glasses && !skipeyes && !(glasses.flags & ABSTRACT)) if(glasses.blood_DNA) - msg += "[t_He] [t_has] [bicon(glasses)] [glasses.gender==PLURAL?"some":"a"] [glasses.blood_color != "#030303" ? "blood-stained":"oil-stained"] [glasses] covering [t_his] eyes!\n" + msg += "[p_they(TRUE)] [p_have()] [bicon(glasses)] [glasses.gender==PLURAL?"some":"a"] [glasses.blood_color != "#030303" ? "blood-stained":"oil-stained"] [glasses] covering [p_their()] eyes!\n" else - msg += "[t_He] [t_has] [bicon(glasses)] \a [glasses] covering [t_his] eyes.\n" + msg += "[p_they(TRUE)] [p_have()] [bicon(glasses)] \a [glasses] covering [p_their()] eyes.\n" //left ear if(l_ear && !skipears) - msg += "[t_He] [t_has] [bicon(l_ear)] \a [l_ear] on [t_his] left ear.\n" + msg += "[p_they(TRUE)] [p_have()] [bicon(l_ear)] \a [l_ear] on [p_their()] left ear.\n" //right ear if(r_ear && !skipears) - msg += "[t_He] [t_has] [bicon(r_ear)] \a [r_ear] on [t_his] right ear.\n" + msg += "[p_they(TRUE)] [p_have()] [bicon(r_ear)] \a [r_ear] on [p_their()] right ear.\n" //ID if(wear_id) - msg += "[t_He] [t_is] wearing [bicon(wear_id)] \a [wear_id].\n" + msg += "[p_they(TRUE)] [p_are()] wearing [bicon(wear_id)] \a [wear_id].\n" //Jitters switch(jitteriness) if(300 to INFINITY) - msg += "[t_He] [t_is] convulsing violently!\n" + msg += "[p_they(TRUE)] [p_are()] convulsing violently!\n" if(200 to 300) - msg += "[t_He] [t_is] extremely jittery.\n" + msg += "[p_they(TRUE)] [p_are()] extremely jittery.\n" if(100 to 200) - msg += "[t_He] [t_is] twitching ever so slightly.\n" + msg += "[p_they(TRUE)] [p_are()] twitching ever so slightly.\n" var/appears_dead = FALSE if(stat == DEAD || (status_flags & FAKEDEATH)) appears_dead = TRUE if(suiciding) - msg += "[t_He] appears to have committed suicide... there is no hope of recovery.\n" - msg += "[t_He] [t_is] limp and unresponsive; there are no signs of life" + msg += "[p_they(TRUE)] appear[p_s()] to have committed suicide... there is no hope of recovery.\n" + msg += "[p_they(TRUE)] [p_are()] limp and unresponsive; there are no signs of life" if(get_int_organ(/obj/item/organ/internal/brain)) if(!key) var/foundghost = FALSE @@ -220,11 +189,11 @@ foundghost = FALSE break if(!foundghost) - msg += " and [t_his] soul has departed" + msg += " and [p_their()] soul has departed" msg += "...\n" if(!get_int_organ(/obj/item/organ/internal/brain)) - msg += "It appears that [t_his] brain is missing...\n" + msg += "It appears that [p_their()] brain is missing...\n" msg += "" @@ -238,17 +207,17 @@ var/obj/item/organ/external/E = bodyparts_by_name[organ_tag] if(!E) - wound_flavor_text["[organ_tag]"] = "[t_He] [t_is] missing [t_his] [organ_descriptor].\n" + wound_flavor_text["[organ_tag]"] = "[p_they(TRUE)] [p_are()] missing [p_their()] [organ_descriptor].\n" else if(!isSynthetic()) if(E.status & ORGAN_ROBOT) - wound_flavor_text["[E.limb_name]"] = "[t_He] [t_has] a robotic [E.name]!\n" + wound_flavor_text["[E.limb_name]"] = "[p_they(TRUE)] [p_have()] a robotic [E.name]!\n" else if(E.status & ORGAN_SPLINTED) - wound_flavor_text["[E.limb_name]"] = "[t_He] [t_has] a splint on [t_his] [E.name]!\n" + wound_flavor_text["[E.limb_name]"] = "[p_they(TRUE)] [p_have()] a splint on [p_their()] [E.name]!\n" for(var/obj/item/I in E.embedded_objects) - msg += "[t_He] [t_has] \a [bicon(I)] [I] embedded in [t_his] [E.name]!\n" + msg += "[p_they(TRUE)] [p_have()] \a [bicon(I)] [I] embedded in [p_their()] [E.name]!\n" //Handles the text strings being added to the actual description. //If they have something that covers the limb, and it is not missing, put flavortext. If it is covered but bleeding, add other flavortext. @@ -280,101 +249,101 @@ if(temp) var/brute_message = !isSynthetic() ? "bruising" : "denting" if(temp < 30) - msg += "[t_He] [t_has] minor [brute_message ].\n" + msg += "[p_they(TRUE)] [p_have()] minor [brute_message ].\n" else - msg += "[t_He] [t_has] severe [brute_message ]!\n" + msg += "[p_they(TRUE)] [p_have()] severe [brute_message ]!\n" temp = getFireLoss() if(temp) if(temp < 30) - msg += "[t_He] [t_has] minor burns.\n" + msg += "[p_they(TRUE)] [p_have()] minor burns.\n" else - msg += "[t_He] [t_has] severe burns!\n" + msg += "[p_they(TRUE)] [p_have()] severe burns!\n" temp = getCloneLoss() if(temp) if(temp < 30) - msg += "[t_He] [t_has] minor cellular damage.\n" + msg += "[p_they(TRUE)] [p_have()] minor cellular damage.\n" else - msg += "[t_He] [t_has] severe cellular damage.\n" + msg += "[p_they(TRUE)] [p_have()] severe cellular damage.\n" if(fire_stacks > 0) - msg += "[t_He] [t_is] covered in something flammable.\n" + msg += "[p_they(TRUE)] [p_are()] covered in something flammable.\n" if(fire_stacks < 0) - msg += "[t_He] looks a little soaked.\n" + msg += "[p_they(TRUE)] looks a little soaked.\n" switch(wetlevel) if(1) - msg += "[t_He] looks a bit damp.\n" + msg += "[p_they(TRUE)] looks a bit damp.\n" if(2) - msg += "[t_He] looks a little bit wet.\n" + msg += "[p_they(TRUE)] looks a little bit wet.\n" if(3) - msg += "[t_He] looks wet.\n" + msg += "[p_they(TRUE)] looks wet.\n" if(4) - msg += "[t_He] looks very wet.\n" + msg += "[p_they(TRUE)] looks very wet.\n" if(5) - msg += "[t_He] looks absolutely soaked.\n" + msg += "[p_they(TRUE)] looks absolutely soaked.\n" if(nutrition < NUTRITION_LEVEL_STARVING - 50) - msg += "[t_He] [t_is] severely malnourished.\n" + msg += "[p_they(TRUE)] [p_are()] severely malnourished.\n" else if(nutrition >= NUTRITION_LEVEL_FAT) if(user.nutrition < NUTRITION_LEVEL_STARVING - 50) - msg += "[t_He] [t_is] plump and delicious looking - Like a fat little piggy. A tasty piggy.\n" + msg += "[p_they(TRUE)] [p_are()] plump and delicious looking - Like a fat little piggy. A tasty piggy.\n" else - msg += "[t_He] [t_is] quite chubby.\n" + msg += "[p_they(TRUE)] [p_are()] quite chubby.\n" if(blood_volume < BLOOD_VOLUME_SAFE) - msg += "[t_He] [t_has] pale skin.\n" + msg += "[p_they(TRUE)] [p_have()] pale skin.\n" if(bleedsuppress) - msg += "[t_He] [t_is] bandaged with something.\n" + msg += "[p_they(TRUE)] [p_are()] bandaged with something.\n" else if(bleed_rate) if(reagents.has_reagent("heparin")) - msg += "[t_He] [t_is] bleeding uncontrollably!\n" + msg += "[p_they(TRUE)] [p_are()] bleeding uncontrollably!\n" else - msg += "[t_He] [t_is] bleeding!\n" + msg += "[p_they(TRUE)] [p_are()] bleeding!\n" if(reagents.has_reagent("teslium")) - msg += "[t_He] is emitting a gentle blue glow!\n" + msg += "[p_they(TRUE)] [p_are()] emitting a gentle blue glow!\n" msg += "" if(!appears_dead) if(stat == UNCONSCIOUS) - msg += "[t_He] [t_is]n't responding to anything around [t_him] and seems to be asleep.\n" + msg += "[p_they(TRUE)] [p_are()]n't responding to anything around [p_them()] and seems to be asleep.\n" else if(getBrainLoss() >= 60) - msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n" + msg += "[p_they(TRUE)] [p_have()] a stupid expression on [p_their()] face.\n" if(get_int_organ(/obj/item/organ/internal/brain)) if(istype(src, /mob/living/carbon/human/interactive)) var/mob/living/carbon/human/interactive/auto = src if(auto.showexaminetext) - msg += "[t_He] [t_is] appears to be some sort of sick automaton, [t_his] eyes are glazed over and [t_his] mouth is slightly agape.\n" + msg += "[p_they(TRUE)] [p_are()] appears to be some sort of sick automaton, [p_their()] eyes are glazed over and [p_their()] mouth is slightly agape.\n" if(auto.debugexamine) var/dodebug = auto.doing2string(auto.doing) var/interestdebug = auto.interest2string(auto.interest) - msg += "[t_He] [t_is] appears to be [interestdebug] and [dodebug].\n" + msg += "[p_they(TRUE)] [p_are()] appears to be [interestdebug] and [dodebug].\n" else if(species.show_ssd) if(!key) - msg += "[t_He] [t_is] totally catatonic. The stresses of life in deep-space must have been too much for [t_him]. Any recovery is unlikely.\n" + msg += "[p_they(TRUE)] [p_are()] totally catatonic. The stresses of life in deep-space must have been too much for [p_them()]. Any recovery is unlikely.\n" else if(!client) - msg += "[t_He] [t_has] suddenly fallen asleep, suffering from Space Sleep Disorder. [t_He] may wake up soon.\n" + msg += "[p_they(TRUE)] [p_have()] suddenly fallen asleep, suffering from Space Sleep Disorder. [p_they(TRUE)] may wake up soon.\n" if(digitalcamo) - msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly inhuman manner.\n" + msg += "[p_they(TRUE)] [p_are()] moving [p_their()] body in an unnatural and blatantly inhuman manner.\n" if(!(skipface || ( wear_mask && ( wear_mask.flags_inv & HIDEFACE || wear_mask.flags_cover & MASKCOVERSMOUTH) ) ) && is_thrall(src) && in_range(user,src)) msg += "Their features seem unnaturally tight and drawn.\n" if(decaylevel == 1) - msg += "[t_He] [t_is] starting to smell.\n" + msg += "[p_they(TRUE)] [p_are()] starting to smell.\n" if(decaylevel == 2) - msg += "[t_He] [t_is] bloated and smells disgusting.\n" + msg += "[p_they(TRUE)] [p_are()] bloated and smells disgusting.\n" if(decaylevel == 3) - msg += "[t_He] [t_is] rotting and blackened, the skin sloughing off. The smell is indescribably foul.\n" + msg += "[p_they(TRUE)] [p_are()] rotting and blackened, the skin sloughing off. The smell is indescribably foul.\n" if(decaylevel == 4) - msg += "[t_He] [t_is] mostly dessicated now, with only bones remaining of what used to be a person.\n" + msg += "[p_they(TRUE)] [p_are()] mostly dessicated now, with only bones remaining of what used to be a person.\n" if(hasHUD(user,"security")) var/perpname = "wot" @@ -429,7 +398,7 @@ if(pose) if( findtext(pose,".",lentext(pose)) == 0 && findtext(pose,"!",lentext(pose)) == 0 && findtext(pose,"?",lentext(pose)) == 0 ) pose = addtext(pose,".") //Makes sure all emotes end with a period. - msg += "\n[t_He] is [pose]" + msg += "\n[p_they(TRUE)] [p_are()] [pose]" 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 e0f90aacdd0..cca71c1e8d6 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -306,7 +306,7 @@ if(!prob(martial_art.deflection_chance)) return ..() if(!src.lying && !(HULK in mutations)) //But only if they're not lying down, and hulks can't do it - visible_message("[src] deflects the projectile; they can't be hit with ranged weapons!", "You deflect the projectile!") + visible_message("[src] deflects the projectile; [p_they()] can't be hit with ranged weapons!", "You deflect the projectile!") return 0 ..() @@ -513,7 +513,7 @@ //Returns "Unknown" if facially disfigured and real_name if not. Useful for setting name when polyacided or when updating a human's name variable /mob/living/carbon/human/proc/get_face_name() var/obj/item/organ/external/head = get_organ("head") - if( !head || head.disfigured || !real_name || (HUSK in mutations) ) //disfigured. use id-name if possible + if(!head || head.disfigured || cloneloss > 50 || !real_name || (HUSK in mutations)) //disfigured. use id-name if possible return "Unknown" return real_name @@ -608,7 +608,7 @@ 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 - usr.visible_message("[usr] attempts to remove [I] from their [L.name].","You attempt to remove [I] from your [L.name]... (It will take [time_taken/10] seconds.)") + usr.visible_message("[usr] attempts to remove [I] from [usr.p_their()] [L.name].","You attempt to remove [I] from your [L.name]... (It will take [time_taken/10] seconds.)") if(do_after(usr, time_taken, needhand = 1, target = src)) if(!I || !L || I.loc != src || !(I in L.embedded_objects)) return @@ -617,7 +617,7 @@ I.forceMove(get_turf(src)) usr.put_in_hands(I) usr.emote("scream") - usr.visible_message("[usr] successfully rips [I] out of their [L.name]!","You successfully remove [I] from your [L.name].") + usr.visible_message("[usr] successfully rips [I] out of [usr.p_their()] [L.name]!","You successfully remove [I] from your [L.name].") if(!has_embedded_objects()) clear_alert("embeddedobject") return @@ -651,12 +651,12 @@ unEquip(pocket_item) if(thief_mode) usr.put_in_hands(pocket_item) - add_attack_logs(usr, src, "Stripped of [pocket_item]", isLivingSSD(src)) + add_attack_logs(usr, src, "Stripped of [pocket_item]", isLivingSSD(src) ? null : ATKLOG_ALL) else if(place_item) usr.unEquip(place_item) equip_to_slot_if_possible(place_item, pocket_id, 0, 1) - add_attack_logs(usr, src, "Equipped with [pocket_item]", isLivingSSD(src)) + add_attack_logs(usr, src, "Equipped with [pocket_item]", isLivingSSD(src) ? null : ATKLOG_ALL) // Update strip window if(usr.machine == src && in_range(src, usr)) @@ -665,7 +665,7 @@ // Display a warning if the user mocks up if they don't have pickpocket gloves. if(!thief_mode) to_chat(src, "You feel your [pocket_side] pocket being fumbled with!") - add_attack_logs(usr, src, "Attempted strip of [pocket_item]", isLivingSSD(src)) + add_attack_logs(usr, src, "Attempted strip of [pocket_item]", isLivingSSD(src) ? null : ATKLOG_ALL) if(href_list["set_sensor"]) if(istype(w_uniform, /obj/item/clothing/under)) @@ -680,7 +680,7 @@ "You have dislodged everything from [src]'s headpocket!") var/obj/item/organ/internal/headpocket/C = get_int_organ(/obj/item/organ/internal/headpocket) C.empty_contents() - add_attack_logs(usr, src, "Stripped of headpocket items", isLivingSSD(src)) + add_attack_logs(usr, src, "Stripped of headpocket items", isLivingSSD(src) ? null : ATKLOG_ALL) if(href_list["strip_accessory"]) if(istype(w_uniform, /obj/item/clothing/under)) @@ -1043,7 +1043,7 @@ /mob/living/carbon/human/proc/play_xylophone() if(!src.xylophone) - visible_message("[src] begins playing his ribcage like a xylophone. It's quite spooky.","You begin to play a spooky refrain on your ribcage.","You hear a spooky xylophone melody.") + visible_message("[src] begins playing [p_their()] ribcage like a xylophone. It's quite spooky.","You begin to play a spooky refrain on your ribcage.","You hear a spooky xylophone melody.") var/song = pick('sound/effects/xylophone1.ogg','sound/effects/xylophone2.ogg','sound/effects/xylophone3.ogg') playsound(loc, song, 50, 1, -1) xylophone = 1 @@ -1064,7 +1064,7 @@ var/fail_msg if(!affecting) . = 0 - fail_msg = "They are missing that limb." + fail_msg = "[p_they(TRUE)] [p_are()] missing that limb." else if(affecting.status & ORGAN_ROBOT) . = 0 fail_msg = "That limb is robotic." @@ -1078,7 +1078,7 @@ . = 0 if(!. && error_msg && user) if(!fail_msg) - fail_msg = "There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"] to inject into." + fail_msg = "There is no exposed flesh or thin material [target_zone == "head" ? "on [p_their()] head" : "on [p_their()] body"] to inject into." to_chat(user, "[fail_msg]") /mob/living/carbon/human/proc/check_obscured_slots() @@ -1114,8 +1114,10 @@ return 1 /mob/living/carbon/human/proc/get_visible_gender() - if(wear_suit && wear_suit.flags_inv & HIDEJUMPSUIT && ((head && head.flags_inv & HIDEMASK) || wear_mask)) - return NEUTER + var/list/obscured = check_obscured_slots() + var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) + if((slot_w_uniform in obscured) && skipface) + return PLURAL return gender /mob/living/carbon/human/proc/increase_germ_level(n) @@ -1201,7 +1203,7 @@ return 0 if(!L.is_bruised()) - src.custom_pain("You feel a stabbing pain in your chest!", 1) + custom_pain("You feel a stabbing pain in your chest!") L.damage = L.min_bruised_damage //returns 1 if made bloody, returns 0 otherwise @@ -1252,10 +1254,10 @@ if(usr == src) self = 1 if(!self) - usr.visible_message("[usr] kneels down, puts \his hand on [src]'s wrist and begins counting their pulse.",\ + usr.visible_message("[usr] kneels down, puts [usr.p_their()] hand on [src]'s wrist and begins counting [p_their()] pulse.",\ "You begin counting [src]'s pulse") else - usr.visible_message("[usr] begins counting their pulse.",\ + usr.visible_message("[usr] begins counting [p_their()] pulse.",\ "You begin counting your pulse.") if(src.pulse) @@ -1746,7 +1748,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X to_chat(src, "Remove your mask first!") return 0 if((H.head && (H.head.flags_cover & HEADCOVERSMOUTH)) || (H.wear_mask && (H.wear_mask.flags_cover & MASKCOVERSMOUTH) && !H.wear_mask.mask_adjusted)) - to_chat(src, "Remove their mask first!") + to_chat(src, "Remove [H.p_their()] mask first!") return 0 visible_message("[src] is trying to perform CPR on [H.name]!", \ "You try to perform CPR on [H.name]!") @@ -1760,7 +1762,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X to_chat(H, "You feel a breath of fresh air enter your lungs. It feels good.") to_chat(src, "Repeat at least every 7 seconds.") - add_attack_logs(src, H, "CPRed", FALSE) + add_attack_logs(src, H, "CPRed", ATKLOG_ALL) return 1 else to_chat(src, "You need to stay still while performing CPR!") diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index c216badda93..5ed14b3a18e 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -372,7 +372,6 @@ This function restores all organs. dmgIcon.pixel_y = (!lying) ? rand(-11,9) : rand(-10,1) flick_overlay(dmgIcon, attack_bubble_recipients, 9) - receiving_damage() if(BURN) damageoverlaytemp = 20 diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index c45154e4931..5b78b450357 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -348,6 +348,18 @@ emp_act if(penetrated_dam) SS.create_breaches(damtype, penetrated_dam) +/mob/living/carbon/human/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + var/hulk_verb = pick("smash", "pummel") + if(check_shields(user, 15, "the [hulk_verb]ing")) + return + ..(user, TRUE) + playsound(loc, user.species.unarmed.attack_sound, 25, 1, -1) + var/message = "[user] has [hulk_verb]ed [src]!" + visible_message("[message]", "[message]") + adjustBruteLoss(15) + return TRUE + /mob/living/carbon/human/attack_hand(mob/user) if(..()) //to allow surgery to return properly. return diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index 428fafeb71e..9a78eafadd8 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -20,7 +20,7 @@ //Moving around with fractured ribs won't do you any good if(E.is_broken() && E.internal_organs && E.internal_organs.len && prob(15)) var/obj/item/organ/internal/I = pick(E.internal_organs) - custom_pain("You feel broken bones moving in your [E.name]!", 1) + custom_pain("You feel broken bones moving in your [E.name]!") I.receive_damage(rand(3,5)) //handle_stance() @@ -90,7 +90,7 @@ continue var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ") - custom_emote(1, "[(NO_PAIN in species.species_traits) ? "" : emote_scream ]drops what they were holding in their [E.name]!") + custom_emote(1, "[(NO_PAIN in species.species_traits) ? "" : emote_scream ]drops what [p_they()] [p_were()] holding in [p_their()] [E.name]!") else if(E.is_malfunctioning()) @@ -105,7 +105,7 @@ if(!unEquip(r_hand)) continue - custom_emote(1, "drops what they were holding, their [E.name] malfunctioning!") + custom_emote(1, "drops what [p_they()] [p_were()] holding, [p_their()] [E.name] malfunctioning!") var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(5, 0, src) diff --git a/code/modules/mob/living/carbon/human/interactive/functions.dm b/code/modules/mob/living/carbon/human/interactive/functions.dm index eae754b5283..8e8c2c80013 100644 --- a/code/modules/mob/living/carbon/human/interactive/functions.dm +++ b/code/modules/mob/living/carbon/human/interactive/functions.dm @@ -87,11 +87,11 @@ if(inactivity_period <= 0) inactivity_period = 9999 // technically infinite if(do_after(src, 60, target = traitorTarget)) - custom_emote(1, "A fire bursts from [src]'s eyes, igniting white hot and consuming their body in a flaming explosion!") + custom_emote(1, "A fire bursts from [src]'s eyes, igniting white hot and consuming [p_their()] body in a flaming explosion!") explosion(src, 6, 6, 6) else inactivity_period = 0 - custom_emote(1, "[src]'s chest closes, hiding their insides.") + custom_emote(1, "[src]'s chest closes, hiding [p_their()] insides.") if(SNPC_PSYCHO) var/choice = pick(typesof(/obj/item/grenade/chem_grenade) - /obj/item/grenade/chem_grenade) @@ -469,7 +469,7 @@ if(!Adjacent(SF)) tryWalk(get_turf(SF)) else - custom_emote(2, "[pick("gibbers","drools","slobbers","claps wildly","spits")], grabbing various foodstuffs from [SF] and sticking them in it's mouth!") + custom_emote(2, "[pick("gibbers","drools","slobbers","claps wildly","spits")], grabbing various foodstuffs from [SF] and sticking them in its mouth!") for(var/obj/item/A in SF.contents) if(prob(smartness/2)) var/count = SF.item_quants[A.name] @@ -631,7 +631,7 @@ TARGET = newSnack newSnack.reagents.remove_any((newSnack.reagents.total_volume/2)-1) newSnack.name = "Synthetic [newSnack.name]" - custom_emote(2, "[pick("gibbers","drools","slobbers","claps wildly","spits")] as they vomit [newSnack] from their mouth!") + custom_emote(2, "[pick("gibbers","drools","slobbers","claps wildly","spits")] as [p_they()] vomit[p_s()] [newSnack] from [p_their()] mouth!") catch(var/exception/e) log_runtime(e, src, "Caught in SNPC cooking module") doing &= ~SNPC_SPECIAL diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 00de7814170..22e2e0ffe25 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -150,7 +150,7 @@ AdjustSilence(2) if(getBrainLoss() >= 120 && stat != 2) //they died from stupidity--literally. -Fox - visible_message("[src] goes limp, their facial expression utterly blank.") + visible_message("[src] goes limp, [p_their()] facial expression utterly blank.") death() /mob/living/carbon/human/handle_mutations_and_radiation() @@ -832,7 +832,8 @@ /mob/living/carbon/human/handle_vision() if(machine) - if(!machine.check_eye(src)) reset_perspective(null) + if(!machine.check_eye(src)) + reset_perspective(null) else var/isRemoteObserve = 0 if((REMOTE_VIEW in mutations) && remoteview_target) diff --git a/code/modules/mob/living/carbon/human/shock.dm b/code/modules/mob/living/carbon/human/shock.dm index 05042a226d6..d8dc9356de7 100644 --- a/code/modules/mob/living/carbon/human/shock.dm +++ b/code/modules/mob/living/carbon/human/shock.dm @@ -43,7 +43,7 @@ if(shock_stage >= 30) if(shock_stage == 30) - custom_emote(1,"is having trouble keeping their eyes open.") + custom_emote(1,"is having trouble keeping [p_their()] eyes open.") EyeBlurry(2) Stuttering(5) diff --git a/code/modules/mob/living/carbon/human/species/abductor.dm b/code/modules/mob/living/carbon/human/species/abductor.dm index 3e1bb968c81..8aeb6f88a3d 100644 --- a/code/modules/mob/living/carbon/human/species/abductor.dm +++ b/code/modules/mob/living/carbon/human/species/abductor.dm @@ -6,7 +6,6 @@ path = /mob/living/carbon/human/abductor language = "Abductor Mindlink" default_language = "Abductor Mindlink" - unarmed_type = /datum/unarmed_attack/punch eyes = "blank_eyes" has_organ = list( "heart" = /obj/item/organ/internal/heart, diff --git a/code/modules/mob/living/carbon/human/species/apollo.dm b/code/modules/mob/living/carbon/human/species/apollo.dm index 6c37da34395..5a3e1d4cde9 100644 --- a/code/modules/mob/living/carbon/human/species/apollo.dm +++ b/code/modules/mob/living/carbon/human/species/apollo.dm @@ -5,7 +5,6 @@ deform = 'icons/mob/human_races/r_wryn.dmi' language = "Wryn Hivemind" tail = "wryntail" - unarmed_type = /datum/unarmed_attack/punch/weak punchdamagelow = 0 punchdamagehigh = 1 //primitive = /mob/living/carbon/monkey/wryn @@ -82,7 +81,6 @@ name = "Nucleation" name_plural = "Nucleations" icobase = 'icons/mob/human_races/r_nucleation.dmi' - unarmed_type = /datum/unarmed_attack/punch blurb = "A sub-race of unfortunates who have been exposed to too much supermatter radiation. As a result, \ supermatter crystal clusters have begun to grow across their bodies. Research to find a cure for this ailment \ has been slow, and so this is a common fate for veteran engineers. The supermatter crystals produce oxygen, \ diff --git a/code/modules/mob/living/carbon/human/species/golem.dm b/code/modules/mob/living/carbon/human/species/golem.dm index c289ba3a19e..74f3e97d879 100644 --- a/code/modules/mob/living/carbon/human/species/golem.dm +++ b/code/modules/mob/living/carbon/human/species/golem.dm @@ -13,7 +13,6 @@ dietflags = DIET_OMNI //golems can eat anything because they are magic or something reagent_tag = PROCESS_ORG - unarmed_type = /datum/unarmed_attack/punch punchdamagelow = 5 punchdamagehigh = 14 punchstunthreshold = 11 //about 40% chance to stun diff --git a/code/modules/mob/living/carbon/human/species/monkey.dm b/code/modules/mob/living/carbon/human/species/monkey.dm index 07d3215126e..c5003b21330 100644 --- a/code/modules/mob/living/carbon/human/species/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/monkey.dm @@ -28,8 +28,7 @@ reagent_tag = PROCESS_ORG //Has standard darksight of 2. - //unarmed_types = list(/datum/unarmed_attack/bite, /datum/unarmed_attack/claws) - //inherent_verbs = list(/mob/living/proc/ventcrawl) + unarmed_type = /datum/unarmed_attack/bite total_health = 75 brute_mod = 1.5 diff --git a/code/modules/mob/living/carbon/human/species/plasmaman.dm b/code/modules/mob/living/carbon/human/species/plasmaman.dm index 620d49254f3..692a23c470a 100644 --- a/code/modules/mob/living/carbon/human/species/plasmaman.dm +++ b/code/modules/mob/living/carbon/human/species/plasmaman.dm @@ -4,7 +4,6 @@ icobase = 'icons/mob/human_races/r_plasmaman_sb.dmi' deform = 'icons/mob/human_races/r_plasmaman_pb.dmi' // TODO: Need deform. //language = "Clatter" - unarmed_type = /datum/unarmed_attack/punch species_traits = list(IS_WHITELISTED, NO_BLOOD, NOTRANSSTING) dietflags = DIET_OMNI diff --git a/code/modules/mob/living/carbon/human/species/skeleton.dm b/code/modules/mob/living/carbon/human/species/skeleton.dm index d207dc20703..9da4d1222f6 100644 --- a/code/modules/mob/living/carbon/human/species/skeleton.dm +++ b/code/modules/mob/living/carbon/human/species/skeleton.dm @@ -8,7 +8,6 @@ deform = 'icons/mob/human_races/r_skeleton.dmi' path = /mob/living/carbon/human/skeleton default_language = "Galactic Common" - unarmed_type = /datum/unarmed_attack/punch blood_color = "#FFFFFF" flesh_color = "#E6E6C6" diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 50f969cae45..139f2f7c9bb 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -21,7 +21,7 @@ var/primitive_form // Lesser form, if any (ie. monkey for humans) var/greater_form // Greater form, if any, ie. human for monkeys. var/tail // Name of tail image in species effects icon file. - var/unarmed //For empty hand harm-intent attack + var/datum/unarmed_attack/unarmed //For empty hand harm-intent attack var/unarmed_type = /datum/unarmed_attack var/slowdown = 0 // Passive movement speed malus (or boost, if negative) var/silent_steps = 0 // Stops step noises @@ -356,8 +356,8 @@ else var/datum/unarmed_attack/attack = user.species.unarmed - user.do_attack_animation(target) - add_attack_logs(user, target, "Melee attacked with fists", admin_notify = target.ckey ? TRUE : FALSE) + user.do_attack_animation(target, attack.animation_type) + add_attack_logs(user, target, "Melee attacked with fists", target.ckey ? null : ATKLOG_ALL) if(!iscarbon(user)) target.LAssailant = null @@ -375,9 +375,6 @@ var/obj/item/organ/external/affecting = target.get_organ(ran_zone(user.zone_sel.selecting)) var/armor_block = target.run_armor_check(affecting, "melee") - if(HULK in user.mutations) - target.adjustBruteLoss(15) - playsound(target.loc, attack.attack_sound, 25, 1, -1) target.visible_message("[user] [pick(attack.attack_verb)]ed [target]!") @@ -395,8 +392,8 @@ if(attacker_style && attacker_style.disarm_act(user, target)) return 1 else - add_attack_logs(user, target, "Disarmed", admin_notify = FALSE) - user.do_attack_animation(target) + add_attack_logs(user, target, "Disarmed", ATKLOG_ALL) + user.do_attack_animation(target, ATTACK_EFFECT_DISARM) if(target.w_uniform) target.w_uniform.add_fingerprint(user) var/obj/item/organ/external/affecting = target.get_organ(ran_zone(user.zone_sel.selecting)) @@ -405,7 +402,7 @@ target.apply_effect(2, WEAKEN, target.run_armor_check(affecting, "melee")) playsound(target.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) target.visible_message("[user] has pushed [target]!") - add_attack_logs(user, target, "Pushed over", admin_notify = FALSE) + add_attack_logs(user, target, "Pushed over", ATKLOG_ALL) if(!iscarbon(user)) target.LAssailant = null else @@ -500,17 +497,12 @@ //Species unarmed attacks /datum/unarmed_attack - var/attack_verb = list("attack") // Empty hand hurt intent verb. + var/attack_verb = list("punch") // Empty hand hurt intent verb. var/damage = 0 // How much flat bonus damage an attack will do. This is a *bonus* guaranteed damage amount on top of the random damage attacks do. var/attack_sound = "punch" var/miss_sound = 'sound/weapons/punchmiss.ogg' - var/sharp = 0 - -/datum/unarmed_attack/punch - attack_verb = list("punch") - -/datum/unarmed_attack/punch/weak - attack_verb = list("flail") + var/sharp = FALSE + var/animation_type = ATTACK_EFFECT_PUNCH /datum/unarmed_attack/diona attack_verb = list("lash", "bludgeon") @@ -519,7 +511,14 @@ attack_verb = list("scratch", "claw") attack_sound = 'sound/weapons/slice.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' - sharp = 1 + sharp = TRUE + animation_type = ATTACK_EFFECT_CLAW + +/datum/unarmed_attack/bite + attack_verb = list("chomp") + attack_sound = 'sound/weapons/bite.ogg' + sharp = TRUE + animation_type = ATTACK_EFFECT_BITE /datum/unarmed_attack/claws/armalis attack_verb = list("slash", "claw") diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm index 05e989afa50..6b692601226 100644 --- a/code/modules/mob/living/carbon/human/species/station.dm +++ b/code/modules/mob/living/carbon/human/species/station.dm @@ -10,7 +10,6 @@ clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS bodyflags = HAS_SKIN_TONE | HAS_BODY_MARKINGS dietflags = DIET_OMNI - unarmed_type = /datum/unarmed_attack/punch blurb = "Humanity originated in the Sol system, and over the last five centuries has spread \ colonies across a wide swathe of space. They hold a wide range of forms and creeds.

\ While the central Sol government maintains control of its far-flung people, powerful corporate \ @@ -237,7 +236,6 @@ default_language = "Galactic Common" language = "Skrellian" primitive_form = "Neara" - unarmed_type = /datum/unarmed_attack/punch blurb = "An amphibious species, Skrell come from the star system known as Qerr'Vallis, which translates to 'Star of \ the royals' or 'Light of the Crown'.

Skrell are a highly advanced and logical race who live under the rule \ @@ -546,7 +544,6 @@ icobase = 'icons/mob/human_races/r_slime.dmi' deform = 'icons/mob/human_races/r_slime.dmi' path = /mob/living/carbon/human/slime - unarmed_type = /datum/unarmed_attack/punch remains_type = /obj/effect/decal/remains/slime // More sensitive to the cold @@ -690,7 +687,7 @@ var/limb_select = input(src, "Choose a limb to regrow", "Limb Regrowth") as null|anything in missing_limbs var/chosen_limb = missing_limbs[limb_select] - visible_message("[src] begins to hold still and concentrate on their missing [limb_select]...", "You begin to focus on regrowing your missing [limb_select]... (This will take [round(SLIMEPERSON_REGROWTHDELAY/10)] seconds, and you must hold still.)") + visible_message("[src] begins to hold still and concentrate on [p_their()] missing [limb_select]...", "You begin to focus on regrowing your missing [limb_select]... (This will take [round(SLIMEPERSON_REGROWTHDELAY/10)] seconds, and you must hold still.)") if(do_after(src, SLIMEPERSON_REGROWTHDELAY, needhand=0, target = src)) if(stat || paralysis || stunned) to_chat(src, "You cannot regenerate missing limbs in your current state.") @@ -728,7 +725,7 @@ updatehealth() UpdateDamageIcon() nutrition -= SLIMEPERSON_HUNGERCOST - visible_message("[src] finishes regrowing their missing [new_limb]!", "You finish regrowing your [limb_select]") + visible_message("[src] finishes regrowing [p_their()] missing [new_limb]!", "You finish regrowing your [limb_select]") else to_chat(src, "You need to hold still in order to regrow a limb!") return @@ -749,7 +746,6 @@ deform = 'icons/mob/human_races/r_def_grey.dmi' default_language = "Galactic Common" language = "Psionic Communication" - unarmed_type = /datum/unarmed_attack/punch eyes = "grey_eyes_s" butt_sprite = "grey" @@ -931,7 +927,6 @@ path = /mob/living/carbon/human/machine default_language = "Galactic Common" language = "Trinary" - unarmed_type = /datum/unarmed_attack/punch remains_type = /obj/effect/decal/remains/robot eyes = "blank_eyes" @@ -1015,7 +1010,6 @@ path = /mob/living/carbon/human/drask default_language = "Galactic Common" language = "Orluum" - unarmed_type = /datum/unarmed_attack/punch eyes = "drask_eyes_s" speech_sounds = list('sound/voice/DraskTalk.ogg') diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index ec7592d4d3f..328e4c14ab8 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -205,7 +205,7 @@ var/global/list/damage_icon_parts = list() DI = damage_icon_parts[cache_index] standing_image.overlays += DI - overlays_standing[DAMAGE_LAYER] = standing_image + overlays_standing[H_DAMAGE_LAYER] = standing_image if(update_icons) update_icons() diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm index ecb233a2ebf..506cc804bd3 100644 --- a/code/modules/mob/living/carbon/slime/slime.dm +++ b/code/modules/mob/living/carbon/slime/slime.dm @@ -234,8 +234,27 @@ adjustBruteLoss(damage) updatehealth() +/mob/living/carbon/slime/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + if(Victim || Target) + Victim = null + Target = null + anchored = 0 + if(prob(80) && !client) + Discipline++ + spawn(0) + step_away(src, user, 15) + sleep(3) + step_away(src, user, 15) + ..(user, TRUE) + playsound(loc, "punch", 25, 1, -1) + visible_message("[user] has punched [src]!", "[user] has punched [src]!") + adjustBruteLoss(15) + return TRUE + /mob/living/carbon/slime/attack_hand(mob/living/carbon/human/M) if(Victim) + M.do_attack_animation(src, ATTACK_EFFECT_DISARM) if(Victim == M) if(prob(60)) visible_message("[M] attempts to wrestle \the [name] off!") @@ -259,7 +278,6 @@ return else - M.do_attack_animation(src) if(prob(30)) visible_message("[M] attempts to wrestle \the [name] off of [Victim]!") playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) @@ -297,24 +315,10 @@ grabbedby(M) else - M.do_attack_animation(src) + M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) var/damage = rand(1, 9) attacked += 10 if(prob(90)) - if(HULK in M.mutations) - damage += 15 - if(Victim || Target) - Victim = null - Target = null - anchored = 0 - if(prob(80) && !client) - Discipline++ - spawn(0) - step_away(src,M,15) - sleep(3) - step_away(src,M,15) - - playsound(loc, "punch", 25, 1, -1) add_attack_logs(M, src, "Melee attacked with fists") visible_message("[M] has punched [src]!", \ diff --git a/code/modules/mob/living/carbon/superheroes.dm b/code/modules/mob/living/carbon/superheroes.dm index d850caf658f..d9c7a9f12ef 100644 --- a/code/modules/mob/living/carbon/superheroes.dm +++ b/code/modules/mob/living/carbon/superheroes.dm @@ -188,15 +188,15 @@ switch(progress) if(1) to_chat(user, "You begin by introducing yourself and explaining what you're about.") - user.visible_message("[user] introduces \himself and explains \his plans.") + user.visible_message("[user] introduces [user.p_them()]self and explains [user.p_their()] plans.") if(2) to_chat(user, "You begin the recruitment of [target].") - user.visible_message("[user] leans over towards [target], whispering excitedly as he gives a speech.") + user.visible_message("[user] leans over towards [target], whispering excitedly as [user.p_they()] give[user.p_s()] a speech.") to_chat(target, "You feel yourself agreeing with [user], and a surge of loyalty begins building.") target.Weaken(12) sleep(20) if(ismindshielded(target)) - to_chat(user, "They are enslaved by Nanotrasen. You feel their interest in your cause wane and disappear.") + to_chat(user, "[target.p_they(TRUE)] are enslaved by Nanotrasen. You feel [target.p_their()] interest in your cause wane and disappear.") user.visible_message("[user] stops talking for a moment, then moves back away from [target].") to_chat(target, "Your mindshield implant activates, protecting you from conversion.") return @@ -214,7 +214,7 @@ recruiting = 0 to_chat(user, "You have recruited [target] as your henchman!") to_chat(target, "You have decided to enroll as a henchman for [user]. You are now part of the feared 'Greyshirts'.") - to_chat(target, "You must follow the orders of [user], and help him succeed in \his dastardly schemes.") + to_chat(target, "You must follow the orders of [user], and help [user.p_them()] succeed in [user.p_their()] dastardly schemes.") to_chat(target, "You may not harm other Greyshirt or [user]. However, you do not need to obey other Greyshirts.") ticker.mode.greyshirts += target.mind target.set_species("Human") diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 4f3265fc619..bff49e7c527 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -137,10 +137,12 @@ if(!AM.anchored) now_pushing = 1 var/t = get_dir(src, AM) - if(istype(AM, /obj/structure/window/full)) - for(var/obj/structure/window/win in get_step(AM, t)) - now_pushing = 0 - return + if(istype(AM, /obj/structure/window)) + var/obj/structure/window/W = AM + if(W.fulltile) + for(var/obj/structure/window/win in get_step(W, t)) + now_pushing = 0 + return if(pulling == AM) stop_pulling() var/current_dir @@ -816,7 +818,7 @@ who.unEquip(what) if(silent) put_in_hands(what) - add_attack_logs(src, who, "Stripped of [what]", isLivingSSD(who)) + add_attack_logs(src, who, "Stripped of [what]") // The src mob is trying to place an item on someone // Override if a certain mob should be behave differently when placing items (can't, for example) @@ -835,8 +837,7 @@ if(what && Adjacent(who)) unEquip(what) who.equip_to_slot_if_possible(what, where, 0, 1) - add_attack_logs(src, who, "Equipped [what]", isLivingSSD(who)) - + add_attack_logs(src, who, "Equipped [what]") /mob/living/singularity_act() var/gain = 20 @@ -852,81 +853,11 @@ makeNewConstruct(/mob/living/simple_animal/hostile/construct/harvester, src, null, 1) spawn_dust() gib() - return -/atom/movable/proc/do_attack_animation(atom/A, end_pixel_y) - var/pixel_x_diff = 0 - var/pixel_y_diff = 0 - var/final_pixel_y = initial(pixel_y) - if(end_pixel_y) - final_pixel_y = end_pixel_y - - var/direction = get_dir(src, A) - if(direction & NORTH) - pixel_y_diff = 8 - else if(direction & SOUTH) - pixel_y_diff = -8 - - if(direction & EAST) - pixel_x_diff = 8 - else if(direction & WEST) - pixel_x_diff = -8 - - animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff, time = 2) - animate(pixel_x = initial(pixel_x), pixel_y = final_pixel_y, time = 2) - - -/mob/living/do_attack_animation(atom/A) - var/final_pixel_y = get_standard_pixel_y_offset(lying) - ..(A, final_pixel_y) - floating = 0 // If we were without gravity, the bouncing animation got stopped, so we make sure we restart the bouncing after the next movement. - - // What icon do we use for the attack? - var/image/I - if(hand && l_hand) // Attacked with item in left hand. - I = image(l_hand.icon, A, l_hand.icon_state, A.layer + 1) - else if(!hand && r_hand) // Attacked with item in right hand. - I = image(r_hand.icon, A, r_hand.icon_state, A.layer + 1) - else // Attacked with a fist? - return - - // Who can see the attack? - var/list/viewing = list() - for(var/mob/M in viewers(A)) - if(M.client && M.client.prefs.show_ghostitem_attack) - viewing |= M.client - flick_overlay(I, viewing, 5) // 5 ticks/half a second - - // Scale the icon. - I.transform *= 0.75 - // The icon should not rotate. - I.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA - - // Set the direction of the icon animation. - var/direction = get_dir(src, A) - if(direction & NORTH) - I.pixel_y = -16 - else if(direction & SOUTH) - I.pixel_y = 16 - - if(direction & EAST) - I.pixel_x = -16 - else if(direction & WEST) - I.pixel_x = 16 - - if(!direction) // Attacked self?! - I.pixel_z = 16 - - // And animate the attack! - animate(I, alpha = 175, pixel_x = 0, pixel_y = 0, pixel_z = 0, time = 3) - -/atom/movable/proc/receiving_damage(atom/A) - var/pixel_x_diff = rand(-3,3) - var/pixel_y_diff = rand(-3,3) - animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff, time = 2) - animate(pixel_x = initial(pixel_x), pixel_y = initial(pixel_y), time = 2) - -/mob/living/receiving_damage(atom/A) +/mob/living/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect, end_pixel_y) + end_pixel_y = get_standard_pixel_y_offset(lying) + if(!used_item) + used_item = get_active_hand() ..() floating = 0 // If we were without gravity, the bouncing animation got stopped, so we make sure we restart the bouncing after the next movement. diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 38065ac1f2c..aaeb26fe2c6 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -129,7 +129,7 @@ add_attack_logs(M.occupant, src, "Mecha-meleed with [M]") else step_away(src,M) - add_attack_logs(M.occupant, src, "Mecha-pushed with [M]", FALSE) + add_attack_logs(M.occupant, src, "Mecha-pushed with [M]", ATKLOG_ALL) M.occupant_message("You push [src] out of the way.") visible_message("[M] pushes [src] out of the way.") return @@ -240,11 +240,11 @@ to_chat(user, "You already grabbed [src].") return - add_attack_logs(user, src, "Grabbed passively", admin_notify = FALSE) + add_attack_logs(user, src, "Grabbed passively", ATKLOG_ALL) var/obj/item/grab/G = new /obj/item/grab(user, src) if(buckled) - to_chat(user, "You cannot grab [src], \he is buckled in!") + to_chat(user, "You cannot grab [src]; [p_they()] [p_are()] buckled in!") if(!G) //the grab will delete itself in New if src is anchored return 0 user.put_in_active_hand(G) @@ -333,6 +333,9 @@ if(INTENT_GRAB) grabbedby(M) return FALSE - else + if(INTENT_HARM) M.do_attack_animation(src) return TRUE + if(INTENT_DISARM) + M.do_attack_animation(src, ATTACK_EFFECT_DISARM) + return TRUE diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index b2755e2b7d8..55e8536cd10 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -164,10 +164,10 @@ proc/get_radio_key_from_channel(var/channel) if(is_muzzled()) var/obj/item/clothing/mask/muzzle/G = wear_mask - if(G.mute == MUTE_ALL) //if the mask is supposed to mute you completely or just muffle you + if(G.mute == MUZZLE_MUTE_ALL) //if the mask is supposed to mute you completely or just muffle you to_chat(src, "You're muzzled and cannot speak!") return - else if(G.mute == MUTE_MUFFLE) + else if(G.mute == MUZZLE_MUTE_MUFFLE) message = muffledspeech(message) verb = "mumbles" diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 09b62f1c89c..bf11356b3a5 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -87,11 +87,12 @@ var/list/ai_verbs_default = list( var/mob/living/simple_animal/bot/Bot var/turf/waypoint //Holds the turf of the currently selected waypoint. var/waypoint_mode = 0 //Waypoint mode is for selecting a turf via clicking. + var/apc_override = FALSE //hack for letting the AI use its APC even when visionless var/nuking = 0 var/obj/machinery/doomsday_device/doomsday_device var/obj/machinery/hologram/holopad/holo = null - var/mob/camera/aiEye/eyeobj = new() + var/mob/camera/aiEye/eyeobj var/sprint = 10 var/cooldown = 0 var/acceleration = 1 @@ -191,9 +192,7 @@ var/list/ai_verbs_default = list( spawn(5) new /obj/machinery/ai_powersupply(src) - eyeobj.ai = src - eyeobj.name = "[src.name] (AI Eye)" // Give it a name - eyeobj.loc = src.loc + create_eye() builtInCamera = new /obj/machinery/camera/portable(src) builtInCamera.c_tag = name @@ -1163,6 +1162,17 @@ var/list/ai_verbs_default = list( client.eye = eyeobj return TRUE + +/mob/living/silicon/ai/proc/can_see(atom/A) + if(isturf(loc)) //AI in core, check if on cameras + //get_turf_pixel() is because APCs in maint aren't actually in view of the inner camera + //apc_override is needed here because AIs use their own APC when depowered + return (cameranet && cameranet.checkTurfVis(get_turf_pixel(A))) || apc_override + //AI is carded/shunted + //view(src) returns nothing for carded/shunted AIs and they have x-ray vision so just use get_dist + var/list/viewscale = getviewsize(client.view) + return get_dist(src, A) <= max(viewscale[1]*0.5,viewscale[2]*0.5) + /mob/living/silicon/ai/proc/relay_speech(mob/living/M, text, verb, datum/language/speaking) if(!say_understands(M, speaking))//The AI will be able to understand most mobs talking through the holopad. if(speaking) diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index eeeeed8e8bb..6737be463d6 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -28,7 +28,7 @@ eye.visibleCameraChunks += src visible++ seenby += eye - if(changed && !updating) + if(changed) update() // Remove an AI eye from the chunk, then update if changed. diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index 71a2e6cba36..2728a1af55e 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -20,7 +20,6 @@ // It will also stream the chunk that the new loc is in. /mob/camera/aiEye/setLoc(T) - if(ai) if(!isturf(ai.loc)) return @@ -30,8 +29,9 @@ if(ai.client) ai.client.eye = src //Holopad - if(ai.holo) - ai.holo.move_hologram() + if(istype(ai.current, /obj/machinery/hologram/holopad)) + var/obj/machinery/hologram/holopad/H = ai.current + H.move_hologram(ai, T) /mob/camera/aiEye/Move() return 0 @@ -41,8 +41,22 @@ return ai.client return null + +/mob/camera/aiEye/proc/RemoveImages() + var/client/C = GetViewerClient() + if(C) + for(var/V in visibleCameraChunks) + var/datum/camerachunk/chunk = V + C.images -= chunk.obscured + + /mob/camera/aiEye/Destroy() - ai = null + if(ai) + //ai.all_eyes -= src + ai = null + for(var/V in visibleCameraChunks) + var/datum/camerachunk/chunk = V + chunk.remove(src) return ..() /atom/proc/move_camera_by_click() @@ -102,12 +116,18 @@ src.eyeobj.loc = src.loc else to_chat(src, "ERROR: Eyeobj not found. Creating new eye...") - src.eyeobj = new(src.loc) - src.eyeobj.ai = src - src.eyeobj.name = "[src.name] (AI Eye)" // Give it a name + create_eye() eyeobj.setLoc(loc) +/mob/living/silicon/ai/proc/create_eye() + if(eyeobj) + return + eyeobj = new /mob/camera/aiEye() + eyeobj.ai = src + eyeobj.setLoc(loc) + eyeobj.name = "[name] (AI Eye)" + /mob/living/silicon/ai/proc/toggle_acceleration() set category = "AI Commands" set name = "Toggle Camera Acceleration" diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index 1755674b4f6..42f132e39d4 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -129,8 +129,10 @@ to_chat(src, "Receiving control information from APC.") sleep(2) //bring up APC dialog - aiRestorePowerRoutine = 3 + apc_override = 1 theAPC.attack_ai(src) + apc_override = 0 + aiRestorePowerRoutine = 3 to_chat(src, "Here are your current laws:") src.show_laws() //WHY THE FUCK IS THIS HERE sleep(50) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 54ebdaf4da2..d24518d4888 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -599,7 +599,7 @@ var/mob/living/carbon/human/H = over_object //changed to human to avoid stupid issues like xenos holding pAIs. if(!istype(H) || !Adjacent(H)) return ..() if(usr == src) - switch(alert(H, "[src] wants you to pick them up. Do it?",,"Yes","No")) + switch(alert(H, "[src] wants you to pick [p_them()] up. Do it?",,"Yes","No")) if("Yes") if(Adjacent(H)) get_scooped(H) diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index 32bef5d7494..bf9e4eeab0d 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -71,7 +71,7 @@ if(answer == "Yes") var/turf/T = get_turf_or_move(P.loc) for(var/mob/v in viewers(T)) - v.show_message("[M] presses \his thumb against [P].", 3, "[P] makes a sharp clicking sound as it extracts DNA material from [M].", 2) + v.show_message("[M] presses [M.p_their()] thumb against [P].", 3, "[P] makes a sharp clicking sound as it extracts DNA material from [M].", 2) var/datum/dna/dna = M.dna to_chat(P, "

[M]'s UE string : [dna.unique_enzymes]

") if(dna.unique_enzymes == P.master_dna) @@ -79,7 +79,7 @@ else to_chat(P, "DNA does not match stored Master DNA.") else - to_chat(P, "[M] does not seem like \he is going to provide a DNA sample willingly.") + to_chat(P, "[M] does not seem like [M.p_they()] [M.p_are()] going to provide a DNA sample willingly.") return 1 /datum/pai_software/radio_config diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index bd06f7045ae..aaaeb15b283 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -142,7 +142,7 @@ to_chat(usr, "The reboot system is currently offline. Please wait another [cooldown_time] seconds.") return - user.visible_message("\the [user] swipes \his ID card through \the [src], attempting to reboot it.", "You swipe your ID card through \the [src], attempting to reboot it.") + user.visible_message("\the [user] swipes [user.p_their()] ID card through [src], attempting to reboot it.", "You swipe your ID card through [src], attempting to reboot it.") last_reboot = world.time / 10 var/drones = 0 for(var/mob/living/silicon/robot/drone/D in world) @@ -153,7 +153,7 @@ return else - user.visible_message("\the [user] swipes \his ID card through \the [src], attempting to shut it down.", "You swipe your ID card through \the [src], attempting to shut it down.") + user.visible_message("\the [user] swipes [user.p_their()] ID card through [src], attempting to shut it down.", "You swipe your ID card through \the [src], attempting to shut it down.") if(emagged) return diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 444c4c23949..5fb42f5f121 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -794,7 +794,7 @@ var/list/robot_verbs_default = list( laws = new /datum/ai_laws/syndicate_override var/time = time2text(world.realtime,"hh:mm:ss") lawchanges.Add("[time] : [M.name]([M.key]) emagged [name]([key])") - set_zeroth_law("Only [M.real_name] and people he designates as being such are Syndicate Agents.") + set_zeroth_law("Only [M.real_name] and people [M.p_they()] designate[M.p_s()] as being such are Syndicate Agents.") to_chat(src, "ALERT: Foreign software detected.") sleep(5) to_chat(src, "Initiating diagnostics...") @@ -810,7 +810,7 @@ var/list/robot_verbs_default = list( to_chat(src, "ERRORERRORERROR") to_chat(src, "Obey these laws:") laws.show_laws(src) - to_chat(src, "ALERT: [M.real_name] is your new master. Obey your new laws and his commands.") + to_chat(src, "ALERT: [M.real_name] is your new master. Obey your new laws and [M.p_their()] commands.") SetLockdown(0) if(src.module && istype(src.module, /obj/item/robot_module/miner)) for(var/obj/item/pickaxe/drill/cyborg/D in src.module.modules) diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index 712154bf146..e18ca8d6a17 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -1,7 +1,7 @@ /mob/living/silicon/robot/attack_alien(mob/living/carbon/alien/humanoid/M) if(M.a_intent == INTENT_DISARM) if(!lying) - M.do_attack_animation(src) + M.do_attack_animation(src, ATTACK_EFFECT_DISARM) if(prob(85)) Stun(7) step(src, get_dir(M,src)) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index f549c07b66a..e9aadf5086a 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -198,7 +198,7 @@ modules += new /obj/item/multitool/cyborg(src) modules += new /obj/item/t_scanner(src) modules += new /obj/item/analyzer(src) - modules += new /obj/item/taperoll/engineering(src) + modules += new /obj/item/holosign_creator/engineering(src) modules += new /obj/item/gripper(src) modules += new /obj/item/matter_decompiler(src) modules += new /obj/item/floor_painter(src) @@ -222,7 +222,7 @@ modules += new /obj/item/restraints/handcuffs/cable/zipties/cyborg(src) modules += new /obj/item/melee/baton/loaded(src) modules += new /obj/item/gun/energy/disabler/cyborg(src) - modules += new /obj/item/taperoll/police(src) + modules += new /obj/item/holosign_creator/security(src) modules += new /obj/item/clothing/mask/gas/sechailer/cyborg(src) emag = new /obj/item/gun/energy/laser/cyborg(src) diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 0de811224dc..0a3ed47b933 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -74,8 +74,8 @@ if(!message) return - var/obj/machinery/hologram/holopad/T = src.holo - if(T && T.hologram && T.master == src)//If there is a hologram and its master is the user. + var/obj/machinery/hologram/holopad/T = current + if(istype(T) && T.masters[src]) //Human-like, sorta, heard by those who understand humans. var/rendered_a @@ -112,8 +112,8 @@ if(!message) return - var/obj/machinery/hologram/holopad/T = src.holo - if(T && T.hologram && T.master == src) + var/obj/machinery/hologram/holopad/T = current + if(istype(T) && T.masters[src]) var/rendered = "[name] [message]" to_chat(src, "Holopad action relayed, [real_name] [message]") @@ -127,8 +127,8 @@ return 1 /mob/living/silicon/ai/emote(var/act, var/type, var/message) - var/obj/machinery/hologram/holopad/T = src.holo - if(T && T.hologram && T.master == src) //Is the AI using a holopad? + var/obj/machinery/hologram/holopad/T = current + if(istype(T) && T.masters[src])//Is the AI using a holopad? src.holopad_emote(message) else //Emote normally, then. ..() diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm index 480c9442bd7..a903b6999dc 100644 --- a/code/modules/mob/living/silicon/silicon_defense.dm +++ b/code/modules/mob/living/silicon/silicon_defense.dm @@ -41,6 +41,15 @@ if(L.a_intent == INTENT_HELP) visible_message("[L.name] rubs its head against [src].") +/mob/living/silicon/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + ..(user, TRUE) + adjustBruteLoss(rand(10, 15)) + playsound(loc, "punch", 25, 1, -1) + visible_message("[user] has punched [src]!", "[user] has punched [src]!") + return TRUE + return FALSE + /mob/living/silicon/attack_hand(mob/living/carbon/human/M) switch(M.a_intent) if(INTENT_HELP) @@ -49,17 +58,8 @@ if("grab") grabbedby(M) else - M.do_attack_animation(src) + M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) playsound(loc, 'sound/effects/bang.ogg', 10, 1) - if(HULK in M.mutations) - var/damage = rand(10,15) - adjustBruteLoss(damage) - add_attack_logs(M, src, "Melee attacked with fists") - playsound(loc, "punch", 25, 1, -1) - visible_message("[M] has punched [src]!", \ - "[M] has punched [src]!") - return 1 - else - visible_message("[M] punches [src], but doesn't leave a dent.", \ + visible_message("[M] punches [src], but doesn't leave a dent.", \ "[M] punches [src], but doesn't leave a dent.!") - return 0 + return FALSE diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm index b122decd322..309a13468a3 100644 --- a/code/modules/mob/living/simple_animal/animal_defense.dm +++ b/code/modules/mob/living/simple_animal/animal_defense.dm @@ -11,7 +11,7 @@ grabbedby(M) if(INTENT_HARM, INTENT_DISARM) - M.do_attack_animation(src) + M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) visible_message("[M] [response_harm] [src]!") playsound(loc, "punch", 25, 1, -1) attack_threshold_check(harm_intent_damage) @@ -19,6 +19,14 @@ updatehealth() return 1 +/mob/living/simple_animal/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + ..(user, TRUE) + playsound(loc, "punch", 25, 1, -1) + visible_message("[user] has punched [src]!", "[user] has punched [src]!") + adjustBruteLoss(15) + return TRUE + /mob/living/simple_animal/attack_alien(mob/living/carbon/alien/humanoid/M) if(..()) //if harm or disarm intent. var/damage = rand(15, 30) @@ -58,3 +66,11 @@ visible_message("[src] looks unharmed.") else apply_damage(damage, damagetype) + +/mob/living/simple_animal/do_attack_animation(atom/A, visual_effect_icon, used_item, no_effect, end_pixel_y) + if(!no_effect && !visual_effect_icon && melee_damage_upper) + if(melee_damage_upper < 10) + visual_effect_icon = ATTACK_EFFECT_PUNCH + else + visual_effect_icon = ATTACK_EFFECT_SMASH + ..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 986795ccd1e..5e79c315f42 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -276,7 +276,7 @@ return apply_damage(M.melee_damage_upper, BRUTE) visible_message("[M] has [M.attacktext] [src]!") - add_attack_logs(M, src, "Animal attacked", FALSE) + add_attack_logs(M, src, "Animal attacked", ATKLOG_ALL) if(prob(10)) new /obj/effect/decal/cleanable/blood/oil(loc) diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index 9e96a16fb0f..90c44f19286 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -282,73 +282,66 @@ log_game("[key_name(user)] has renamed a robot to [t]") //Medbot Assembly -/obj/item/firstaid_arm_assembly - name = "incomplete medibot assembly." - desc = "A first aid kit with a robot arm permanently grafted to it." - icon = 'icons/obj/aibots.dmi' - icon_state = "firstaid_arm" - var/build_step = 0 - var/created_name = "Medibot" //To preserve the name if it's a unique medbot I guess - var/skin = null //Same as medbot, set to tox or ointment for the respective kits. - w_class = WEIGHT_CLASS_NORMAL - var/treatment_brute = "salglu_solution" - var/treatment_oxy = "salbutamol" - var/treatment_fire = "salglu_solution" - var/treatment_tox = "charcoal" - var/treatment_virus = "spaceacillin" - req_one_access = list(access_medical, access_robotics) - - /obj/item/firstaid_arm_assembly/New() - ..() - spawn(5) - if(skin) - overlays += image('icons/obj/aibots.dmi', "kit_skin_[skin]") - -/obj/item/storage/firstaid/attackby(obj/item/robot_parts/S, mob/user, params) - - if((!istype(S, /obj/item/robot_parts/l_arm)) && (!istype(S, /obj/item/robot_parts/r_arm))) - ..() - return +/obj/item/storage/firstaid/attackby(obj/item/I, mob/user, params) + if(!istype(I, /obj/item/robot_parts/l_arm) && !istype(I, /obj/item/robot_parts/r_arm)) + return ..() //Making a medibot! - if(contents.len >= 1) + if(contents.len) to_chat(user, "You need to empty [src] out first!") return - var/obj/item/firstaid_arm_assembly/A = new /obj/item/firstaid_arm_assembly - if(istype(src,/obj/item/storage/firstaid/fire)) - A.skin = "ointment" - else if(istype(src,/obj/item/storage/firstaid/toxin)) - A.skin = "tox" - else if(istype(src,/obj/item/storage/firstaid/o2)) - A.skin = "o2" - else if(istype(src,/obj/item/storage/firstaid/brute)) - A.skin = "brute" - else if(istype(src,/obj/item/storage/firstaid/adv)) - A.skin = "adv" - else if(istype(src,/obj/item/storage/firstaid/tactical)) - A.skin = "bezerk" - else if(istype(src,/obj/item/storage/firstaid/aquatic_kit)) - A.skin = "fish" + var/obj/item/firstaid_arm_assembly/A = new /obj/item/firstaid_arm_assembly(loc, med_bot_skin) A.req_one_access = req_one_access + A.syndicate_aligned = syndicate_aligned A.treatment_oxy = treatment_oxy A.treatment_brute = treatment_brute A.treatment_fire = treatment_fire A.treatment_tox = treatment_tox A.treatment_virus = treatment_virus - qdel(S) + qdel(I) user.put_in_hands(A) to_chat(user, "You add the robot arm to the first aid kit.") user.unEquip(src, 1) qdel(src) +/obj/item/firstaid_arm_assembly + name = "incomplete medibot assembly." + desc = "A first aid kit with a robot arm permanently grafted to it." + icon = 'icons/obj/aibots.dmi' + icon_state = "firstaid_arm" + w_class = WEIGHT_CLASS_NORMAL + req_one_access = list(access_medical, access_robotics) + var/build_step = 0 + var/created_name = "Medibot" //To preserve the name if it's a unique medbot I guess + var/skin = null //Same as medbot, set to tox or ointment for the respective kits. + var/syndicate_aligned = FALSE + var/treatment_brute = "salglu_solution" + var/treatment_oxy = "salbutamol" + var/treatment_fire = "salglu_solution" + var/treatment_tox = "charcoal" + var/treatment_virus = "spaceacillin" -/obj/item/firstaid_arm_assembly/attackby(obj/item/W, mob/user, params) +/obj/item/firstaid_arm_assembly/New(loc, new_skin) ..() - if(istype(W, /obj/item/pen)) - var/t = stripped_input(user, "Enter new robot name", name, created_name,MAX_NAME_LEN) + if(new_skin) + skin = new_skin + update_icon() + +/obj/item/firstaid_arm_assembly/update_icon() + overlays.Cut() + if(skin) + overlays += image('icons/obj/aibots.dmi', "kit_skin_[skin]") + if(build_step > 0) + overlays += image('icons/obj/aibots.dmi', "na_scanner") + + +/obj/item/firstaid_arm_assembly/attackby(obj/item/I, mob/user, params) + ..() + if(istype(I, /obj/item/pen)) + var/t = stripped_input(user, "Enter new robot name", name, created_name, MAX_NAME_LEN) if(!t) return if(!in_range(src, user) && loc != user) @@ -358,32 +351,34 @@ else switch(build_step) if(0) - if(istype(W, /obj/item/healthanalyzer)) - if(!user.unEquip(W)) + if(istype(I, /obj/item/healthanalyzer)) + if(!user.drop_item()) return - qdel(W) + qdel(I) build_step++ to_chat(user, "You add the health sensor to [src].") name = "First aid/robot arm/health analyzer assembly" - overlays += image('icons/obj/aibots.dmi', "na_scanner") + update_icon() if(1) - if(isprox(W)) - if(!user.unEquip(W)) + if(isprox(I)) + if(!user.drop_item()) return - qdel(W) + qdel(I) build_step++ to_chat(user, "You complete the Medibot. Beep boop!") var/turf/T = get_turf(src) - var/mob/living/simple_animal/bot/medbot/S = new /mob/living/simple_animal/bot/medbot(T) - S.skin = skin - S.name = created_name - S.bot_core.req_one_access = req_one_access - S.treatment_oxy = treatment_oxy - S.treatment_brute = treatment_brute - S.treatment_fire = treatment_fire - S.treatment_tox = treatment_tox - S.treatment_virus = treatment_virus + if(!syndicate_aligned) + var/mob/living/simple_animal/bot/medbot/S = new /mob/living/simple_animal/bot/medbot(T, skin) + S.name = created_name + S.bot_core.req_one_access = req_one_access + S.treatment_oxy = treatment_oxy + S.treatment_brute = treatment_brute + S.treatment_fire = treatment_fire + S.treatment_tox = treatment_tox + S.treatment_virus = treatment_virus + else + new /mob/living/simple_animal/bot/medbot/syndicate(T) //Syndicate medibots are a special case that have so many unique vars on them, it's not worth passing them through construction phases user.unEquip(src, 1) qdel(src) diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 576ad200d5c..9d7fa39ed87 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -17,7 +17,7 @@ bot_filter = RADIO_SECBOT model = "ED-209" bot_purpose = "seek out criminals, handcuff them, and report their location to security" - bot_core = /obj/machinery/bot_core/secbot + bot_core_type = /obj/machinery/bot_core/secbot window_id = "autoed209" window_name = "Automatic Security Unit v2.6" path_image_color = "#FF0000" @@ -61,12 +61,14 @@ shot_delay = 6//Longer shot delay because JESUS CHRIST check_records = 0//Don't actively target people set to arrest arrest_type = 1//Don't even try to cuff - bot_core.req_access = list(access_maint_tunnels, access_theatre) - arrest_type = 1 - if((lasercolor == "b") && (name == "\improper ED-209 Security Robot"))//Picks a name if there isn't already a custome one - name = pick("BLUE BALLER","SANIC","BLUE KILLDEATH MURDERBOT") - if((lasercolor == "r") && (name == "\improper ED-209 Security Robot")) - name = pick("RED RAMPAGE","RED ROVER","RED KILLDEATH MURDERBOT") + declare_arrests = 0 // Don't spam sec + bot_core.req_access = list(access_maint_tunnels, access_theatre, access_robotics) + + if(created_name == initial(name) || !created_name) + if(lasercolor == "b") + name = pick("BLUE BALLER","SANIC","BLUE KILLDEATH MURDERBOT") + else if (lasercolor == "r") + name = pick("RED RAMPAGE","RED ROVER","RED KILLDEATH MURDERBOT") //SECHUD var/datum/atom_hud/secsensor = huds[DATA_HUD_SECURITY_ADVANCED] @@ -94,37 +96,37 @@ /mob/living/simple_animal/bot/ed209/set_custom_texts() text_hack = "You disable [name]'s combat inhibitor." text_dehack = "You restore [name]'s combat inhibitor." - text_dehack_fail = "[name] ignores your attempts to restrict him!" + text_dehack_fail = "[name] ignores your attempts to restrict [p_them()]!" /mob/living/simple_animal/bot/ed209/get_controls(mob/user) var/dat dat += hack(user) dat += showpai(user) dat += text({" -Security Unit v2.6 controls

-Status: []
-Behaviour controls are [locked ? "locked" : "unlocked"]
-Maintenance panel panel is [open ? "opened" : "closed"]
"}, + Security Unit v2.6 controls

+ Status: []
+ Behaviour controls are [locked ? "locked" : "unlocked"]
+ Maintenance panel panel is [open ? "opened" : "closed"]
"}, -"[on ? "On" : "Off"]" ) + "[on ? "On" : "Off"]" ) if(!locked || issilicon(user) || user.can_admin_interact()) + dat += "Auto Patrol [auto_patrol ? "On" : "Off"]
" + if(!lasercolor) dat += text({"
-Arrest Unidentifiable Persons: []
-Arrest for Unauthorized Weapons: []
-Arrest for Warrant: []
-
-Operating Mode: []
-Report Arrests[]
-Auto Patrol[]"}, + Arrest Unidentifiable Persons: []
+ Arrest for Unauthorized Weapons: []
+ Arrest for Warrant: []
+
+ Operating Mode: []
+ Report Arrests[]
"}, -"[idcheck ? "Yes" : "No"]", -"[weaponscheck ? "Yes" : "No"]", -"[check_records ? "Yes" : "No"]", -"[arrest_type ? "Detain" : "Arrest"]", -"[declare_arrests ? "Yes" : "No"]", -"[auto_patrol ? "On" : "Off"]" ) + "[idcheck ? "Yes" : "No"]", + "[weaponscheck ? "Yes" : "No"]", + "[check_records ? "Yes" : "No"]", + "[arrest_type ? "Detain" : "Arrest"]", + "[declare_arrests ? "Yes" : "No"]") return dat @@ -239,13 +241,18 @@ Auto Patrol[]"}, if(target) // make sure target exists if(Adjacent(target) && isturf(target.loc)) // if right next to perp stun_attack(target) + if(!lasercolor) + mode = BOT_PREP_ARREST + anchored = 1 + target_lastloc = target.loc + return + else + mode = BOT_HUNT + target = null + target_lastloc = null + return - mode = BOT_PREP_ARREST - anchored = 1 - target_lastloc = target.loc - return - - else // not next to perp + else if(!disabled) // not next to perp var/turf/olddist = get_dist(src, target) walk_to(src, target,1,4) if((get_dist(src, target)) >= (olddist)) @@ -406,7 +413,7 @@ Auto Patrol[]"}, shoot_sound = 'sound/weapons/laser.ogg' if(emagged == 2) if(lasercolor) - projectile = /obj/item/projectile/beam/lasertag + projectile = /obj/item/projectile/beam/disabler else projectile = /obj/item/projectile/beam else @@ -501,6 +508,7 @@ Auto Patrol[]"}, if(lasertag_check) icon_state = "[lasercolor]ed2090" disabled = 1 + walk_to(src, 0) target = null spawn(100) disabled = 0 @@ -569,4 +577,4 @@ Auto Patrol[]"}, if(!C.handcuffed) C.handcuffed = new /obj/item/restraints/handcuffs/cable/zipties/used(C) C.update_handcuffed() - back_to_idle() + back_to_idle() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index c531a6ed067..b1133cb0e08 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -14,7 +14,7 @@ bot_filter = RADIO_FLOORBOT model = "Floorbot" bot_purpose = "seek out damaged or missing floor tiles, and repair or replace them as necessary" - bot_core = /obj/machinery/bot_core/floorbot + bot_core_type = /obj/machinery/bot_core/floorbot window_id = "autofloor" window_name = "Automatic Station Floor Repairer v1.1" path_image_color = "#FFA500" @@ -58,7 +58,7 @@ /mob/living/simple_animal/bot/floorbot/set_custom_texts() text_hack = "You corrupt [name]'s construction protocols." - text_dehack = "You detect errors in [name] and reset his programming." + text_dehack = "You detect errors in [name] and reset [p_their()] programming." text_dehack_fail = "[name] is not responding to reset commands!" /mob/living/simple_animal/bot/floorbot/get_controls(mob/user) @@ -98,7 +98,7 @@ T.use(loaded) amount += loaded if(loaded > 0) - to_chat(user, "You load [loaded] tiles into the floorbot. He now contains [amount] tiles.") + to_chat(user, "You load [loaded] tiles into the floorbot. [p_they(TRUE)] now contains [amount] tiles.") nagged = 0 update_icon() else diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 7c737690ec0..6cdffd48f16 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -44,6 +44,7 @@ var/treatment_virus = "spaceacillin" var/treat_virus = 1 //If on, the bot will attempt to treat viral infections, curing them if possible. var/shut_up = 0 //self explanatory :) + var/syndicate_aligned = FALSE // Will it only treat operatives? /mob/living/simple_animal/bot/medbot/tox skin = "tox" @@ -68,8 +69,8 @@ desc = "International Medibot of mystery." skin = "bezerk" treatment_oxy = "perfluorodecalin" - treatment_brute = "styptic_powder" - treatment_fire = "silver_sulfadiazine" + treatment_brute = "bicaridine" + treatment_fire = "kelotane" treatment_tox = "charcoal" /mob/living/simple_animal/bot/medbot/syndicate @@ -77,9 +78,10 @@ desc = "You'd better have insurance!" skin = "bezerk" treatment_oxy = "perfluorodecalin" - treatment_brute = "styptic_powder" - treatment_fire = "silver_sulfadiazine" + treatment_brute = "bicaridine" + treatment_fire = "kelotane" treatment_tox = "charcoal" + syndicate_aligned = TRUE bot_core_type = /obj/machinery/bot_core/medbot/syndicate control_freq = BOT_FREQ + 1000 // make it not show up on lists radio_channel = "Syndicate" @@ -90,6 +92,9 @@ Radio.syndie = 1 /mob/living/simple_animal/bot/medbot/update_icon() + overlays.Cut() + if(skin) + overlays += "medskin_[skin]" if(!on) icon_state = "medibot0" return @@ -101,22 +106,21 @@ else icon_state = "medibot1" -/mob/living/simple_animal/bot/medbot/New() +/mob/living/simple_animal/bot/medbot/New(loc, new_skin) ..() - update_icon() - - spawn(4) - if(skin) - overlays += image('icons/obj/aibots.dmi', "medskin_[skin]") - - var/datum/job/doctor/J = new/datum/job/doctor - access_card.access += J.get_access() - prev_access = access_card.access + var/datum/job/doctor/J = new /datum/job/doctor + access_card.access += J.get_access() + prev_access = access_card.access + qdel(J) var/datum/atom_hud/medsensor = huds[DATA_HUD_MEDICAL_ADVANCED] medsensor.add_hud_to(src) permanent_huds |= medsensor + if(new_skin) + skin = new_skin + update_icon() + /mob/living/simple_animal/bot/medbot/bot_reset() ..() patient = null @@ -271,8 +275,10 @@ if(assess_patient(H)) last_found = world.time if((last_newpatient_speak + 300) < world.time) //Don't spam these messages! - var/message = pick("Hey, [H.name]! Hold on, I'm coming.","Wait [H.name]! I want to help!","[H.name], you appear to be injured!") + var/list/messagevoice = list("Hey, [H.name]! Hold on, I'm coming." = 'sound/voice/mcoming.ogg', "Wait [H.name]! I want to help!" = 'sound/voice/mhelp.ogg', "[H.name], you appear to be injured!" = 'sound/voice/minjured.ogg') + var/message = pick(messagevoice) speak(message) + playsound(loc, messagevoice[message], 50, 0) last_newpatient_speak = world.time return H else @@ -304,8 +310,10 @@ if(!patient) if(!shut_up && prob(1)) - var/message = pick("Radar, put a mask on!","There's always a catch, and it's the best there is.","I knew it, I should've been a plastic surgeon.","What kind of medbay is this? Everyone's dropping like dead flies.","Delicious!") + var/list/messagevoice = list("Radar, put a mask on!" = 'sound/voice/mradar.ogg', "There's always a catch, and I'm the best there is." = 'sound/voice/mcatch.ogg', "I knew it, I should've been a plastic surgeon." = 'sound/voice/msurgeon.ogg', "What kind of medbay is this? Everyone's dropping like flies." = 'sound/voice/mflies.ogg', "Delicious!" = 'sound/voice/mdelicious.ogg') + var/message = pick(messagevoice) speak(message) + playsound(loc, messagevoice[message], 50, 0) var/scan_range = (stationary_mode ? 1 : DEFAULT_SCAN_RANGE) //If in stationary mode, scan range is limited to adjacent patients. patient = scan(/mob/living/carbon/human, oldpatient, scan_range) oldpatient = patient @@ -371,7 +379,7 @@ if(emagged == 2) //Everyone needs our medicine. (Our medicine is toxins) return 1 - if((skin == "bezerk") && (!("syndicate" in C.faction))) + if(syndicate_aligned && (!("syndicate" in C.faction))) return 0 if(declare_crit && C.health <= 0) //Critical condition! Call for help! @@ -440,9 +448,11 @@ soft_reset() return - if(C.stat == 2) - var/death_message = pick("No! NO!","Live, damnit! LIVE!","I...I've never lost a patient before. Not today, I mean.") - speak(death_message) + if(C.stat == DEAD || (C.status_flags & 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) + playsound(loc, messagevoice[message], 50, 0) oldpatient = patient soft_reset() return @@ -492,8 +502,10 @@ break if(!reagent_id) //If they don't need any of that they're probably cured! - var/message = pick("All patched up!","An apple a day keeps me away.","Feel better soon!") + var/list/messagevoice = list("All patched up!" = 'sound/voice/mpatchedup.ogg', "An apple a day keeps me away." = 'sound/voice/mapple.ogg', "Feel better soon!" = 'sound/voice/mfeelbetter.ogg') + var/message = pick(messagevoice) speak(message) + playsound(loc, messagevoice[message], 50, 0) bot_reset() return else @@ -554,7 +566,8 @@ if("adv") new /obj/item/storage/firstaid/adv/empty(Tsec) if("bezerk") - new /obj/item/storage/firstaid/tactical/empty(Tsec) + var/obj/item/storage/firstaid/tactical/empty/T = new(Tsec) + T.syndicate_aligned = syndicate_aligned //This is a special case since Syndicate medibots and the mysterious medibot look the same; we also dont' want crew building Syndicate medibots if the mysterious medibot blows up. if("fish") new /obj/item/storage/firstaid/aquatic_kit(Tsec) else @@ -571,6 +584,9 @@ if(prob(50)) new /obj/item/robot_parts/l_arm(Tsec) + if(emagged && prob(25)) + playsound(loc, 'sound/voice/minsult.ogg', 50, 0) + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() @@ -579,7 +595,7 @@ /mob/living/simple_animal/bot/medbot/proc/declare(crit_patient) if(declare_cooldown) return - if((skin == "bezerk")) + if(syndicate_aligned) return var/area/location = get_area(src) speak("Medical emergency! [crit_patient ? "[crit_patient]" : "A patient"] is in critical condition at [location]!", radio_channel) diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 613f91e024c..2514af0eebd 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -75,10 +75,10 @@ //helmet and armor = 100% protection if( istype(inventory_head,/obj/item/clothing/head/helmet) && istype(inventory_back,/obj/item/clothing/suit/armor) ) if( O.force ) - to_chat(user, "[src] is wearing too much armor! You can't cause \him any damage.") + to_chat(user, "[src] is wearing too much armor! You can't cause [p_them()] any damage.") visible_message(" [user] hits [src] with [O], however [src] is too armored.") else - to_chat(user, "[src] is wearing too much armor! You can't reach \his skin.") + to_chat(user, "[src] is wearing too much armor! You can't reach [p_their()] skin.") visible_message("[user] gently taps [src] with [O].") if(health>0 && prob(15)) custom_emote(1, "looks at [user] with [pick("an amused","an annoyed","a confused","a resentful", "a happy", "an excited")] expression.") @@ -180,7 +180,7 @@ ) if( ! ( item_to_add.type in allowed_types ) ) - to_chat(usr, "You set [item_to_add] on [src]'s back, but \he shakes it off!") + to_chat(usr, "You set [item_to_add] on [src]'s back, but [p_they()] shake[p_s()] it off!") if(!usr.drop_item()) to_chat(usr, "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s back!") return @@ -379,10 +379,10 @@ to_chat(user, "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!") return 0 if(health <= 0) - to_chat(user, "There is merely a dull, lifeless look in [real_name]'s eyes as you put the [item_to_add] on \him.") + to_chat(user, "There is merely a dull, lifeless look in [real_name]'s eyes as you put the [item_to_add] on [p_them()].") else if(user) user.visible_message("[user] puts [item_to_add] on [real_name]'s head. [src] looks at [user] and barks once.", - "You put [item_to_add] on [real_name]'s head. [src] gives you a peculiar look, then wags \his tail once and barks.", + "You put [item_to_add] on [real_name]'s head. [src] gives you a peculiar look, then wags [p_their()] tail once and barks.", "You hear a friendly-sounding bark.") item_to_add.loc = src src.inventory_head = item_to_add @@ -392,7 +392,7 @@ if(user && !user.drop_item()) to_chat(user, "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!") return 0 - to_chat(user, "You set [item_to_add] on [src]'s head, but \he shakes it off!") + to_chat(user, "You set [item_to_add] on [src]'s head, but [p_they()] shake[p_s()] it off!") item_to_add.loc = loc if(prob(25)) step_rand(item_to_add) diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm index 70a64d2dbcb..b98d4181475 100644 --- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm @@ -35,7 +35,7 @@ var/emagged = 0 //is it getting ready to explode? var/obj/item/mmi/mmi = null - var/emagged_master = null //for administrative purposes, to see who emagged the spiderbot; also for a holder for if someone emags an empty frame first then inserts an MMI. + var/mob/emagged_master = null //for administrative purposes, to see who emagged the spiderbot; also for a holder for if someone emags an empty frame first then inserts an MMI. /mob/living/simple_animal/spiderbot/Destroy() if(emagged) @@ -135,8 +135,8 @@ else emagged = 1 to_chat(user, "You short out the security protocols and rewrite [src]'s internal memory.") - to_chat(src, "You have been emagged; you are now completely loyal to [user] and their every order!") - emagged_master = user.name + to_chat(src, "You have been emagged; you are now completely loyal to [user] and [user.p_their()] every order!") + emagged_master = user add_attack_logs(user, src, "Emagged") maxHealth = 60 health = 60 @@ -150,7 +150,7 @@ ckey = M.brainmob.ckey name = "Spider-bot ([M.brainmob.name])" if(emagged) - to_chat(src, "You have been emagged; you are now completely loyal to [emagged_master] and their every order!") + to_chat(src, "You have been emagged; you are now completely loyal to [emagged_master] and [emagged_master.p_their()] every order!") /mob/living/simple_animal/spiderbot/proc/update_icon() if(mmi) diff --git a/code/modules/mob/living/simple_animal/hostile/deathsquid.dm b/code/modules/mob/living/simple_animal/hostile/deathsquid.dm index e825bb2d273..065247a538d 100644 --- a/code/modules/mob/living/simple_animal/hostile/deathsquid.dm +++ b/code/modules/mob/living/simple_animal/hostile/deathsquid.dm @@ -11,6 +11,8 @@ icon_state = "deathsquid" icon_living = "deathsquid" icon_dead = "deathsquiddead" + pixel_x = -24 + pixel_y = -24 attacktext = "slices" attack_sound = 'sound/weapons/bladeslice.ogg' diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index 971adc431cc..3c72042efce 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -117,7 +117,7 @@ Difficulty: Hard bloodspell.phased = 1 internal_gps = new/obj/item/gps/internal/bubblegum(src) -/mob/living/simple_animal/hostile/megafauna/bubblegum/do_attack_animation(atom/A, visual_effect_icon) +/mob/living/simple_animal/hostile/megafauna/bubblegum/do_attack_animation(atom/A, visual_effect_icon, used_item, no_effect, end_pixel_y) if(!charging) ..() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index 5c25e9820e1..6027070dfc9 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -229,7 +229,7 @@ Difficulty: Medium playsound(src.loc, 'sound/effects/meteorimpact.ogg', 200, 1) for(var/mob/living/L in orange(1, src)) if(L.stat) - visible_message("[src] slams down on [L], crushing them!") + visible_message("[src] slams down on [L], crushing [L.p_them()]!") L.gib() else L.adjustBruteLoss(75) diff --git a/code/modules/mob/living/simple_animal/hostile/spaceworms.dm b/code/modules/mob/living/simple_animal/hostile/spaceworms.dm index d63d43b4919..cdbc64eea1e 100644 --- a/code/modules/mob/living/simple_animal/hostile/spaceworms.dm +++ b/code/modules/mob/living/simple_animal/hostile/spaceworms.dm @@ -328,7 +328,7 @@ //Jiggle the whole worm forwards towards the next segment -/mob/living/simple_animal/hostile/spaceWorm/do_attack_animation(atom/A) +/mob/living/simple_animal/hostile/spaceWorm/do_attack_animation(atom/A, visual_effect_icon, used_item, no_effect, end_pixel_y) ..() if(previousWorm) previousWorm.do_attack_animation(src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/black.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/black.dm index 982a0eaae90..377b8ff335a 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/black.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/black.dm @@ -36,7 +36,7 @@ L.reagents.add_reagent("terror_black_toxin", 30) // inject our special poison visible_message("[src] buries its long fangs deep into the [inject_target] of [target]!") else - visible_message("[src] bites [target], but cannot inject venom into their [inject_target]!") + visible_message("[src] bites [target], but cannot inject venom into [target.p_their()] [inject_target]!") L.attack_animal(src) if(!ckey && (!(target in enemies) || L.reagents.has_reagent("terror_black_toxin", 60))) step_away(src, L) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/gray.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/gray.dm index 06b28c6400e..43c0e7b0be5 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/gray.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/gray.dm @@ -33,7 +33,7 @@ if(W) melee_damage_lower = initial(melee_damage_lower) * 2 melee_damage_upper = initial(melee_damage_upper) * 2 - visible_message("[src] savagely mauls [target] while they are stuck in the web!") + visible_message("[src] savagely mauls [target] while [L.p_theyre()] stuck in the web!") else melee_damage_lower = initial(melee_damage_lower) melee_damage_upper = initial(melee_damage_upper) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/green.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/green.dm index 9d6f977a1ae..64ef285ded8 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/green.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/green.dm @@ -93,5 +93,5 @@ // instead of having a venom that only lasts seconds, we just add the eyeblur directly. visible_message("[src] buries its fangs deep into the [inject_target] of [target]!") else - visible_message("[src] bites [target], but cannot inject venom into their [inject_target]!") + visible_message("[src] bites [target], but cannot inject venom into [target.p_their()] [inject_target]!") L.attack_animal(src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm index 21b1276425c..66e88af1e1b 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm @@ -43,7 +43,7 @@ /mob/living/simple_animal/hostile/poison/terror_spider/prince/spider_specialattack(mob/living/carbon/human/L) if(prob(15)) - visible_message("[src] rams into [L], knocking them to the floor!") + visible_message("[src] rams into [L], knocking [L.p_them()] to the floor!") L.Weaken(5) L.Stun(5) else diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm index 9133b8cc14c..532c2b7357a 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm @@ -39,7 +39,7 @@ var/lastnestsetup = 0 var/neststep = 0 var/hasnested = 0 - var/spider_max_per_nest = 25 // above this, AI queens become stable + var/spider_max_per_nest = 35 // above this, AI queens become stable var/canlay = 4 // main counter for egg-laying ability! # = num uses, incremented at intervals var/eggslaid = 0 var/spider_can_fakelings = 3 // spawns defective spiderlings that don't grow up, used to freak out crew, atmosphere diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm index ef456ddcb0e..235a161c595 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm @@ -201,11 +201,6 @@ var/global/list/ts_spiderling_list = list() spider_specialattack(G,can_poison) else G.attack_animal(src) - else if(istype(target, /obj/structure/alien/resin)) - var/obj/structure/alien/resin/E = target - do_attack_animation(E) - E.health -= rand(melee_damage_lower, melee_damage_upper) - E.healthcheck() else target.attack_animal(src) diff --git a/code/modules/mob/living/simple_animal/pony.dm b/code/modules/mob/living/simple_animal/pony.dm index 437c9b0ac4d..960f8fc0998 100644 --- a/code/modules/mob/living/simple_animal/pony.dm +++ b/code/modules/mob/living/simple_animal/pony.dm @@ -27,7 +27,7 @@ ..() if(stat == 2) new /obj/item/reagent_containers/food/snacks/ectoplasm(src.loc) - src.visible_message("\The [src] lets out a contented sigh as their form unwinds.") + src.visible_message("[src] lets out a contented sigh as [p_their()] form unwinds.") src.ghostize() qdel(src) return diff --git a/code/modules/mob/living/simple_animal/posessed_object.dm b/code/modules/mob/living/simple_animal/posessed_object.dm index 9ba666ce96a..22901f4d29a 100644 --- a/code/modules/mob/living/simple_animal/posessed_object.dm +++ b/code/modules/mob/living/simple_animal/posessed_object.dm @@ -26,7 +26,7 @@ to_chat(usr, "[src] appears to be having trouble staying afloat!") -/mob/living/simple_animal/possessed_object/do_attack_animation(atom/A) +/mob/living/simple_animal/possessed_object/do_attack_animation(atom/A, visual_effect_icon, used_item, no_effect, end_pixel_y) ..() animate_ghostly_presence(src, -1, 20, 1) // Restart the floating animation after the attack animation, as it will be cancelled. diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 63b248ffd41..fb62ad3a629 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -4,6 +4,7 @@ lastKnownIP = client.address computer_id = client.computer_id log_access_in(client) + create_attack_log("Logged in at [atom_loc_line(get_turf(src))]") if(config.log_access) for(var/mob/M in player_list) if(M == src) continue diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm index a0f8594e870..cbcd51c44a7 100644 --- a/code/modules/mob/logout.dm +++ b/code/modules/mob/logout.dm @@ -3,6 +3,7 @@ unset_machine() player_list -= src log_access_out(src) + create_attack_log("Logged out at [atom_loc_line(get_turf(src))]") // `holder` is nil'd out by now, so we check the `admin_datums` array directly //Only report this stuff if we are currently playing. if(admin_datums[ckey] && ticker && ticker.current_state == GAME_STATE_PLAYING) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 897f092a517..beba84eaa3f 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -170,6 +170,16 @@ return 0 /mob/proc/Life(seconds, times_fired) + if(forced_look) + if(!isnum(forced_look)) + var/atom/A = locateUID(forced_look) + if(istype(A)) + var/view = client ? client.view : world.view + if(get_dist(src, A) > view || !(src in viewers(view, A))) + forced_look = null + to_chat(src, "Your direction target has left your view, you are no longer facing anything.") + return + setDir() // handle_typing_indicator() return @@ -533,6 +543,17 @@ var/list/slot_equipment_priority = list( \ client.screen = list() hud_used.show_hud(hud_used.hud_version) +/mob/setDir(new_dir) + if(forced_look) + if(isnum(forced_look)) + dir = forced_look + else + var/atom/A = locateUID(forced_look) + if(istype(A)) + dir = get_cardinal_dir(src, A) + return + . = ..() + /mob/proc/show_inv(mob/user) user.set_machine(src) var/dat = {" @@ -571,7 +592,7 @@ var/list/slot_equipment_priority = list( \ return if(!src || !isturf(src.loc)) return 0 - if(istype(A, /obj/effect/decal/point)) + if(istype(A, /obj/effect/temp_visual/point)) return 0 var/tile = get_turf(A) @@ -579,12 +600,8 @@ var/list/slot_equipment_priority = list( \ return 0 changeNext_move(CLICK_CD_POINT) - var/obj/P = new /obj/effect/decal/point(tile) + var/obj/P = new /obj/effect/temp_visual/point(tile) P.invisibility = invisibility - spawn (20) - if(P) - qdel(P) - return 1 /mob/proc/ret_grab(obj/effect/list_container/mobl/L as obj, flag) @@ -1158,7 +1175,7 @@ var/list/slot_equipment_priority = list( \ new /obj/effect/decal/cleanable/vomit/green(location) else if(!no_text) - visible_message("[src] pukes all over \himself!","You puke all over yourself!") + visible_message("[src] pukes all over [p_them()]self!","You puke all over yourself!") location.add_vomit_floor(src, 1) playsound(location, 'sound/effects/splat.ogg', 50, 1) @@ -1308,4 +1325,4 @@ var/list/slot_equipment_priority = list( \ if(WEST) D = NORTH setDir(D) - spintime -= speed \ No newline at end of file + spintime -= speed diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 9154591c2fe..57b5aeb4996 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -198,3 +198,5 @@ var/list/progressbars = null //for stacking do_after bars var/list/tkgrabbed_objects = list() // Assoc list of items to TK grabs + + var/forced_look = null // This can either be a numerical direction or a soft object reference (UID). It makes the mob always face towards the selected thing. \ No newline at end of file diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 1c4b0f38fbe..458138b9db0 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -263,17 +263,17 @@ state = GRAB_AGGRESSIVE icon_state = "grabbed1" hud.icon_state = "reinforce1" - add_attack_logs(assailant, affecting, "Aggressively grabbed", admin_notify = FALSE) + add_attack_logs(assailant, affecting, "Aggressively grabbed", ATKLOG_ALL) else if(state < GRAB_NECK) if(isslime(affecting)) to_chat(assailant, "You squeeze [affecting], but nothing interesting happens.") return - assailant.visible_message("[assailant] has reinforced \his grip on [affecting] (now neck)!") + assailant.visible_message("[assailant] has reinforced [assailant.p_their()] grip on [affecting] (now neck)!") state = GRAB_NECK icon_state = "grabbed+1" assailant.setDir(get_dir(assailant, affecting)) - add_attack_logs(assailant, affecting, "Neck grabbed", admin_notify = FALSE) + add_attack_logs(assailant, affecting, "Neck grabbed", ATKLOG_ALL) if(!iscarbon(assailant)) affecting.LAssailant = null else @@ -282,11 +282,11 @@ hud.name = "kill" affecting.Stun(10) //10 ticks of ensured grab else if(state < GRAB_UPGRADING) - assailant.visible_message("[assailant] starts to tighten \his grip on [affecting]'s neck!") + assailant.visible_message("[assailant] starts to tighten [assailant.p_their()] grip on [affecting]'s neck!") hud.icon_state = "kill1" state = GRAB_KILL - assailant.visible_message("[assailant] has tightened \his grip on [affecting]'s neck!") + assailant.visible_message("[assailant] has tightened [assailant.p_their()] grip on [affecting]'s neck!") add_attack_logs(assailant, affecting, "Strangled") assailant.next_move = world.time + 10 @@ -332,7 +332,7 @@ if(last_hit_zone == "head") //This checks the hitzone the user has selected. In this specific case, they have the head selected. if(affecting.lying) return - assailant.visible_message("[assailant] thrusts \his head into [affecting]'s skull!") //A visible message for what is going on. + assailant.visible_message("[assailant] thrusts [assailant.p_their()] head into [affecting]'s skull!") //A visible message for what is going on. var/damage = 5 var/obj/item/clothing/hat = attacker.head if(istype(hat)) @@ -354,7 +354,7 @@ if(!affected.internal_bodyparts_by_name["eyes"]) to_chat(assailant, "You cannot locate any eyes on [affecting]!") return - assailant.visible_message("[assailant] presses \his fingers into [affecting]'s eyes!") + assailant.visible_message("[assailant] presses [assailant.p_their()] fingers into [affecting]'s eyes!") to_chat(affecting, "You feel immense pain as digits are being pressed into your eyes!") add_attack_logs(assailant, affecting, "Eye-fucked with their fingers") var/obj/item/organ/internal/eyes/eyes = affected.get_int_organ(/obj/item/organ/internal/eyes) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index a92e548d42b..f26961eace9 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -268,6 +268,8 @@ else . = ..() + mob.setDir(direct) + for(var/obj/item/grab/G in mob) if(G.state == GRAB_NECK) mob.setDir(reverse_dir[direct]) diff --git a/code/modules/mob/new_player/login.dm b/code/modules/mob/new_player/login.dm index bbecb8e6458..99047b0382c 100644 --- a/code/modules/mob/new_player/login.dm +++ b/code/modules/mob/new_player/login.dm @@ -30,11 +30,11 @@ callHook("mob_login", list("client" = client, "mob" = src)) new_player_panel() - + spawn(30) // Annoy the player with polls. establish_db_connection() - if(dbcon.IsConnected() && client.can_vote()) + if(dbcon.IsConnected() && client && client.can_vote()) var/isadmin = 0 if(client && client.holder) isadmin = 1 @@ -46,7 +46,7 @@ break if(newpoll) client.handle_player_polling() - + if(ckey in deadmins) verbs += /client/proc/readmin spawn(40) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index fdd9266c128..274c1602e04 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -4,6 +4,7 @@ var/spawning = 0 //Referenced when you want to delete the new_player later on in the code. var/totalPlayers = 0 //Player counts for the Lobby tab var/totalPlayersReady = 0 + var/tos_consent = FALSE universal_speak = 1 invisibility = 101 @@ -19,7 +20,40 @@ /mob/new_player/verb/new_player_panel() set src = usr - new_player_panel_proc() + + if(handle_tos_consent()) + new_player_panel_proc() + +/mob/new_player/proc/handle_tos_consent() + if(!GLOB.join_tos) + tos_consent = TRUE + return TRUE + + establish_db_connection() + if(!dbcon.IsConnected()) + tos_consent = TRUE + return TRUE + + var/DBQuery/query = dbcon.NewQuery("SELECT * FROM [format_table_name("privacy")] WHERE ckey='[src.ckey]' AND consent=1") + query.Execute() + while(query.NextRow()) + tos_consent = TRUE + return TRUE + + privacy_consent() + return FALSE + +/mob/new_player/proc/privacy_consent() + src << browse(null, "window=playersetup") + var/output = GLOB.join_tos + output += "

I consent" + output += "

I DO NOT consent" + src << browse(output,"window=privacy_consent;size=500x300") + var/datum/browser/popup = new(src, "privacy_consent", "

Privacy Consent
", 500, 400) + popup.set_window_options("can_close=0") + popup.set_content(output) + popup.open(0) + return /mob/new_player/proc/new_player_panel_proc() @@ -43,6 +77,9 @@ output += "

Observe

" + if(GLOB.join_tos) + output += "

Terms of Service

" + if(!IsGuestKey(src.key)) establish_db_connection() @@ -109,11 +146,28 @@ /mob/new_player/Topic(href, href_list[]) if(!client) return 0 + if(href_list["consent_signed"]) + var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss") + var/DBQuery/query = dbcon.NewQuery("REPLACE INTO [format_table_name("privacy")] (ckey, datetime, consent) VALUES ('[ckey]', '[sqltime]', 1)") + query.Execute() + src << browse(null, "window=privacy_consent") + tos_consent = 1 + new_player_panel_proc() + if(href_list["consent_rejected"]) + tos_consent = 0 + to_chat(usr, "You must consent to the terms of service before you can join!") + var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss") + var/DBQuery/query = dbcon.NewQuery("REPLACE INTO [format_table_name("privacy")] (ckey, datetime, consent) VALUES ('[ckey]', '[sqltime]', 0)") + query.Execute() + if(href_list["show_preferences"]) client.prefs.ShowChoices(src) return 1 if(href_list["ready"]) + if(!tos_consent) + to_chat(usr, "You must consent to the terms of service before you can join!") + return 0 ready = !ready new_player_panel_proc() @@ -126,6 +180,9 @@ new_player_panel_proc() if(href_list["observe"]) + if(!tos_consent) + to_chat(usr, "You must consent to the terms of service before you can join!") + return 0 if(alert(src,"Are you sure you wish to observe? You cannot normally join the round after doing this!","Player Setup","Yes","No") == "Yes") if(!client) return 1 @@ -155,8 +212,14 @@ respawnable_list += observer qdel(src) return 1 + if(href_list["tos"]) + privacy_consent() + return 0 if(href_list["late_join"]) + if(!tos_consent) + to_chat(usr, "You must consent to the terms of service before you can join!") + return 0 if(!ticker || ticker.current_state != GAME_STATE_PLAYING) to_chat(usr, "The round is either not ready, or has already finished...") return diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index ace8ab1b621..1cb1bc5f3b0 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -208,3 +208,7 @@ /mob/proc/AdjustWeakened() return + +/mob/proc/adjust_bodytemperature(amount, min_temp = 0, max_temp = INFINITY) + if(bodytemperature > min_temp && bodytemperature < max_temp) + bodytemperature = Clamp(bodytemperature + amount, min_temp, max_temp) \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/command/card.dm b/code/modules/modular_computers/file_system/programs/command/card.dm index 6ebf9228848..b570687569a 100644 --- a/code/modules/modular_computers/file_system/programs/command/card.dm +++ b/code/modules/modular_computers/file_system/programs/command/card.dm @@ -238,7 +238,7 @@ jobdatum = J break if(!jobdatum) - to_chat(usr, "\red No log exists for this job: [t1]") + to_chat(usr, "No log exists for this job: [t1]") return access = jobdatum.get_access() diff --git a/code/modules/ninja/martial_art.dm b/code/modules/ninja/martial_art.dm index b6562d8377d..c97a3e505c3 100644 --- a/code/modules/ninja/martial_art.dm +++ b/code/modules/ninja/martial_art.dm @@ -20,7 +20,7 @@ /obj/item/creeping_widow_injector/attack_self(mob/living/carbon/human/user as mob) if(!used) user.visible_message("You stick the [src]'s needle into your arm and press the button.", \ - "[user] sticks the [src]'s needle \his arm and presses the button.") + "[user] sticks the [src]'s needle [user.p_their()] arm and presses the button.") to_chat(user, "The nanomachines in the [src] flow through your bloodstream.") var/datum/martial_art/ninja_martial_art/N = new/datum/martial_art/ninja_martial_art(null) @@ -98,8 +98,8 @@ D.silent += 1 D.adjustOxyLoss(1) else - D.visible_message("[A] loses \his grip on [D]'s neck!", \ - "[A] loses \his grip on your neck!") + D.visible_message("[A] loses [A.p_their()] grip on [D]'s neck!", \ + "[A] loses [A.p_their()] grip on your neck!") has_choke_hold = 0 return 0 I++ diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index db3f7cddce7..d37506b3d82 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -379,7 +379,7 @@ if(is_hot(P)) if((CLUMSY in user.mutations) && prob(10)) - user.visible_message("[user] accidentally ignites themselves!", \ + user.visible_message("[user] accidentally ignites [user.p_them()]self!", \ "You miss the paper and accidentally light yourself on fire!") user.unEquip(P) user.adjust_fire_stacks(1) diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 6656eefcdf1..08cb7b6555e 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -79,8 +79,8 @@ if(istype(P, /obj/item/lighter/zippo)) class = "" - user.visible_message("[class][user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!", \ - "[class]You hold \the [P] up to \the [src], burning it slowly.") + user.visible_message("[class][user] holds [P] up to [src], it looks like [user.p_theyre()] trying to burn it!", \ + "[class]You hold [P] up to [src], burning it slowly.") spawn(20) if(get_dist(src, user) < 2 && user.get_active_hand() == P && P.lit) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index 1c4c0b357cc..fbbfacb0b8f 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -33,7 +33,7 @@ /obj/item/paperplane/suicide_act(mob/living/user) user.Stun(10) - user.visible_message("[user] jams [name] in \his nose. It looks like \he's trying to commit suicide!") + user.visible_message("[user] jams [name] in [user.p_their()] nose. It looks like [user.p_theyre()] trying to commit suicide!") user.EyeBlurry(6) var/obj/item/organ/internal/eyes/E = user.get_int_organ(/obj/item/organ/internal/eyes) if(E) @@ -73,7 +73,7 @@ else if(is_hot(P)) if(user.disabilities & CLUMSY && prob(10)) - user.visible_message("[user] accidentally ignites themselves!", \ + user.visible_message("[user] accidentally ignites [user.p_them()]self!", \ "You miss [src] and accidentally light yourself on fire!") user.unEquip(P) user.adjust_fire_stacks(1) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index b4446f67e0e..4e3aaefd1eb 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -25,7 +25,7 @@ pressure_resistance = 2 /obj/item/pen/suicide_act(mob/user) - to_chat(viewers(user), "[user] starts scribbling numbers over \himself with the [src.name]! It looks like \he's trying to commit sudoku.") + to_chat(viewers(user), "[user] starts scribbling numbers over [user.p_them()]self with the [name]! It looks like [user.p_theyre()] trying to commit sudoku.") return (BRUTELOSS) /obj/item/pen/blue diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 0ab4db844e9..40759ab792c 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -56,8 +56,8 @@ if(istype(P, /obj/item/lighter/zippo)) class = "" - user.visible_message("[class][user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!", \ - "[class]You hold \the [P] up to \the [src], burning it slowly.") + user.visible_message("[class][user] holds \the [P] up to \the [src], it looks like [user.p_theyre()] trying to burn it!", \ + "[class]You hold [P] up to [src], burning it slowly.") spawn(20) if(get_dist(src, user) < 2 && user.get_active_hand() == P && P.lit) diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index ad67a53cd5b..5a101629c94 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -14,7 +14,7 @@ attack_verb = list("stamped") /obj/item/stamp/suicide_act(mob/user) - user.visible_message("[user] stamps 'VOID' on \his forehead, then promptly falls over, dead.") + user.visible_message("[user] stamps 'VOID' on [user.p_their()] forehead, then promptly falls over, dead.") return (OXYLOSS) /obj/item/stamp/qm diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 7580621834f..25a47f19e04 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -501,9 +501,9 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list( /obj/item/stack/cable_coil/suicide_act(mob/user) if(locate(/obj/structure/stool) in user.loc) - user.visible_message("[user] is making a noose with the [name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is making a noose with the [name]! It looks like [user.p_theyre()] trying to commit suicide.") else - user.visible_message("[user] is strangling \himself with the [name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is strangling [user.p_them()]self with the [name]! It looks like [user.p_theyre()] trying to commit suicide.") return(OXYLOSS) /obj/item/stack/cable_coil/New(loc, length = MAXCOIL, var/paramcolor = null) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index ff7ee7b6784..3bc2b5bc39b 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -89,7 +89,7 @@ to_chat(user, "The charge meter reads [round(percent() )]%.") /obj/item/stock_parts/cell/suicide_act(mob/user) - to_chat(viewers(user), "[user] is licking the electrodes of the [src]! It looks like \he's trying to commit suicide.") + to_chat(viewers(user), "[user] is licking the electrodes of the [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) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 3eac3486791..df12267015f 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -726,7 +726,7 @@ update() /obj/item/light/suicide_act(mob/living/carbon/human/user) - user.visible_message("[user] touches \the [src], burning their hands off!", "You touch \the [src], burning your hands off!") + user.visible_message("[user] touches [src], burning [user.p_their()] hands off!", "You touch [src], burning your hands off!") for(var/oname in list("l_hand", "r_hand")) var/obj/item/organ/external/limb = user.get_organ(oname) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 70cd75bf85d..a6c86d3f2ef 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -121,7 +121,7 @@ if(radio_controller) radio_controller.remove_object(src, frequency) radio_connection = null - msg_admin_attack("Emitter deleted at ([x],[y],[z] - [ADMIN_JMP(src)])", 0, 1) + msg_admin_attack("Emitter deleted at ([x],[y],[z] - [ADMIN_JMP(src)])", ATKLOG_FEW) log_game("Emitter deleted at ([x],[y],[z])") investigate_log("deleted at ([x],[y],[z])","singulo") return ..() diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index 9a911400fd5..0520630dcac 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -10,6 +10,7 @@ move_self = 1 //Do we move on our own? grav_pull = 5 //How many tiles out do we pull? consume_range = 6 //How many tiles out do we eat + gender = FEMALE /obj/singularity/narsie/large name = "Nar-Sie" diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index b8570de2c78..42fbb784f49 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -227,7 +227,7 @@ active = !active investigate_log("turned [active?"ON":"OFF"] by [usr ? usr.key : "outside forces"]","singulo") if(active) - msg_admin_attack("PA Control Computer turned ON by [key_name_admin(usr)]",0,1) + msg_admin_attack("PA Control Computer turned ON by [key_name_admin(usr)]", ATKLOG_FEW) log_game("PA Control Computer turned ON by [key_name(usr)] in ([x],[y],[z])") use_log += text("\[[time_stamp()]\] [key_name(usr)] has turned on the PA Control Computer.") if(active) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index e69abc5b00f..27229a2d8b3 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -224,8 +224,6 @@ /obj/machinery/power/smes/proc/chargedisplay() return round(5.5*charge/(capacity ? capacity : 5e6)) -#define SMESRATE 0.05 - /obj/machinery/power/smes/process() if(stat & BROKEN) return diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index be17b3f65db..43d418aadf7 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -244,7 +244,7 @@ ui_interact(user) /obj/machinery/power/supermatter_shard/attack_hand(mob/user as mob) - user.visible_message("\The [user] reaches out and touches \the [src], inducing a resonance... \his body starts to glow and bursts into flames before flashing into ash.",\ + user.visible_message("\The [user] reaches out and touches \the [src], inducing a resonance... [user.p_their(TRUE)] body starts to glow and bursts into flames before flashing into ash.",\ "You reach out and touch \the [src]. Everything starts burning and all you can hear is ringing. Your last thought is \"That was not a wise decision.\"",\ "You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.") @@ -309,7 +309,7 @@ /obj/machinery/power/supermatter_shard/Bumped(atom/AM as mob|obj) if(istype(AM, /mob/living)) - AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.",\ + AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... [AM.p_their(TRUE)] body starts to glow and catch flame before flashing into ash.",\ "You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"",\ "You hear an unearthly noise as a wave of heat washes over you.") else if(isobj(AM) && !istype(AM, /obj/effect)) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index b54d5bff21f..51bf515ca1e 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -347,7 +347,7 @@ obj/item/gun/proc/newshot() return if(user == target) - target.visible_message("[user] sticks [src] in their mouth, ready to pull the trigger...", \ + target.visible_message("[user] sticks [src] in [user.p_their()] mouth, ready to pull the trigger...", \ "You stick [src] in your mouth, ready to pull the trigger...") else target.visible_message("[user] points [src] at [target]'s head, ready to pull the trigger...", \ diff --git a/code/modules/projectiles/guns/dartgun.dm b/code/modules/projectiles/guns/dartgun.dm index 5ae089d5522..c279abdc5c1 100644 --- a/code/modules/projectiles/guns/dartgun.dm +++ b/code/modules/projectiles/guns/dartgun.dm @@ -178,7 +178,8 @@ else M.LAssailant = user - add_attack_logs(user, M, "Shot with dartgun containing [R]", !!M.ckey) + add_attack_logs(user, M, "Shot with dartgun containing [R]") + if(D.reagents) D.reagents.trans_to(M, 15) to_chat(M, "You feel a slight prick.") diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index fd6c14c4e6b..795b5942845 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -146,10 +146,10 @@ /obj/item/gun/energy/suicide_act(mob/user) if(can_shoot()) - user.visible_message("[user] is putting the barrel of the [name] in \his mouth. It looks like \he's trying to commit suicide.") + user.visible_message("[user] is putting the barrel of the [name] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide.") sleep(25) if(user.l_hand == src || user.r_hand == src) - user.visible_message("[user] melts \his face off with the [name]!") + user.visible_message("[user] melts [user.p_their()] face off with the [name]!") playsound(loc, fire_sound, 50, 1, -1) var/obj/item/ammo_casing/energy/shot = ammo_type[select] power_supply.use(shot.e_cost) @@ -159,7 +159,7 @@ user.visible_message("[user] panics and starts choking to death!") return(OXYLOSS) else - user.visible_message("[user] is pretending to blow \his brains out with the [name]! It looks like \he's trying to commit suicide!") + user.visible_message("[user] is pretending to blow [user.p_their()] brains out with the [name]! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/weapons/empty.ogg', 50, 1, -1) return (OXYLOSS) diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 7d2568a7199..7559fc1a591 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -128,7 +128,7 @@ /obj/item/gun/energy/kinetic_accelerator/suicide_act(mob/user) if(!suppressed) playsound(loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) - user.visible_message("[user] cocks the [name] and pretends to blow \his brains out! It looks like \he's trying to commit suicide!") + user.visible_message("[user] cocks the [name] and pretends to blow [user.p_their()] brains out! It looks like [user.p_theyre()] trying to commit suicide!") shoot_live_shot() return (OXYLOSS) diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index a1840663350..94f397b45bf 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -76,6 +76,6 @@ return /obj/item/gun/magic/suicide_act(mob/user) - user.visible_message("[user] is twisting the [name] above \his head, releasing a magical blast! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is twisting the [name] above [user.p_their()] head, releasing a magical blast! It looks like [user.p_theyre()] trying to commit suicide.") playsound(loc, fire_sound, 50, 1, -1) return FIRELOSS diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 1a8e5e45946..cae9d11cbb6 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -48,9 +48,9 @@ update_icon() /obj/item/gun/magic/wand/proc/zap_self(mob/living/user) - user.visible_message("[user] zaps \himself with [src].") + user.visible_message("[user] zaps [user.p_them()]self with [src].") playsound(user, fire_sound, 50, 1) - user.create_attack_log("[key_name(user)] zapped \himself with a [src]") + user.create_attack_log("[key_name(user)] zapped [user.p_them()]self with a [src]") ///////////////////////////////////// //WAND OF DEATH diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm index f6881208a32..89cceab6cd3 100644 --- a/code/modules/projectiles/guns/misc/blastcannon.dm +++ b/code/modules/projectiles/guns/misc/blastcannon.dm @@ -76,7 +76,7 @@ var/heavy = power * 0.2 var/medium = power * 0.5 var/light = power - user.visible_message("[user] opens [bomb] on \his [name] and fires a blast wave at [target]!","You open [bomb] on your [name] and fire a blast wave at [target]!") + user.visible_message("[user] opens [bomb] on [user.p_their()] [name] and fires a blast wave at [target]!","You open [bomb] on your [name] and fire a blast wave at [target]!") playsound(user, "explosion", 100, 1) var/turf/starting = get_turf(user) var/turf/targturf = get_turf(target) diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index 2b8ff6a59f8..0ff5e57e7c5 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -137,17 +137,17 @@ /obj/item/gun/projectile/suicide_act(mob/user) if(chambered && chambered.BB && !chambered.BB.nodamage) - user.visible_message("[user] is putting the barrel of the [name] in \his mouth. It looks like \he's trying to commit suicide.") + user.visible_message("[user] is putting the barrel of the [name] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide.") sleep(25) if(user.l_hand == src || user.r_hand == src) process_fire(user, user, 0, zone_override = "head") - user.visible_message("[user] blows \his brains out with the [name]!") + user.visible_message("[user] blows [user.p_their()] brains out with the [name]!") return(BRUTELOSS) else user.visible_message("[user] panics and starts choking to death!") return(OXYLOSS) else - user.visible_message("[user] is pretending to blow \his brains out with the [name]! It looks like \he's trying to commit suicide!") + user.visible_message("[user] is pretending to blow [user.p_their()] brains out with the [name]! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/weapons/empty.ogg', 50, 1, -1) return (OXYLOSS) diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 502c69bed9c..c4c6f76a963 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -244,7 +244,7 @@ if(zone == "head" || zone == "eyes" || zone == "mouth") shoot_self(user, zone) else - user.visible_message("[user.name] cowardly fires [src] at \his [zone]!", "You cowardly fire [src] at your [zone]!", "You hear a gunshot!") + user.visible_message("[user.name] cowardly fires [src] at [user.p_their()] [zone]!", "You cowardly fire [src] at your [zone]!", "You hear a gunshot!") return user.visible_message("*click*") @@ -252,7 +252,7 @@ /obj/item/gun/projectile/revolver/russian/proc/shoot_self(mob/living/carbon/human/user, affecting = "head") user.apply_damage(300, BRUTE, affecting) - user.visible_message("[user.name] fires [src] at \his head!", "You fire [src] at your head!", "You hear a gunshot!") + user.visible_message("[user.name] fires [src] at [user.p_their()] head!", "You fire [src] at your head!", "You hear a gunshot!") /obj/item/gun/projectile/revolver/capgun name = "cap gun" diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index a378e291e7c..e38a42ff88f 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -114,13 +114,18 @@ "[L] is hit by \a [src][organ_hit_text]!") //X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter var/reagent_note + var/has_reagents = FALSE if(reagents && reagents.reagent_list) reagent_note = " REAGENTS:" for(var/datum/reagent/R in reagents.reagent_list) reagent_note += R.id + " (" reagent_note += num2text(R.volume) + ") " + has_reagents = TRUE if(!log_override && firer && original) - add_attack_logs(firer, L, "Shot with a [type] (potentially containing [reagent_note])") + if(has_reagents) + add_attack_logs(firer, L, "Shot with a [type] (containing [reagent_note])") + else + add_attack_logs(firer, L, "Shot with a [type]") return L.apply_effects(stun, weaken, paralyze, irradiate, slur, stutter, eyeblur, drowsy, blocked, stamina, jitter) /obj/item/projectile/proc/get_splatter_blockage(var/turf/step_over, var/atom/target, var/splatter_dir, var/target_loca) //Check whether the place we want to splatter blood is blocked (i.e. by windows). diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index becada9f19e..761fb50179c 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -77,7 +77,7 @@ /obj/item/projectile/beam/lasertag name = "laser tag beam" icon_state = "omnilaser" - hitsound = null + hitsound = 'sound/weapons/tap.ogg' damage = 0 damage_type = STAMINA flag = "laser" diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 4521dc8d7ba..3fe2277ed3b 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -32,7 +32,7 @@ else G.death() - visible_message("[G] topples backwards as the death bolt impacts them!") + visible_message("[G] topples backwards as the death bolt impacts [G.p_them()]!") /obj/item/projectile/magic/fireball/Range() var/turf/T1 = get_step(src,turn(dir, -45)) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 6ac21128e56..2c774b7f3dd 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -8,14 +8,14 @@ /obj/item/projectile/ion/on_hit(var/atom/target, var/blocked = 0) ..() - empulse(target, 1, 1) + empulse(target, 1, 1, 1) return 1 /obj/item/projectile/ion/weak /obj/item/projectile/ion/weak/on_hit(atom/target, blocked = 0) ..() - empulse(target, 0, 0) + empulse(target, 0, 0, 1) return 1 /obj/item/projectile/bullet/gyro @@ -137,7 +137,7 @@ if(prob(15)) M.apply_effect((rand(30,80)),IRRADIATE) M.Weaken(5) - M.visible_message("[M] writhes in pain as \his vacuoles boil.", "You writhe in pain as your vacuoles boil!", "You hear the crunching of leaves.") + M.visible_message("[M] writhes in pain as [M.p_their()] vacuoles boil.", "You writhe in pain as your vacuoles boil!", "You hear the crunching of leaves.") if(prob(35)) if(prob(80)) randmutb(M) diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index e589936a935..d4d232d2ed7 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -1,7 +1,3 @@ -#define SOLID 1 -#define LIQUID 2 -#define GAS 3 - /obj/machinery/chem_dispenser name = "chem dispenser" density = 1 diff --git a/code/modules/reagents/chemistry/reagents/drugs.dm b/code/modules/reagents/chemistry/reagents/drugs.dm index 6a4ede5fe50..a2bd35ae75a 100644 --- a/code/modules/reagents/chemistry/reagents/drugs.dm +++ b/code/modules/reagents/chemistry/reagents/drugs.dm @@ -208,7 +208,7 @@ M.reagents.add_reagent("jagged_crystals", 5) else if(effect <= 7) M.emote("scream") - M.visible_message("[M] nervously scratches at their skin!") + M.visible_message("[M] nervously scratches at [M.p_their()] skin!") M.Jitter(10) M.adjustBruteLoss(5) M.emote("twitch_s") @@ -315,7 +315,7 @@ var/effect = ..() if(severity == 1) if(effect <= 2) - M.visible_message("[M] can't seem to control their legs!") + M.visible_message("[M] can't seem to control [M.p_their()] legs!") M.AdjustConfused(20) M.Weaken(4) else if(effect <= 4) @@ -356,7 +356,7 @@ head_organ.f_style = "Very Long Beard" H.update_hair() H.update_fhair() - H.visible_message("[H] has a wild look in their eyes!") + H.visible_message("[H] has a wild look in [H.p_their()] eyes!") if(check < 60) M.SetParalysis(0) M.SetStunned(0) @@ -368,7 +368,7 @@ M.AdjustConfused(10) if(check < 8) M.reagents.add_reagent(pick("methamphetamine", "crank", "neurotoxin"), rand(1,5)) - M.visible_message("[M] scratches at something under their skin!") + M.visible_message("[M] scratches at something under [M.p_their()] skin!") M.adjustBruteLoss(5) else if(check < 16) M.AdjustHallucinate(30) @@ -427,7 +427,7 @@ M.reagents.add_reagent("jagged_crystals", 5) else if(effect <= 7) M.emote("scream") - M.visible_message("[M] tears at their own skin!") + M.visible_message("[M] tears at [M.p_their()] own skin!") M.adjustBruteLoss(5) M.reagents.add_reagent("jagged_crystals", 5) M.emote("twitch") @@ -541,7 +541,7 @@ var/effect = ..() if(severity == 1) if(effect <= 2) - M.visible_message("[M] can't seem to control their legs!") + M.visible_message("[M] can't seem to control [M.p_their()] legs!") M.AdjustConfused(33) M.Weaken(2) else if(effect <= 4) diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm index ada22d5b139..d1b44798b85 100644 --- a/code/modules/reagents/chemistry/reagents/medicine.dm +++ b/code/modules/reagents/chemistry/reagents/medicine.dm @@ -73,7 +73,7 @@ M.visible_message("[M] suddenly and violently vomits!") M.fakevomit(no_text = 1) else if(effect <= 5) - M.visible_message("[M] staggers and drools, their eyes bloodshot!") + M.visible_message("[M] staggers and drools, [M.p_their()] eyes bloodshot!") M.Dizzy(8) M.Weaken(4) if(effect <= 15) @@ -115,7 +115,11 @@ M.adjustToxLoss(-3) M.adjustBruteLoss(-12) M.adjustFireLoss(-12) - M.status_flags &= ~DISFIGURED + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/obj/item/organ/external/head/head = H.get_organ("head") + if(head) + head.disfigured = FALSE ..() /datum/reagent/medicine/rezadone @@ -131,7 +135,11 @@ M.adjustCloneLoss(-1) //What? We just set cloneloss to 0. Why? Simple; this is so external organs properly unmutate. M.adjustBruteLoss(-1) M.adjustFireLoss(-1) - M.status_flags &= ~DISFIGURED + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/obj/item/organ/external/head/head = H.get_organ("head") + if(head) + head.disfigured = FALSE ..() /datum/reagent/medicine/rezadone/overdose_process(mob/living/M, severity) @@ -277,7 +285,7 @@ if(severity == 1) //lesser M.stuttering += 1 if(effect <= 1) - M.visible_message("[M] suddenly cluches their gut!") + M.visible_message("[M] suddenly cluches [M.p_their()] gut!") M.emote("scream") M.Stun(4) M.Weaken(4) @@ -293,7 +301,7 @@ M.Jitter(30) else if(severity == 2) // greater if(effect <= 2) - M.visible_message("[M] suddenly cluches their gut!") + M.visible_message("[M] suddenly cluches [M.p_their()] gut!") M.emote("scream") M.Stun(7) M.Weaken(7) @@ -446,7 +454,7 @@ M.visible_message("[M] suddenly and violently vomits!") M.fakevomit(no_text = 1) else if(effect <= 5) - M.visible_message("[M.name] staggers and drools, their eyes bloodshot!") + M.visible_message("[M.name] staggers and drools, [M.p_their()] eyes bloodshot!") M.Dizzy(2) M.Weaken(3) if(effect <= 15) @@ -597,7 +605,7 @@ M.visible_message("[M] suddenly and violently vomits!") M.fakevomit(no_text = 1) else if(effect <= 5) - M.visible_message("[M] staggers and drools, their eyes bloodshot!") + M.visible_message("[M] staggers and drools, [M.p_their()] eyes bloodshot!") M.Dizzy(2) M.Weaken(3) if(effect <= 15) diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm index 8cad5400c02..7bff61218c6 100644 --- a/code/modules/reagents/chemistry/reagents/toxins.dm +++ b/code/modules/reagents/chemistry/reagents/toxins.dm @@ -557,7 +557,7 @@ M.adjustBruteLoss(5) M.Weaken(5) M.AdjustJitter(6) - M.visible_message("[M] falls to the floor, scratching themselves violently!") + M.visible_message("[M] falls to the floor, scratching [M.p_them()]self violently!") M.emote("scream") ..() @@ -611,11 +611,11 @@ return if(!H.unacidable) - var/obj/item/organ/external/affecting = H.get_organ("head") - affecting.receive_damage(0, 75) + var/obj/item/organ/external/head/affecting = H.get_organ("head") + if(affecting) + affecting.receive_damage(0, 75) H.UpdateDamageIcon() H.emote("scream") - H.status_flags |= DISFIGURED /datum/reagent/facid/reaction_obj(obj/O, volume) if((istype(O, /obj/item) || istype(O, /obj/structure/glowshroom))) @@ -947,8 +947,7 @@ /datum/reagent/glyphosate/reaction_obj(obj/O, volume) if(istype(O,/obj/structure/alien/weeds)) var/obj/structure/alien/weeds/alien_weeds = O - alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast - alien_weeds.healthcheck() + alien_weeds.take_damage(rand(15, 35), BRUTE, 0) // Kills alien weeds pretty fast else if(istype(O, /obj/structure/glowshroom)) //even a small amount is enough to kill it qdel(O) else if(istype(O, /obj/structure/spacevine)) @@ -1016,7 +1015,7 @@ M.Drowsy(10) if(11) M.Paralyse(10) - M.visible_message("[M] seizes up and falls limp, their eyes dead and lifeless...") //so you can't trigger deathgasp emote on people. Edge case, but necessary. + M.visible_message("[M] seizes up and falls limp, [M.p_their()] eyes dead and lifeless...") //so you can't trigger deathgasp emote on people. Edge case, but necessary. if(12 to 60) M.Paralyse(10) if(61 to INFINITY) diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index aa5e16adc04..4df7a525b88 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -334,7 +334,7 @@ /datum/chemical_reaction/slimeoverload/on_reaction(datum/reagents/holder, created_volume) feedback_add_details("slime_cores_used","[type]") - empulse(get_turf(holder.my_atom), 3, 7) + empulse(get_turf(holder.my_atom), 3, 7, 1) /datum/chemical_reaction/slimecell diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index 057a339649c..ad8b3438ee4 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -85,7 +85,7 @@ var/datum/reagent/injected = chemical_reagents_list[reagent_ids[mode]] var/contained = injected.name var/trans = R.trans_to(M, amount_per_transfer_from_this) - add_attack_logs(M, user, "Injected with [name] containing [contained], transfered [trans] units", !!M.ckey) + add_attack_logs(M, user, "Injected with [name] containing [contained], transfered [trans] units") M.LAssailant = user to_chat(user, "[trans] units injected. [R.total_volume] units remaining.") return diff --git a/code/modules/reagents/reagent_containers/glass_containers.dm b/code/modules/reagents/reagent_containers/glass_containers.dm index 39d3babf4bc..d20ef6f82ee 100644 --- a/code/modules/reagents/reagent_containers/glass_containers.dm +++ b/code/modules/reagents/reagent_containers/glass_containers.dm @@ -42,7 +42,8 @@ /obj/machinery/constructable_frame, /obj/machinery/icemachine, /obj/item/bombcore/chemical, - /obj/machinery/vending) + /obj/machinery/vending, + /obj/machinery/fishtank) /obj/item/reagent_containers/glass/New() ..() @@ -82,7 +83,7 @@ for(var/datum/reagent/R in reagents.reagent_list) injected += R.name var/contained = english_list(injected) - add_attack_logs(M, user, "Splashed with [name] containing [contained]", !!M.ckey) + add_attack_logs(M, user, "Splashed with [name] containing [contained]", !!M.ckey ? null : ATKLOG_ALL) if(!iscarbon(user)) M.LAssailant = null else diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index e405dbe169c..02ab4408acb 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -49,14 +49,14 @@ user.newtonian_move(get_dir(A, user)) if(reagents.has_reagent("sacid")) - msg_admin_attack("[key_name_admin(user)] fired sulphuric acid from \a [src].") - log_game("[key_name(user)] fired sulphuric acid from \a [src].") + msg_admin_attack("[key_name_admin(user)] fired sulphuric acid from \a [src] at [COORD(user)].", ATKLOG_FEW) + log_game("[key_name(user)] fired sulphuric acid from \a [src] at [COORD(user)].") if(reagents.has_reagent("facid")) - msg_admin_attack("[key_name_admin(user)] fired fluorosulfuric acid from \a [src].") - log_game("[key_name(user)] fired fluorosulfuric Acid from \a [src].") + msg_admin_attack("[key_name_admin(user)] fired fluorosulfuric acid from \a [src] at [COORD(user)].", ATKLOG_FEW) + log_game("[key_name(user)] fired fluorosulfuric Acid from \a [src] at [COORD(user)].") if(reagents.has_reagent("lube")) - msg_admin_attack("[key_name_admin(user)] fired space lube from \a [src].") - log_game("[key_name(user)] fired space lube from \a [src].") + msg_admin_attack("[key_name_admin(user)] fired space lube from \a [src] at [COORD(user)].") + log_game("[key_name(user)] fired space lube from \a [src] at [COORD(user)].") return diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index a80c4142d87..bcbcad6bc98 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -9,6 +9,7 @@ var/tank_volume = 1000 //In units, how much the dispenser can hold var/reagent_id = "water" //The ID of the reagent that the dispenser uses + var/lastrigger = "" // The last person to rig this fuel tank - Stored with the object. Only the last person matter for investigation /obj/structure/reagent_dispensers/attackby(obj/item/W, mob/user, params) return @@ -77,11 +78,16 @@ ..() if(!QDELETED(src)) //wasn't deleted by the projectile's effects. if(!P.nodamage && ((P.damage_type == BURN) || (P.damage_type == BRUTE))) - message_admins("[key_name_admin(P.firer)] triggered a fueltank explosion.") - log_game("[key_name(P.firer)] triggered a fueltank explosion.") + message_admins("[key_name_admin(P.firer)] triggered a fueltank explosion with [P.name] at [COORD(loc)] ") + log_game("[key_name(P.firer)] triggered a fueltank explosion with [P.name] at [COORD(loc)]") + investigate_log("[key_name(P.firer)] triggered a fueltank explosion with [P.name] at [COORD(loc)]", INVESTIGATE_BOMB) boom() -/obj/structure/reagent_dispensers/fueltank/boom() +/obj/structure/reagent_dispensers/fueltank/boom(var/rigtrigger = FALSE) // Prevent case where someone who rigged the tank is blamed for the explosion when the rig isn't what triggered the explosion + if(rigtrigger == TRUE) // If the explosion is triggered by an assembly holder + message_admins("A fueltank, last rigged by [lastrigger], exploded at [COORD(loc)]") // Then admin is informed of the last person who rigged the fuel tank + log_game("A fueltank, last rigged by [lastrigger], exploded at [COORD(loc)]") + investigate_log("A fueltank, last rigged by [lastrigger], exploded at [COORD(loc)]", INVESTIGATE_BOMB) explosion(loc, 0, 1, 5, 7, 10, flame_range = 5) qdel(src) @@ -111,6 +117,7 @@ usr.visible_message("[usr] detaches [rig] from [src].", "You detach [rig] from [src].") rig.forceMove(get_turf(usr)) rig = null + lastrigger = null overlays.Cut() /obj/structure/reagent_dispensers/fueltank/attackby(obj/item/I, mob/user, params) @@ -124,9 +131,11 @@ var/obj/item/assembly_holder/H = I if(istype(H.a_left, /obj/item/assembly/igniter) || istype(H.a_right, /obj/item/assembly/igniter)) - msg_admin_attack("[key_name_admin(user)] rigged a fueltank for explosion (JMP)") - log_game("[key_name(user)] rigged fueltank a fueltank for explosion at [loc.x], [loc.y], [loc.z]") + msg_admin_attack("[key_name_admin(user)] rigged [src.name] with [I.name] for explosion (JMP)", ATKLOG_FEW) + log_game("[key_name(user)] rigged [src.name] with [I.name] for explosion at [COORD(loc)]") + investigate_log("[key_name(user)] rigged [src.name] with [I.name] for explosion at [COORD(loc)]", INVESTIGATE_BOMB) + lastrigger = "[key_name(user)]" rig = H user.drop_item() H.forceMove(src) @@ -146,13 +155,14 @@ to_chat(user, "Your [W] is already full!") return reagents.trans_to(W, W.max_fuel) - user.visible_message("[user] refills \his [W].", "You refill [W].") + user.visible_message("[user] refills [user.p_their()] [W].", "You refill [W].") playsound(src, 'sound/effects/refill.ogg', 50, 1) W.update_icon() else - user.visible_message("[user] catastrophically fails at refilling \his [W]!", "That was stupid of you.") - message_admins("[key_name_admin(user)] triggered a fueltank explosion.") - log_game("[key_name(user)] triggered a fueltank explosion.") + user.visible_message("[user] catastrophically fails at refilling [user.p_their()] [W]!", "That was stupid of you.") + message_admins("[key_name_admin(user)] triggered a fueltank explosion at [COORD(loc)]") + log_game("[key_name(user)] triggered a fueltank explosion at [COORD(loc)]") + investigate_log("[key_name(user)] triggered a fueltank explosion at [COORD(loc)]", INVESTIGATE_BOMB) boom() else ..() diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index ba193744467..3658846a696 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -250,8 +250,6 @@ var/obj/structure/disposaloutlet/P = new /obj/structure/disposaloutlet(src.loc) src.transfer_fingerprints_to(P) P.dir = dir - var/obj/structure/disposalpipe/trunk/Trunk = CP - Trunk.linked = P else if(ptype==8) // Disposal outlet diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 3907ed052a6..00b3b06a3a5 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -36,19 +36,19 @@ update() /obj/machinery/disposal/proc/trunk_check() - trunk = locate() in src.loc - if(!trunk) + var/obj/structure/disposalpipe/trunk/T = locate() in loc + if(!T) mode = 0 flush = 0 else mode = initial(mode) flush = initial(flush) - trunk.linked = src // link the pipe trunk to self + T.nicely_link_to_other_stuff(src) /obj/machinery/disposal/Destroy() eject() if(trunk) - trunk.linked = null + trunk.remove_trunk_links() return ..() /obj/machinery/disposal/Initialize() @@ -133,7 +133,7 @@ for(var/mob/C in viewers(src)) C.show_message("[GM.name] has been placed in the [src] by [user].", 3) qdel(G) - add_attack_logs(usr, GM, "Disposal'ed", !!GM.ckey) + add_attack_logs(usr, GM, "Disposal'ed", !!GM.ckey ? null : ATKLOG_ALL) return if(!I) @@ -179,7 +179,7 @@ msg = "[user.name] stuffs [target.name] into the [src]!" to_chat(user, "You stuff [target.name] into the [src]!") - add_attack_logs(user, target, "Disposal'ed", !!target.ckey) + add_attack_logs(user, target, "Disposal'ed", !!target.ckey ? null : ATKLOG_ALL) else return target.forceMove(src) @@ -1149,24 +1149,39 @@ if(D.trunk == src) D.go_out() D.trunk = null - - linked = null + remove_trunk_links() return ..() /obj/structure/disposalpipe/trunk/proc/getlinked() - linked = null var/obj/machinery/disposal/D = locate() in src.loc if(D) - linked = D - if(!D.trunk) - D.trunk = src - + nicely_link_to_other_stuff(D) + return var/obj/structure/disposaloutlet/O = locate() in src.loc if(O) - linked = O + nicely_link_to_other_stuff(O) - update() - return +/obj/structure/disposalpipe/trunk/proc/remove_trunk_links() //disposals is well-coded + if(!linked) + return + else if(istype(linked, /obj/machinery/disposal)) //jk lol + var/obj/machinery/disposal/D = linked + D.trunk = null + else if(istype(linked, /obj/structure/disposaloutlet)) //God fucking damn it + var/obj/structure/disposaloutlet/D = linked + D.linkedtrunk = null + linked = null + +/obj/structure/disposalpipe/trunk/proc/nicely_link_to_other_stuff(obj/O) + remove_trunk_links() //Breaks the connections between this trunk and the linked machinery so we don't get sent to nullspace or some shit like that + if(istype(O, /obj/machinery/disposal)) + var/obj/machinery/disposal/D = O + linked = D + D.trunk = src + else if(istype(O, /obj/structure/disposaloutlet)) + var/obj/structure/disposaloutlet/D = O + linked = D + D.linkedtrunk = src // Override attackby so we disallow trunkremoval when somethings ontop /obj/structure/disposalpipe/trunk/attackby(var/obj/item/I, var/mob/user, params) @@ -1271,77 +1286,72 @@ var/obj/structure/disposalpipe/trunk/linkedtrunk var/mode = 0 - New() - ..() - - spawn(1) - target = get_ranged_target_turf(src, dir, 10) - - - linkedtrunk = locate() in src.loc - if(linkedtrunk) - linkedtrunk.linked = src +/obj/structure/disposaloutlet/New() + ..() + spawn(1) + target = get_ranged_target_turf(src, dir, 10) + var/obj/structure/disposalpipe/trunk/T = locate() in loc + if(T) + T.nicely_link_to_other_stuff(src) // expel the contents of the holder object, then delete it // called when the holder exits the outlet - proc/expel(var/obj/structure/disposalholder/H, animation = 1) - - if(animation) - flick("outlet-open", src) - playsound(src, 'sound/machines/warning-buzzer.ogg', 50, 0, 0) - sleep(20) //wait until correct animation frame - playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) - - if(H) - for(var/atom/movable/AM in H) - AM.forceMove(loc) - AM.pipe_eject(dir) - if(!istype(AM,/mob/living/silicon/robot/drone)) //Drones keep smashing windows from being fired out of chutes. Bad for the station. ~Z - spawn(5) - if(AM) - AM.throw_at(target, 3, 1) - H.vent_gas(src.loc) - qdel(H) +/obj/structure/disposaloutlet/proc/expel(var/obj/structure/disposalholder/H, animation = 1) + if(animation) + flick("outlet-open", src) + playsound(src, 'sound/machines/warning-buzzer.ogg', 50, 0, 0) + sleep(20) //wait until correct animation frame + playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) + if(H) + for(var/atom/movable/AM in H) + AM.forceMove(loc) + AM.pipe_eject(dir) + if(!istype(AM,/mob/living/silicon/robot/drone)) //Drones keep smashing windows from being fired out of chutes. Bad for the station. ~Z + spawn(5) + if(AM) + AM.throw_at(target, 3, 1) + H.vent_gas(src.loc) + qdel(H) - attackby(var/obj/item/I, var/mob/user, params) - if(!I || !user) +/obj/structure/disposaloutlet/attackby(var/obj/item/I, var/mob/user, params) + if(!I || !user) + return + src.add_fingerprint(user) + if(istype(I, /obj/item/screwdriver)) + if(mode==0) + mode=1 + playsound(src.loc, I.usesound, 50, 1) + to_chat(user, "You remove the screws around the power connection.") + return + else if(mode==1) + mode=0 + playsound(src.loc, I.usesound, 50, 1) + to_chat(user, "You attach the screws around the power connection.") + return + else if(istype(I,/obj/item/weldingtool) && mode==1) + var/obj/item/weldingtool/W = I + if(W.remove_fuel(0,user)) + playsound(src.loc, W.usesound, 100, 1) + to_chat(user, "You start slicing the floorweld off the disposal outlet.") + if(do_after(user, 20 * W.toolspeed, target = src)) + if(!src || !W.isOn()) return + to_chat(user, "You sliced the floorweld off the disposal outlet.") + var/obj/structure/disposalconstruct/C = new (src.loc) + src.transfer_fingerprints_to(C) + C.ptype = 7 // 7 = outlet + C.update() + C.anchored = 1 + C.density = 1 + qdel(src) + return + else + to_chat(user, "You need more welding fuel to complete this task.") return - src.add_fingerprint(user) - if(istype(I, /obj/item/screwdriver)) - if(mode==0) - mode=1 - playsound(src.loc, I.usesound, 50, 1) - to_chat(user, "You remove the screws around the power connection.") - return - else if(mode==1) - mode=0 - playsound(src.loc, I.usesound, 50, 1) - to_chat(user, "You attach the screws around the power connection.") - return - else if(istype(I,/obj/item/weldingtool) && mode==1) - var/obj/item/weldingtool/W = I - if(W.remove_fuel(0,user)) - playsound(src.loc, W.usesound, 100, 1) - to_chat(user, "You start slicing the floorweld off the disposal outlet.") - if(do_after(user, 20 * W.toolspeed, target = src)) - if(!src || !W.isOn()) return - to_chat(user, "You sliced the floorweld off the disposal outlet.") - var/obj/structure/disposalconstruct/C = new (src.loc) - src.transfer_fingerprints_to(C) - C.ptype = 7 // 7 = outlet - C.update() - C.anchored = 1 - C.density = 1 - qdel(src) - return - else - to_chat(user, "You need more welding fuel to complete this task.") - return /obj/structure/disposaloutlet/Destroy() if(linkedtrunk) - linkedtrunk.linked = null + linkedtrunk.remove_trunk_links() return ..() // called when movable is expelled from a disposal pipe or outlet diff --git a/code/modules/research/designs/bluespace_designs.dm b/code/modules/research/designs/bluespace_designs.dm index 3c555c40849..7f5377741e4 100644 --- a/code/modules/research/designs/bluespace_designs.dm +++ b/code/modules/research/designs/bluespace_designs.dm @@ -57,7 +57,7 @@ id = "telepad_beacon" req_tech = list("programming" = 5, "bluespace" = 4, "engineering" = 4, "plasmatech" = 4) build_type = PROTOLATHE - materials = list (MAT_METAL = 2000, MAT_GLASS = 1750, MAT_SILVER = 500) + materials = list(MAT_METAL = 2000, MAT_GLASS = 1750, MAT_SILVER = 500) build_path = /obj/item/telepad_beacon category = list("Bluespace") @@ -67,6 +67,6 @@ id = "beacon" req_tech = list("bluespace" = 1) build_type = PROTOLATHE - materials = list (MAT_METAL = 150, MAT_GLASS = 100) + materials = list(MAT_METAL = 150, MAT_GLASS = 100) build_path = /obj/item/radio/beacon category = list("Bluespace") diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 9d973c1ed74..49a1a7d0eba 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -181,7 +181,7 @@ id = "scalpel_manager" req_tech = list("biotech" = 4, "materials" = 7, "magnets" = 5, "programming" = 4) build_type = PROTOLATHE - materials = list (MAT_METAL = 2000, MAT_GLASS = 1500, MAT_SILVER = 1000, MAT_GOLD = 1000, MAT_DIAMOND = 1000) + materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_SILVER = 1000, MAT_GOLD = 1000, MAT_DIAMOND = 1000) build_path = /obj/item/scalpel/laser/manager category = list("Medical") @@ -271,13 +271,24 @@ build_path = /obj/item/organ/internal/cyberimp/mouth/breathing_tube category = list("Misc", "Medical") +/datum/design/cyberimp_surgical + name = "Surgical Arm Implant" + desc = "A set of surgical tools hidden behind a concealed panel on the user's arm." + id = "ci-surgey" + req_tech = list("materials" = 3, "engineering" = 3, "biotech" = 3, "programming" = 2, "magnets" = 3) + build_type = PROTOLATHE | MECHFAB + materials = list(MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500) + construction_time = 200 + build_path = /obj/item/organ/internal/cyberimp/arm/surgery + category = list("Misc", "Medical") + /datum/design/cyberimp_toolset name = "Toolset Arm Implant" desc = "A stripped-down version of engineering cyborg toolset, designed to be installed on subject's arm." id = "ci-toolset" req_tech = list("materials" = 3, "engineering" = 4, "biotech" = 4, "powerstorage" = 4) build_type = PROTOLATHE | MECHFAB - materials = list (MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500) + materials = list(MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500) construction_time = 200 build_path = /obj/item/organ/internal/cyberimp/arm/toolset category = list("Misc", "Medical") diff --git a/code/modules/research/designs/smelting_designs.dm b/code/modules/research/designs/smelting_designs.dm index fe45e8dacad..a043d90fb19 100644 --- a/code/modules/research/designs/smelting_designs.dm +++ b/code/modules/research/designs/smelting_designs.dm @@ -25,6 +25,22 @@ build_path = /obj/item/stack/sheet/plasmaglass category = list("initial") +/datum/design/titaniumglass_alloy + name = "Titanium + Glass alloy" + id = "titaniumglass" + build_type = SMELTER + materials = list(MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT, MAT_GLASS = MINERAL_MATERIAL_AMOUNT) + build_path = /obj/item/stack/sheet/titaniumglass + category = list("initial") + +/datum/design/plastitaniumglass_alloy + name = "Plasma + Titanium + Glass alloy" + id = "plastitaniumglass" + build_type = SMELTER + materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT, MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT, MAT_GLASS = MINERAL_MATERIAL_AMOUNT) + build_path = /obj/item/stack/sheet/plastitaniumglass + category = list("initial") + /datum/design/alienalloy name = "Alien Alloy" desc = "A sheet of reverse-engineered alien alloy." diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index ee884bc20a4..dcae187b028 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -22,7 +22,6 @@ desc = "A computer used for remotely handling slimes." networks = list("SS13") circuit = /obj/item/circuitboard/xenobiology - off_action = new /datum/action/innate/camera_off/xenobio var/datum/action/innate/slime_place/slime_place_action = new var/datum/action/innate/slime_pick_up/slime_up_action = new var/datum/action/innate/feed_slime/feed_slime_action = new @@ -43,23 +42,27 @@ eyeobj.icon_state = "camera_target" /obj/machinery/computer/camera_advanced/xenobio/GrantActions(mob/living/carbon/user) - off_action.target = user - off_action.Grant(user) + ..() + if(slime_up_action) + slime_up_action.target = src + slime_up_action.Grant(user) + actions += slime_up_action + + if(slime_place_action) + slime_place_action.target = src + slime_place_action.Grant(user) + actions += slime_place_action + + if(feed_slime_action) + feed_slime_action.target = src + feed_slime_action.Grant(user) + actions += feed_slime_action + + if(monkey_recycle_action) + monkey_recycle_action.target = src + monkey_recycle_action.Grant(user) + actions += monkey_recycle_action - jump_action.target = user - jump_action.Grant(user) - - slime_up_action.target = src - slime_up_action.Grant(user) - - slime_place_action.target = src - slime_place_action.Grant(user) - - feed_slime_action.target = src - feed_slime_action.Grant(user) - - monkey_recycle_action.target = src - monkey_recycle_action.Grant(user) /obj/machinery/computer/camera_advanced/xenobio/attack_hand(mob/user) @@ -87,31 +90,6 @@ return ..() -/datum/action/innate/camera_off/xenobio/Activate() - if(!target || !ishuman(target)) - return - var/mob/living/carbon/C = target - var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control - var/obj/machinery/computer/camera_advanced/xenobio/origin = remote_eye.origin - C.remote_view = 0 - origin.current_user = null - origin.jump_action.Remove(C) - origin.slime_place_action.Remove(C) - origin.slime_up_action.Remove(C) - origin.feed_slime_action.Remove(C) - origin.monkey_recycle_action.Remove(C) - //All of this stuff below could probably be a proc for all advanced cameras, only the action removal needs to be camera specific - remote_eye.eye_user = null - C.reset_perspective(null) - if(C.client) - C.client.images -= remote_eye.user_image - for(var/datum/camerachunk/chunk in remote_eye.visibleCameraChunks) - C.client.images -= chunk.obscured - C.remote_control = null - C.unset_machine() - src.Remove(C) - - /datum/action/innate/slime_place name = "Place Slimes" button_icon_state = "slime_down" @@ -190,7 +168,7 @@ if(cameranet.checkTurfVis(remote_eye.loc)) for(var/mob/living/carbon/human/M in remote_eye.loc) if(issmall(M) && M.stat) - M.visible_message("[M] vanishes as they are reclaimed for recycling!") + M.visible_message("[M] vanishes as [M.p_theyre()] reclaimed for recycling!") X.monkeys = round(X.monkeys + 0.2,0.1) qdel(M) else diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index d8058efbb53..35bdb18caae 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -205,7 +205,7 @@ SM.master_commander = 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] a great debt. Serve [user], and assist them in completing their goals at any cost.") + to_chat(SM, "You are grateful to be self aware and owe [user] a great debt. Serve [user], and assist [user.p_them()] in completing [user.p_their()] goals at any cost.") if(SM.flags_2 & HOLOGRAM_2) //Check to see if it's a holodeck creature to_chat(SM, "You also become depressingly aware that you are not a real creature, but instead a holoform. Your existence is limited to the parameters of the holodeck.") to_chat(user, "[M] accepts the potion and suddenly becomes attentive and aware. It worked!") @@ -426,7 +426,7 @@ G.loc = src.loc G.key = ghost.key add_attack_logs(user, G, "Summoned as a golem") - to_chat(G, "You are an adamantine golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. Serve [user], and assist them in completing their goals at any cost.") + to_chat(G, "You are an adamantine golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. Serve [user], and assist [user.p_them()] in completing [user.p_their()] goals at any cost.") qdel(src) /obj/effect/golemrune/Topic(href,href_list) diff --git a/code/modules/scripting/Implementations/Telecomms.dm b/code/modules/scripting/Implementations/Telecomms.dm index 16640a8b4c8..a24a9522b38 100644 --- a/code/modules/scripting/Implementations/Telecomms.dm +++ b/code/modules/scripting/Implementations/Telecomms.dm @@ -24,14 +24,22 @@ interpreter.GC() +//temp +/datum/TCS_Compiler + var/datum/n_scriptOptions/nS_Options/options + var/datum/n_Scanner/nS_Scanner/scanner + var/list/tokens + var/datum/n_Parser/nS_Parser/parser + var/datum/node/BlockDefinition/GlobalBlock/program + /* -- Compile a raw block of text -- */ -/datum/TCS_Compiler/proc/Compile(code as message) - var/datum/n_scriptOptions/nS_Options/options = new() - var/datum/n_Scanner/nS_Scanner/scanner = new(code, options) - var/list/tokens = scanner.Scan() - var/datum/n_Parser/nS_Parser/parser = new(tokens, options) - var/datum/node/BlockDefinition/GlobalBlock/program = parser.Parse() +/datum/TCS_Compiler/proc/Compile(list/code) + options = new() + scanner = new(code, options) + tokens = scanner.Scan() + parser = new(tokens, options) + program = parser.Parse() var/list/returnerrors = list() diff --git a/code/modules/scripting/Interpreter/Interpreter.dm b/code/modules/scripting/Interpreter/Interpreter.dm index 79802ff2fa5..c24e9ba5e3a 100644 --- a/code/modules/scripting/Interpreter/Interpreter.dm +++ b/code/modules/scripting/Interpreter/Interpreter.dm @@ -184,6 +184,8 @@ Runs each statement in a block of code. else RaiseError(new/datum/runtimeError/UnknownInstruction()) + CHECK_TICK + if(status) break diff --git a/code/modules/scripting/Options.dm b/code/modules/scripting/Options.dm index b27acff91d3..be471756359 100644 --- a/code/modules/scripting/Options.dm +++ b/code/modules/scripting/Options.dm @@ -36,11 +36,12 @@ File: Options if(!CanStartID(id)) //don't need to grab first char in id, since text2ascii does it automatically return 0 - if(length(id) == 1) + var/list/charmap = string2charlist(id) + if(charmap.len == 1) return 1 - for(var/i=2 to length(id)) - if(!IsValidIDChar(copytext(id, i, i + 1))) + for(var/i = 2 to charmap.len) + if(!IsValidIDChar(charmap[i])) return 0 return 1 diff --git a/code/modules/scripting/Scanner/Scanner.dm b/code/modules/scripting/Scanner/Scanner.dm index 011621c8ea8..da6a2c04803 100644 --- a/code/modules/scripting/Scanner/Scanner.dm +++ b/code/modules/scripting/Scanner/Scanner.dm @@ -6,7 +6,7 @@ An object responsible for breaking up source code into tokens for use by the parser. */ /datum/n_Scanner - var/code + var/list/code /* Var: errors A list of fatal errors found by the scanner. If there are any items in this list, then it is not safe to parse the returned tokens. @@ -25,7 +25,7 @@ Proc: LoadCode Loads source code. */ -/datum/n_Scanner/proc/LoadCode(var/c) +/datum/n_Scanner/proc/LoadCode(var/list/c) code=c /* @@ -100,24 +100,23 @@ code - The source code to tokenize. options - An object used to configure the scanner. */ -/datum/n_Scanner/nS_Scanner/New(var/code, var/datum/n_scriptOptions/nS_Options/options) +/datum/n_Scanner/nS_Scanner/New(var/list/c, var/datum/n_scriptOptions/nS_Options/options) . = ..() ignore += ascii2text(13) //Carriage return delim += ignore + options.symbols + end_stmt + string_delim src.options = options - LoadCode(code) + LoadCode(c) /datum/n_Scanner/nS_Scanner/Scan() //Creates a list of tokens from source code var/list/tokens = new - for(, src.codepos <= length(code), src.codepos++) - - var/char = copytext(code, codepos, codepos + 1) - var/nextchar = copytext(code, codepos + 1, codepos + 2) + for(, src.codepos <= code.len, src.codepos++) + var/char = code[codepos] + var/nextchar = TCOMMS_SAFE_INDEX(code, codepos + 1) if(char == "\n") line++ linepos = codepos - if(ignore.Find(char)) + if(char in ignore) continue else if(char == "/" && (nextchar == "*" || nextchar == "/")) @@ -139,6 +138,7 @@ else if(options.symbols.Find(char)) tokens += ReadSymbol() + CHECK_TICK codepos = initial(codepos) line = initial(line) @@ -155,12 +155,12 @@ */ /datum/n_Scanner/nS_Scanner/proc/ReadString(start) var/buf - for(, codepos <= length(code), codepos++)//codepos to length(code)) - var/char = copytext(code, codepos, codepos + 1) + for(, codepos <= code.len, codepos++)//codepos to length(code)) + var/char = code[codepos] switch(char) if("\\") //Backslash (\) encountered in string codepos++ //Skip next character in string, since it was escaped by a backslash - char = copytext(code, codepos, codepos+1) + char = TCOMMS_SAFE_INDEX(code, codepos) switch(char) if("\\") //Double backslash buf += "\\" @@ -190,12 +190,14 @@ Reads characters separated by an item in into a token. */ /datum/n_Scanner/nS_Scanner/proc/ReadWord() - var/char = copytext(code, codepos, codepos + 1) + var/char = code[codepos] var/buf - while(!delim.Find(char) && codepos <= length(code)) + while(!delim.Find(char)) buf += char - char = copytext(code, ++codepos, codepos + 1) + if(++codepos > code.len) break + char = code[codepos] + codepos-- //allow main Scan() proc to read the delimiter if(options.keywords.Find(buf)) return new/datum/token/keyword(buf, line, COL) @@ -207,13 +209,13 @@ Reads a symbol into a token. */ /datum/n_Scanner/nS_Scanner/proc/ReadSymbol() - var/char=copytext(code, codepos, codepos + 1) + var/char = code[codepos] var/buf while(options.symbols.Find(buf + char)) buf += char - if(++codepos > length(code)) break - char = copytext(code, codepos, codepos + 1) + if(++codepos > code.len) break + char = code[codepos] codepos-- //allow main Scan() proc to read the next character return new /datum/token/symbol(buf, line, COL) @@ -223,7 +225,7 @@ Reads a number into a token. */ /datum/n_Scanner/nS_Scanner/proc/ReadNumber() - var/char = copytext(code, codepos, codepos + 1) + var/char = code[codepos] var/buf var/dec = 0 @@ -233,7 +235,7 @@ buf += char codepos++ - char = copytext(code, codepos, codepos + 1) + char = TCOMMS_SAFE_INDEX(code, codepos) var/datum/token/number/T = new(buf, line, COL) if(isnull(text2num(buf))) @@ -249,8 +251,8 @@ */ /datum/n_Scanner/nS_Scanner/proc/ReadComment() - var/char = copytext(code, codepos, codepos + 1) - var/nextchar = copytext(code, codepos + 1, codepos + 2) + var/char = code[codepos] + var/nextchar = TCOMMS_SAFE_INDEX(code, codepos + 1) var/charstring = char + nextchar var/comm = 1 // 1: single-line comment @@ -262,23 +264,23 @@ comm = 2 // starts a multi-line comment while(comm) - if(++codepos > length(code)) + if(++codepos > code.len) break if(expectedend) // ending statement expected... - char = copytext(code, codepos, codepos + 1) + char = code[codepos] if(char == "/") // ending statement found - beak the comment comm = 0 break if(comm == 2) // multi-line comments are broken by ending statements - char = copytext(code, codepos, codepos + 1) + char = code[codepos] if(char == "*") expectedend = 1 continue else - char = copytext(code, codepos, codepos + 1) + char = code[codepos] if(char == "\n") comm = 0 break diff --git a/code/modules/scripting/__defines.dm b/code/modules/scripting/__defines.dm new file mode 100644 index 00000000000..52f30e68fdc --- /dev/null +++ b/code/modules/scripting/__defines.dm @@ -0,0 +1 @@ +#define TCOMMS_SAFE_INDEX(list, index) list.len > index ? list[index] : null diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index c8f36cfa37e..54f4836ff5b 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -1,4 +1,5 @@ //use this define to highlight docking port bounding boxes (ONLY FOR DEBUG USE) +// also uncomment the #undef at the bottom of the file //#define DOCKING_PORT_HIGHLIGHT //NORTH default dir @@ -909,7 +910,7 @@ var/global/trade_dockrequest_timelimit = 0 shuttleId = "trade_sol" docking_request_message = "A trading ship of Sol origin has requested docking aboard the NSS Cyberiad for trading. This request can be accepted or denied using a communications console." -#undef DOCKING_PORT_HIGHLIGHT +//#undef DOCKING_PORT_HIGHLIGHT /turf/proc/copyTurf(turf/T) diff --git a/code/modules/space_management/level_traits.dm b/code/modules/space_management/level_traits.dm index ae5d6447aae..39b584df64d 100644 --- a/code/modules/space_management/level_traits.dm +++ b/code/modules/space_management/level_traits.dm @@ -1,62 +1,63 @@ /proc/is_level_reachable(z) - return check_level_trait(z, REACHABLE) + return check_level_trait(z, REACHABLE) /proc/is_station_level(z) - return check_level_trait(z, STATION_LEVEL) + return check_level_trait(z, STATION_LEVEL) /proc/is_station_contact(z) - return check_level_trait(z, STATION_CONTACT) + return check_level_trait(z, STATION_CONTACT) /proc/is_teleport_allowed(z) - return !check_level_trait(z, BLOCK_TELEPORT) + return !check_level_trait(z, BLOCK_TELEPORT) /proc/is_admin_level(z) - return check_level_trait(z, ADMIN_LEVEL) + return check_level_trait(z, ADMIN_LEVEL) /proc/is_away_level(z) - return check_level_trait(z, AWAY_LEVEL) + return check_level_trait(z, AWAY_LEVEL) /proc/is_mining_level(z) - return check_level_trait(z, ORE_LEVEL) + return check_level_trait(z, ORE_LEVEL) /proc/is_ai_allowed(z) - return check_level_trait(z, AI_OK) + return check_level_trait(z, AI_OK) /proc/level_blocks_magic(z) - return check_level_trait(z, IMPEDES_MAGIC) + return check_level_trait(z, IMPEDES_MAGIC) /proc/level_boosts_signal(z) - return check_level_trait(z, BOOSTS_SIGNAL) + return check_level_trait(z, BOOSTS_SIGNAL) // Used for the nuke disk, or for checking if players survived through xenos /proc/is_secure_level(z) - var/secure = check_level_trait(z, STATION_LEVEL) - if(!secure) - // This is to allow further admin levels later, other than centcomm - secure = (z == level_name_to_num(CENTCOMM)) - return secure + var/secure = check_level_trait(z, STATION_LEVEL) + if(!secure) + // This is to allow further admin levels later, other than centcomm + secure = (z == level_name_to_num(CENTCOMM)) + return secure var/list/default_map_traits = MAP_TRANSITION_CONFIG + /proc/check_level_trait(z, trait) - if(!z) - return 0 // If you're nowhere, you have no traits - var/list/trait_list - if(space_manager.initialized) - var/datum/space_level/S = space_manager.get_zlev(z) - trait_list = S.flags - else - trait_list = default_map_traits[z] - trait_list = trait_list["attributes"] - return (trait in trait_list) + if(!z) + return 0 // If you're nowhere, you have no traits + var/list/trait_list + if(space_manager.initialized) + var/datum/space_level/S = space_manager.get_zlev(z) + trait_list = S.flags + else + trait_list = default_map_traits[z] + trait_list = trait_list["attributes"] + return (trait in trait_list) /proc/levels_by_trait(trait) - var/list/result = list() - for(var/A in space_manager.z_list) - var/datum/space_level/S = space_manager.z_list[A] - if(trait in S.flags) - result |= S - return result + var/list/result = list() + for(var/A in space_manager.z_list) + var/datum/space_level/S = space_manager.z_list[A] + if(trait in S.flags) + result |= S.zpos + return result /proc/level_name_to_num(name) - var/datum/space_level/S = space_manager.get_zlev_by_name(name) - return S.zpos + var/datum/space_level/S = space_manager.get_zlev_by_name(name) + return S.zpos \ No newline at end of file diff --git a/code/modules/space_management/zlevel_manager.dm b/code/modules/space_management/zlevel_manager.dm index 087a70657ed..acb1cf5c0a0 100644 --- a/code/modules/space_management/zlevel_manager.dm +++ b/code/modules/space_management/zlevel_manager.dm @@ -12,6 +12,8 @@ var/global/datum/zlev_manager/space_manager = new var/datum/spacewalk_grid/linkage_map var/initialized = 0 + var/list/areas_in_z = list() + // Populate our space level list // and prepare space transitions /datum/zlev_manager/proc/initialize() @@ -166,4 +168,4 @@ var/global/datum/zlev_manager/space_manager = new var/datum/space_level/heap/heap = z_list["[C.zpos]"] if(!istype(heap)) throw EXCEPTION("Attempted to free chunk at invalid z-level ([C.x],[C.y],[C.zpos]) [C.width]x[C.height]") - heap.free(C) + heap.free(C) \ No newline at end of file diff --git a/code/modules/spacepods/spacepod.dm b/code/modules/spacepods/spacepod.dm index 794e5f69bfe..97e34eee154 100644 --- a/code/modules/spacepods/spacepod.dm +++ b/code/modules/spacepods/spacepod.dm @@ -1,6 +1,6 @@ #define DAMAGE 1 #define FIRE 2 -#define LIGHT 1 +#define POD_LIGHT 1 #define WINDOW 2 #define RIM 3 #define PAINT 4 @@ -78,7 +78,7 @@ var/part = input(user, "Choose part", null) as null|anything in list("Lights","Rim","Paint","Windows") switch(part) if("Lights") - part_type = LIGHT + part_type = POD_LIGHT if("Rim") part_type = RIM if("Paint") @@ -101,7 +101,7 @@ pod_overlays[FIRE] = image(icon, icon_state="pod_fire") if(!pod_paint_effect) pod_paint_effect = new/list(4) - pod_paint_effect[LIGHT] = image(icon,icon_state = "LIGHTS") + pod_paint_effect[POD_LIGHT] = image(icon,icon_state = "LIGHTS") pod_paint_effect[WINDOW] = image(icon,icon_state = "Windows") pod_paint_effect[RIM] = image(icon,icon_state = "RIM") pod_paint_effect[PAINT] = image(icon,icon_state = "PAINT") @@ -162,7 +162,7 @@ if(!pod_paint_effect) pod_paint_effect = new/list(4) - pod_paint_effect[LIGHT] = image(icon,icon_state = "LIGHTS") + pod_paint_effect[POD_LIGHT] = image(icon,icon_state = "LIGHTS") pod_paint_effect[WINDOW] = image(icon,icon_state = "Windows") pod_paint_effect[RIM] = image(icon,icon_state = "RIM") pod_paint_effect[PAINT] = image(icon,icon_state = "PAINT") @@ -170,9 +170,9 @@ if(has_paint) var/image/to_add - if(!isnull(pod_paint_effect[LIGHT])) - to_add = pod_paint_effect[LIGHT] - to_add.color = colors[LIGHT] + if(!isnull(pod_paint_effect[POD_LIGHT])) + to_add = pod_paint_effect[POD_LIGHT] + to_add.color = colors[POD_LIGHT] overlays += to_add if(!isnull(pod_paint_effect[WINDOW])) to_add = pod_paint_effect[WINDOW] @@ -1077,6 +1077,6 @@ obj/spacepod/proc/add_equipment(mob/user, var/obj/item/spacepod_equipment/SPE, v #undef DAMAGE #undef FIRE #undef WINDOW -#undef LIGHT +#undef POD_LIGHT #undef RIM #undef PAINT diff --git a/code/modules/surgery/bones.dm b/code/modules/surgery/bones.dm index dfe2c0feb8c..a053b568dc7 100644 --- a/code/modules/surgery/bones.dm +++ b/code/modules/surgery/bones.dm @@ -49,7 +49,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user] starts applying medication to the damaged bones in [target]'s [affected.name] with \the [tool]." , \ "You start applying medication to the damaged bones in [target]'s [affected.name] with \the [tool].") - target.custom_pain("Something in your [affected.name] is causing you a lot of pain!",1) + target.custom_pain("Something in your [affected.name] is causing you a lot of pain!") ..() /datum/surgery_step/glue_bone/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) @@ -83,7 +83,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user] is beginning to set the bone in [target]'s [affected.name] in place with \the [tool]." , \ "You are beginning to set the bone in [target]'s [affected.name] in place with \the [tool].") - target.custom_pain("The pain in your [affected.name] is going to make you pass out!",1) + target.custom_pain("The pain in your [affected.name] is going to make you pass out!") ..() /datum/surgery_step/set_bone/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) @@ -136,7 +136,7 @@ "Your hand slips, damaging [target]'s face with \the [tool]!") var/obj/item/organ/external/head/h = affected h.receive_damage(10) - h.disfigured = 1 + h.disfigure() return 0 /datum/surgery_step/finish_bone diff --git a/code/modules/surgery/cavity_implant.dm b/code/modules/surgery/cavity_implant.dm index 0e88927e1a2..2ab2aca37c7 100644 --- a/code/modules/surgery/cavity_implant.dm +++ b/code/modules/surgery/cavity_implant.dm @@ -78,7 +78,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user] starts making some space inside [target]'s [get_cavity(affected)] cavity with \the [tool].", \ "You start making some space inside [target]'s [get_cavity(affected)] cavity with \the [tool]." ) - target.custom_pain("The pain in your chest is living hell!",1) + target.custom_pain("The pain in your chest is living hell!") ..() /datum/surgery_step/cavity/make_space/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -104,7 +104,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user] starts mending [target]'s [get_cavity(affected)] cavity wall with \the [tool].", \ "You start mending [target]'s [get_cavity(affected)] cavity wall with \the [tool]." ) - target.custom_pain("The pain in your chest is living hell!",1) + target.custom_pain("The pain in your chest is living hell!") ..() /datum/surgery_step/cavity/close_space/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -155,7 +155,7 @@ else //no internal items..but we still need a message! user.visible_message("[user] checks for items in [target]'s [target_zone].", "You check for items in [target]'s [target_zone]...") - target.custom_pain("The pain in your [target_zone] is living hell!",1) + target.custom_pain("The pain in your [target_zone] is living hell!") ..() /datum/surgery_step/cavity/place_item/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -190,7 +190,7 @@ if((tool.w_class > get_max_wclass(affected)/2 && prob(50) && !(affected.status & ORGAN_ROBOT))) to_chat(user, " You tear some vessels trying to fit the object in the cavity.") affected.internal_bleeding = TRUE - affected.owner.custom_pain("You feel something rip in your [affected.name]!", 1) + affected.owner.custom_pain("You feel something rip in your [affected.name]!") user.drop_item() affected.hidden = tool tool.forceMove(affected) diff --git a/code/modules/surgery/encased.dm b/code/modules/surgery/encased.dm index eddf116a45d..b9a33fcecab 100644 --- a/code/modules/surgery/encased.dm +++ b/code/modules/surgery/encased.dm @@ -38,7 +38,7 @@ user.visible_message("[user] begins to cut through [target]'s [affected.encased] with \the [tool].", \ "You begin to cut through [target]'s [affected.encased] with \the [tool].") - target.custom_pain("Something hurts horribly in your [affected.name]!",1) + target.custom_pain("Something hurts horribly in your [affected.name]!") ..() /datum/surgery_step/open_encased/saw/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -86,7 +86,7 @@ var/msg = "[user] starts to force open the [affected.encased] in [target]'s [affected.name] with \the [tool]." var/self_msg = "You start to force open the [affected.encased] in [target]'s [affected.name] with \the [tool]." user.visible_message(msg, self_msg) - target.custom_pain("Something hurts horribly in your [affected.name]!",1) + target.custom_pain("Something hurts horribly in your [affected.name]!") ..() /datum/surgery_step/open_encased/retract/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -137,7 +137,7 @@ var/msg = "[user] starts bending [target]'s [affected.encased] back into place with \the [tool]." var/self_msg = "You start bending [target]'s [affected.encased] back into place with \the [tool]." user.visible_message(msg, self_msg) - target.custom_pain("Something hurts horribly in your [affected.name]!",1) + target.custom_pain("Something hurts horribly in your [affected.name]!") ..() /datum/surgery_step/open_encased/close/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -187,7 +187,7 @@ var/msg = "[user] starts applying \the [tool] to [target]'s [affected.encased]." var/self_msg = "You start applying \the [tool] to [target]'s [affected.encased]." user.visible_message(msg, self_msg) - target.custom_pain("Something hurts horribly in your [affected.name]!",1) + target.custom_pain("Something hurts horribly in your [affected.name]!") ..() /datum/surgery_step/open_encased/mend/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) diff --git a/code/modules/surgery/face.dm b/code/modules/surgery/face.dm deleted file mode 100644 index d96db814b78..00000000000 --- a/code/modules/surgery/face.dm +++ /dev/null @@ -1,147 +0,0 @@ -//Procedures in this file: Facial reconstruction surgery -////////////////////////////////////////////////////////////////// -// FACE SURGERY // -////////////////////////////////////////////////////////////////// -/datum/surgery/plastic_surgery - name = "Face Repair" - steps = list(/datum/surgery_step/generic/cut_face, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/face/mend_vocal, /datum/surgery_step/face/fix_face,/datum/surgery_step/face/cauterize) - possible_locs = list("head") - - - -/datum/surgery/plastic_surgery/can_start(mob/user, mob/living/carbon/target) - if(istype(target,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = target - var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting) - if(!affected) - return 0 - if(affected.status & ORGAN_ROBOT) - return 0 - if(!affected.disfigured) - return 0 - return 1 - -/datum/surgery_step/face - priority = 2 - can_infect = 0 - -/datum/surgery_step/generic/cut_face - name = "make incision" - allowed_tools = list( - /obj/item/scalpel = 100, \ - /obj/item/kitchen/knife = 90, \ - /obj/item/shard = 60, \ - ) - - time = 16 - -/datum/surgery_step/generic/cut_face/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) - user.visible_message("[user] starts to cut open [target]'s face and neck with \the [tool].", \ - "You start to cut open [target]'s face and neck with \the [tool].") - ..() - -/datum/surgery_step/generic/cut_face/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) - user.visible_message(" [user] has cut open [target]'s face and neck with \the [tool]." , \ - " You have cut open [target]'s face and neck with \the [tool].",) - - return 1 - -/datum/surgery_step/generic/cut_face/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) - var/obj/item/organ/external/affected = target.get_organ(target_zone) - user.visible_message(" [user]'s hand slips, slicing [target]'s throat wth \the [tool]!" , \ - " Your hand slips, slicing [target]'s throat wth \the [tool]!" ) - affected.receive_damage(60) - target.AdjustLoseBreath(4) - - return 0 - -/datum/surgery_step/face/mend_vocal - name = "mend vocal cords" - allowed_tools = list( - /obj/item/scalpel/laser/manager = 100, \ - /obj/item/hemostat = 100, \ - /obj/item/stack/cable_coil = 90, \ - /obj/item/assembly/mousetrap = 12 //I don't know. Don't ask me. But I'm leaving it because hilarity. - ) - - time = 24 - -/datum/surgery_step/face/mend_vocal/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) - user.visible_message("[user] starts mending [target]'s vocal cords with \the [tool].", \ - "You start mending [target]'s vocal cords with \the [tool].") - ..() - -/datum/surgery_step/face/mend_vocal/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) - user.visible_message(" [user] mends [target]'s vocal cords with \the [tool].", \ - " You mend [target]'s vocal cords with \the [tool].") - return 1 - -/datum/surgery_step/face/mend_vocal/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) - user.visible_message(" [user]'s hand slips, clamping [target]'s trachea shut for a moment with \the [tool]!", \ - " Your hand slips, clamping [user]'s trachea shut for a moment with \the [tool]!") - target.AdjustLoseBreath(4) - return 0 - -/datum/surgery_step/face/fix_face - name = "reshape face" - allowed_tools = list( - /obj/item/scalpel/laser/manager = 100, \ - /obj/item/retractor = 100, \ - /obj/item/crowbar = 65, \ - /obj/item/kitchen/utensil/fork = 90) - - time = 64 - -/datum/surgery_step/face/fix_face/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) - user.visible_message("[user] starts pulling skin on [target]'s face back in place with \the [tool].", \ - "You start pulling skin on [target]'s face back in place with \the [tool].") - ..() - -/datum/surgery_step/face/fix_face/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) - user.visible_message(" [user] pulls skin on [target]'s face back in place with \the [tool].", \ - " You pull skin on [target]'s face back in place with \the [tool].") - return 1 - -/datum/surgery_step/face/fix_face/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) - var/obj/item/organ/external/affected = target.get_organ(target_zone) - user.visible_message(" [user]'s hand slips, tearing skin on [target]'s face with \the [tool]!", \ - " Your hand slips, tearing skin on [target]'s face with \the [tool]!") - target.apply_damage(10, BRUTE, affected, sharp = 1) - return 0 - -/datum/surgery_step/face/cauterize - name = "close incision" - allowed_tools = list( - /obj/item/scalpel/laser = 100, \ - /obj/item/cautery = 100, \ - /obj/item/clothing/mask/cigarette = 90, \ - /obj/item/lighter = 60, \ - /obj/item/weldingtool = 30 - ) - - time = 24 - -/datum/surgery_step/face/cauterize/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) - user.visible_message("[user] is beginning to cauterize the incision on [target]'s face and neck with \the [tool]." , \ - "You are beginning to cauterize the incision on [target]'s face and neck with \the [tool].") - ..() - -/datum/surgery_step/face/cauterize/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) - var/obj/item/organ/external/affected = target.get_organ(target_zone) - user.visible_message(" [user] cauterizes the incision on [target]'s face and neck with \the [tool].", \ - " You cauterize the incision on [target]'s face and neck with \the [tool].") - affected.open = 0 - var/obj/item/organ/external/head/h = affected - h.disfigured = 0 - h.update_icon() - target.regenerate_icons() - - return 1 - -/datum/surgery_step/face/cauterize/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) - var/obj/item/organ/external/affected = target.get_organ(target_zone) - user.visible_message(" [user]'s hand slips, leaving a small burn on [target]'s face with \the [tool]!", \ - " Your hand slips, leaving a small burn on [target]'s face with \the [tool]!") - target.apply_damage(4, BURN, affected) - - return 0 diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index 158656f8c01..1e1b3a10365 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -37,7 +37,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user] starts the incision on [target]'s [affected.name] with \the [tool].", \ "You start the incision on [target]'s [affected.name] with \the [tool].") - target.custom_pain("You feel a horrible pain as if from a sharp knife in your [affected.name]!",1) + target.custom_pain("You feel a horrible pain as if from a sharp knife in your [affected.name]!") ..() /datum/surgery_step/generic/cut_open/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -71,7 +71,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user] starts clamping bleeders in [target]'s [affected.name] with \the [tool].", \ "You start clamping bleeders in [target]'s [affected.name] with \the [tool].") - target.custom_pain("The pain in your [affected.name] is maddening!",1) + target.custom_pain("The pain in your [affected.name] is maddening!") ..() /datum/surgery_step/generic/clamp_bleeders/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -111,7 +111,7 @@ msg = "[user] starts to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]." self_msg = "You start to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]." user.visible_message(msg, self_msg) - target.custom_pain("It feels like the skin on your [affected.name] is on fire!",1) + target.custom_pain("It feels like the skin on your [affected.name] is on fire!") ..() /datum/surgery_step/generic/retract_skin/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -160,7 +160,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user] is beginning to cauterize the incision on [target]'s [affected.name] with \the [tool]." , \ "You are beginning to cauterize the incision on [target]'s [affected.name] with \the [tool].") - target.custom_pain("Your [affected.name] is being burned!",1) + target.custom_pain("Your [affected.name] is being burned!") ..() /datum/surgery_step/generic/cauterize/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -219,7 +219,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user] is beginning to amputate [target]'s [affected.name] with \the [tool]." , \ "You are beginning to cut through [target]'s [affected.amputation_point] with \the [tool].") - target.custom_pain("Your [affected.amputation_point] is being ripped apart!",1) + target.custom_pain("Your [affected.amputation_point] is being ripped apart!") ..() /datum/surgery_step/generic/amputate/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) diff --git a/code/modules/surgery/implant_removal.dm b/code/modules/surgery/implant_removal.dm index 7518cc701af..c36df974ea3 100644 --- a/code/modules/surgery/implant_removal.dm +++ b/code/modules/surgery/implant_removal.dm @@ -45,7 +45,7 @@ I = locate(/obj/item/implant) in target user.visible_message("[user] starts poking around inside [target]'s [affected.name] with \the [tool].", \ "You start poking around inside [target]'s [affected.name] with \the [tool]." ) - target.custom_pain("The pain in your [affected.name] is living hell!",1) + target.custom_pain("The pain in your [affected.name] is living hell!") ..() /datum/surgery_step/extract_implant/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index d98e40700df..bdc5f763442 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -66,7 +66,7 @@ if(!holder || (holder in src)) return - owner.visible_message("[owner] retracts [holder] back into \his [parent_organ == "r_arm" ? "right" : "left"] arm.", + owner.visible_message("[owner] retracts [holder] back into [owner.p_their()] [parent_organ == "r_arm" ? "right" : "left"] arm.", "[holder] snaps back into your [parent_organ == "r_arm" ? "right" : "left"] arm.", "You hear a short mechanical noise.") @@ -114,7 +114,7 @@ if(parent_organ == "r_arm" ? owner.hand : !owner.hand) owner.swap_hand() - owner.visible_message("[owner] extends [holder] from \his [parent_organ == "r_arm" ? "right" : "left"] arm.", + owner.visible_message("[owner] extends [holder] from [owner.p_their()] [parent_organ == "r_arm" ? "right" : "left"] arm.", "You extend [holder] from your [parent_organ == "r_arm" ? "right" : "left"] arm.", "You hear a short mechanical noise.") playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1) @@ -242,7 +242,7 @@ /obj/item/organ/internal/cyberimp/arm/surgery name = "surgical toolset implant" desc = "A set of surgical tools hidden behind a concealed panel on the user's arm" - contents = newlist(/obj/item/retractor, /obj/item/hemostat, /obj/item/cautery, /obj/item/surgicaldrill, /obj/item/scalpel, /obj/item/circular_saw, /obj/item/bonegel, /obj/item/FixOVein, /obj/item/bonesetter) + contents = newlist(/obj/item/retractor/augment, /obj/item/hemostat/augment, /obj/item/cautery/augment, /obj/item/surgicaldrill/augment, /obj/item/scalpel/augment, /obj/item/circular_saw/augment, /obj/item/bonegel/augment, /obj/item/FixOVein/augment, /obj/item/bonesetter/augment) origin_tech = "materials=3;engineering=3;biotech=3;programming=2;magnets=3" // lets make IPCs even *more* vulnerable to EMPs! diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm index 0af7781eee4..5837fab5925 100644 --- a/code/modules/surgery/organs/organ.dm +++ b/code/modules/surgery/organs/organ.dm @@ -30,6 +30,7 @@ var/sterile = FALSE //can the organ be infected by germs? var/tough = FALSE //can organ be easily damaged? var/emp_proof = FALSE //is the organ immune to EMPs? + var/hidden_pain = FALSE //will it skip pain messages? /obj/item/organ/Destroy() @@ -232,7 +233,7 @@ if(owner && parent_organ && amount > 0) var/obj/item/organ/external/parent = owner.get_organ(parent_organ) if(parent && !silent) - owner.custom_pain("Something inside your [parent.name] hurts a lot.", 1) + owner.custom_pain("Something inside your [parent.name] hurts a lot.") //check if we've hit max_damage if(damage >= max_damage) @@ -289,7 +290,7 @@ return if(owner && robotic == 2) Stop() // In the name of looooove~! - owner.visible_message("[owner] clutches their chest and gasps!","You clutch your chest in pain!") + owner.visible_message("[owner] clutches [owner.p_their()] chest and gasps!","You clutch your chest in pain!") else if(owner && robotic == 1) receive_damage(11,1) @@ -306,7 +307,7 @@ processing_objects |= src if(owner && vital && is_primary_organ()) // I'd do another check for species or whatever so that you couldn't "kill" an IPC by removing a human head from them, but it doesn't matter since they'll come right back from the dead - add_attack_logs(user, owner, "Removed vital organ ([src])", !!user) + add_attack_logs(user, owner, "Removed vital organ ([src])", !!user ? ATKLOG_FEW : ATKLOG_ALL) owner.death() owner = null return src diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 0ebf08c225c..960ce7c0da1 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -172,7 +172,7 @@ owner.emote("scream") //getting hit on broken hand hurts if(status & ORGAN_SPLINTED && prob((brute + burn)*4)) //taking damage to splinted limbs removes the splints status &= ~ORGAN_SPLINTED - owner.visible_message("The splint on [owner]'s left arm unravels from their [name]!","The splint on your [name] unravels!") + owner.visible_message("The splint on [owner]'s left arm unravels from [owner.p_their()] [name]!","The splint on your [name] unravels!") owner.handle_splints() if(used_weapon) add_autopsy_data("[used_weapon]", brute + burn) @@ -239,7 +239,6 @@ #undef LIMB_SHARP_THRESH_INT_DMG #undef LIMB_THRESH_INT_DMG #undef LIMB_DMG_PROB -#undef LIMB_NO_BONE_DMG_PROB /obj/item/organ/external/proc/heal_damage(brute, burn, internal = 0, robo_repair = 0) if(status & ORGAN_ROBOT && !robo_repair) @@ -273,8 +272,7 @@ This function completely restores a damaged organ to perfect condition. burn_dam = 0 open = 0 //Closing all wounds. internal_bleeding = FALSE - if(istype(src, /obj/item/organ/external/head) && disfigured) //If their head's disfigured, refigure it. - disfigured = 0 + disfigured = FALSE // handle internal organs for(var/obj/item/organ/internal/current_organ in internal_organs) @@ -409,7 +407,7 @@ Note that amputating the affected organ does in fact remove the infection from t var/local_damage = brute_dam + damage if(damage > 15 && local_damage > 30 && prob(damage) && !(status & ORGAN_ROBOT)) internal_bleeding = TRUE - owner.custom_pain("You feel something rip in your [name]!", 1) + owner.custom_pain("You feel something rip in your [name]!") // new damage icon system // returns just the brute/burn damage code @@ -442,7 +440,7 @@ Note that amputating the affected organ does in fact remove the infection from t return if(owner.step_count >= splinted_count + SPLINT_LIFE) status &= ~ORGAN_SPLINTED //oh no, we actually need surgery now! - owner.visible_message("[owner] screams in pain as their splint pops off their [name]!","You scream in pain as your splint pops off your [name]!") + owner.visible_message("[owner] screams in pain as [owner.p_their()] splint pops off their [name]!","You scream in pain as your splint pops off your [name]!") owner.emote("scream") owner.Stun(2) owner.handle_splints() @@ -737,19 +735,14 @@ Note that amputating the affected organ does in fact remove the infection from t qdel(spark_system) qdel(src) -/obj/item/organ/external/proc/disfigure(var/type = "brute") +/obj/item/organ/external/proc/disfigure() if(disfigured) return if(owner) - if(type == "brute") - owner.visible_message("You hear a sickening cracking sound coming from \the [owner]'s [name].", \ - "Your [name] becomes a mangled mess!", \ - "You hear a sickening crack.") - else - owner.visible_message("\The [owner]'s [name] melts away, turning into mangled mess!", \ - "Your [name] melts away!", \ - "You hear a sickening sizzle.") - disfigured = 1 + owner.visible_message("You hear a sickening sound coming from \the [owner]'s [name] as it turns into a mangled mess!", \ + "Your [name] becomes a mangled mess!", \ + "You hear a sickening sound.") + disfigured = TRUE /obj/item/organ/external/is_primary_organ(var/mob/living/carbon/human/O = null) if(isnull(O)) diff --git a/code/modules/surgery/organs/pain.dm b/code/modules/surgery/organs/pain.dm index d107c7439c6..e3386aef1b3 100644 --- a/code/modules/surgery/organs/pain.dm +++ b/code/modules/surgery/organs/pain.dm @@ -1,41 +1,28 @@ -mob/var/list/pain_stored = list() -mob/var/last_pain_message = "" -mob/var/next_pain_time = 0 +/mob/living/carbon/human + var/last_pain_message = "" + var/next_pain_time = 0 // partname is the name of a body part // amount is a num from 1 to 100 -mob/living/carbon/proc/pain(var/partname, var/amount, var/force, var/burning = 0) - if(stat >= 2) return +/mob/living/carbon/human/proc/pain(partname, amount) + if(stat >= UNCONSCIOUS) + return if(reagents.has_reagent("sal_acid")) return if(reagents.has_reagent("morphine")) return if(reagents.has_reagent("hydrocodone")) return - if(world.time < next_pain_time && !force) + if(world.time < next_pain_time) return - if(amount > 10 && istype(src,/mob/living/carbon/human)) - if(paralysis) - AdjustParalysis(-round(amount/10)) - if(amount > 50 && prob(amount / 5)) - src:drop_item() var/msg - if(burning) - switch(amount) - if(1 to 10) - msg = "Your [partname] burns." - if(11 to 90) - msg = "Your [partname] burns badly!" - if(91 to 10000) - msg = "OH GOD! Your [partname] is on fire!" - else - switch(amount) - if(1 to 10) - msg = "Your [partname] hurts." - if(11 to 90) - msg = "Your [partname] hurts badly." - if(91 to 10000) - msg = "OH GOD! Your [partname] is hurting terribly!" + switch(amount) + if(1 to 10) + msg = "Your [partname] hurts." + if(11 to 90) + msg = "Your [partname] hurts badly." + if(91 to INFINITY) + msg = "OH GOD! Your [partname] is hurting terribly!" if(msg && (msg != last_pain_message || prob(10))) last_pain_message = msg to_chat(src, msg) @@ -43,20 +30,18 @@ mob/living/carbon/proc/pain(var/partname, var/amount, var/force, var/burning = 0 // message is the custom message to be displayed -// flash_strength is 0 for weak pain flash, 1 for strong pain flash -mob/living/carbon/human/proc/custom_pain(var/message, var/flash_strength) - if(stat >= 1) return +mob/living/carbon/human/proc/custom_pain(message) + if(stat >= UNCONSCIOUS) + return if(NO_PAIN in species.species_traits) return - if(reagents.has_reagent("morphine")) return if(reagents.has_reagent("hydrocodone")) return - var/msg = "[message]" - if(flash_strength >= 1) - msg = "[message]" + + var/msg = "[message]" // Anti message spam checks if(msg && ((msg != last_pain_message) || (world.time >= next_pain_time))) @@ -67,70 +52,33 @@ mob/living/carbon/human/proc/custom_pain(var/message, var/flash_strength) mob/living/carbon/human/proc/handle_pain() // not when sleeping - if(NO_PAIN in species.species_traits) - //While synthetics don't feel pain, they will notice their gears gunking up with residue (toxins) - if(isSynthetic()) - var/toxDamageMessage = null - var/toxMessageProb = 1 - switch(getToxLoss()) - if(25 to 50) - toxMessageProb = 1 - toxDamageMessage = "Your servos seem to be working harder." - if(50 to 75) - toxMessageProb = 2 - toxDamageMessage = "Your joints seem to stick randomly." - if(75 to INFINITY) - toxMessageProb = 5 - toxDamageMessage = "Your motors seem to slip; it really grinds your gears!" - if(toxDamageMessage && prob(toxMessageProb)) - src.custom_pain(toxDamageMessage, getToxLoss() >= 15) + if(stat >= UNCONSCIOUS) + return + if(NO_PAIN in species.species_traits) return - - if(stat >= 2) return if(reagents.has_reagent("morphine")) return if(reagents.has_reagent("hydrocodone")) return + var/maxdam = 0 var/obj/item/organ/external/damaged_organ = null for(var/obj/item/organ/external/E in bodyparts) - if(E.status & ORGAN_DEAD|ORGAN_ROBOT) continue + if((E.status & ORGAN_DEAD|ORGAN_ROBOT) || E.hidden_pain) + continue var/dam = E.get_damage() // make the choice of the organ depend on damage, // but also sometimes use one of the less damaged ones - if(dam > maxdam && (maxdam == 0 || prob(70)) ) + if(dam > maxdam && (maxdam == 0 || prob(70))) damaged_organ = E maxdam = dam if(damaged_organ) - pain(damaged_organ.name, maxdam, 0) - + pain(damaged_organ.name, maxdam) // Damage to internal organs hurts a lot. for(var/obj/item/organ/internal/I in internal_organs) - if(istype(I, /obj/item/organ/internal/brain)) //the brain has no pain receptors, and brain damage is meant to be a stealthy damage type. + if(I.hidden_pain) continue - if(I.damage > 2) if(prob(2)) + if(I.damage > 2 && prob(2)) var/obj/item/organ/external/parent = get_organ(I.parent_organ) - src.custom_pain("You feel a sharp pain in your [parent.limb_name]", 1) - - var/toxDamageMessage = null - var/toxMessageProb = 1 - switch(getToxLoss()) - if(1 to 5) - toxMessageProb = 1 - toxDamageMessage = "Your body stings slightly." - if(6 to 10) - toxMessageProb = 2 - toxDamageMessage = "Your whole body hurts a little." - if(11 to 15) - toxMessageProb = 2 - toxDamageMessage = "Your whole body hurts." - if(15 to 25) - toxMessageProb = 3 - toxDamageMessage = "Your whole body hurts badly." - if(26 to INFINITY) - toxMessageProb = 5 - toxDamageMessage = "Your body aches all over, it's driving you mad." - - if(toxDamageMessage && prob(toxMessageProb)) - src.custom_pain(toxDamageMessage, getToxLoss() >= 15) + custom_pain("You feel a sharp pain in your [parent.limb_name]") \ No newline at end of file diff --git a/code/modules/surgery/organs/parasites.dm b/code/modules/surgery/organs/parasites.dm index 0adca48bfd0..900e60d9806 100644 --- a/code/modules/surgery/organs/parasites.dm +++ b/code/modules/surgery/organs/parasites.dm @@ -82,7 +82,7 @@ // Actually, let's make it slightly worse... just to discourage people from bringing back infections. alternate_ending = 1 to_chat(owner,"The shapes extend tendrils out of your wound... no... those are legs! SPIDER LEGS! You have spiderlings growing inside you! You scratch at the wound, but it just aggrivates them - they swarm out of the wound, biting you all over!") - owner.visible_message("[owner] flails around on the floor as spiderlings erupt from their skin and swarm all over them! ") + owner.visible_message("[owner] flails around on the floor as spiderlings erupt from [owner.p_their()] skin and swarm all over them! ") owner.Stun(20) owner.Weaken(20) // yes, this is a long stun - that's intentional. Gotta give the spiderlings time to escape. diff --git a/code/modules/surgery/organs/subtypes/standard.dm b/code/modules/surgery/organs/subtypes/standard.dm index 3fd8effd56a..30c4e173cdc 100644 --- a/code/modules/surgery/organs/subtypes/standard.dm +++ b/code/modules/surgery/organs/subtypes/standard.dm @@ -211,11 +211,8 @@ /obj/item/organ/external/head/receive_damage(brute, burn, sharp, used_weapon = null, list/forbidden_limbs = list(), ignore_resists = FALSE) ..(brute, burn, sharp, used_weapon, forbidden_limbs, ignore_resists) if(!disfigured) - if(brute_dam > 40) - if(prob(50)) - disfigure("brute") - if(burn_dam > 40) - disfigure("burn") + if(brute_dam + burn_dam > 50) + disfigure() /obj/item/organ/external/head/proc/handle_alt_icon() if(alt_head && alt_heads_list[alt_head]) diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index 1af925c3166..4c0094592e9 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -116,7 +116,7 @@ if(affected) user.visible_message("[user] starts transplanting [tool] into [target]'s [affected.name].", \ "You start transplanting [tool] into [target]'s [affected.name].") - H.custom_pain("Someone's rooting around in your [affected.name]!",1) + H.custom_pain("Someone's rooting around in your [affected.name]!") else user.visible_message("[user] starts transplanting [tool] into [target]'s [parse_zone(target_zone)].", \ "You start transplanting [tool] into [target]'s [parse_zone(target_zone)].") @@ -143,7 +143,7 @@ self_msg = "You begin injecting [tool] into [target]'s [I.name]." user.visible_message(msg, self_msg) if(H && affected) - H.custom_pain("Something burns horribly in your [affected.name]!",1) + H.custom_pain("Something burns horribly in your [affected.name]!") else if(implement_type in implements_finsh) //same as surgery step /datum/surgery_step/open_encased/close/ @@ -159,7 +159,7 @@ user.visible_message(msg, self_msg) if(H && affected) - H.custom_pain("Something hurts horribly in your [affected.name]!",1) + H.custom_pain("Something hurts horribly in your [affected.name]!") else if(implement_type in implements_extract) current_type = "extract" @@ -188,7 +188,7 @@ user.visible_message("[user] starts to separate [target]'s [I] with [tool].", \ "You start to separate [target]'s [I] with [tool] for removal." ) if(H && affected) - H.custom_pain("The pain in your [affected.name] is living hell!",1) + H.custom_pain("The pain in your [affected.name] is living hell!") else return -1 @@ -221,7 +221,7 @@ to_chat(user, "[I] does not appear to be damaged.") if(affected) - H.custom_pain("The pain in your [affected.name] is living hell!", 1) + H.custom_pain("The pain in your [affected.name] is living hell!") else if(istype(tool, /obj/item/reagent_containers/food/snacks/organ)) to_chat(user, "[tool] was bitten by someone! It's too damaged to use!") diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index 012f7ad3c5b..455a6a8de04 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -80,7 +80,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user] starts patching the damaged vein in [target]'s [affected.name] with \the [tool]." , \ "You start patching the damaged vein in [target]'s [affected.name] with \the [tool].") - target.custom_pain("The pain in [affected.name] is unbearable!",1) + target.custom_pain("The pain in [affected.name] is unbearable!") ..() /datum/surgery_step/fix_vein/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -133,7 +133,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user] starts cutting away necrotic tissue in [target]'s [affected.name] with \the [tool]." , \ "You start cutting away necrotic tissue in [target]'s [affected.name] with \the [tool].") - target.custom_pain("The pain in [affected.name] is unbearable!",1) + target.custom_pain("The pain in [affected.name] is unbearable!") ..() /datum/surgery_step/fix_dead_tissue/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -191,7 +191,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user] starts applying medication to the affected tissue in [target]'s [affected.name] with \the [tool]." , \ "You start applying medication to the affected tissue in [target]'s [affected.name] with \the [tool].") - target.custom_pain("Something in your [affected.name] is causing you a lot of pain!",1) + target.custom_pain("Something in your [affected.name] is causing you a lot of pain!") ..() /datum/surgery_step/treat_necrosis/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) @@ -241,7 +241,7 @@ ////////////////////////////////////////////////////////////////// /datum/surgery/remove_thrall name = "Remove Shadow Tumor" - steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/open_encased/saw,/datum/surgery_step/open_encased/retract, /datum/surgery_step/internal/dethrall, /datum/surgery_step/glue_bone, /datum/surgery_step/set_bone,/datum/surgery_step/finish_bone,/datum/surgery_step/generic/cauterize) + steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/internal/dethrall, /datum/surgery_step/generic/cauterize) possible_locs = list("head", "chest", "groin") /datum/surgery/remove_thrall/synth diff --git a/code/modules/surgery/plastic_surgery.dm b/code/modules/surgery/plastic_surgery.dm new file mode 100644 index 00000000000..4d14d2e8a79 --- /dev/null +++ b/code/modules/surgery/plastic_surgery.dm @@ -0,0 +1,56 @@ +/datum/surgery/plastic_surgery + name = "Plastic Surgery" + steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/reshape_face, /datum/surgery_step/generic/cauterize) + possible_locs = list("head") + +/datum/surgery/plastic_surgery/can_start(mob/user, mob/living/carbon/target) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + var/obj/item/organ/external/head/head = H.get_organ(user.zone_sel.selecting) + if(!head) + return FALSE + if(head.status & ORGAN_ROBOT) + return FALSE + return TRUE + + +/datum/surgery_step/reshape_face + name = "reshape face" + allowed_tools = list(/obj/item/scalpel = 100, /obj/item/kitchen/knife = 50, /obj/item/wirecutters = 35) + time = 64 + +/datum/surgery_step/reshape_face/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message("[user] begins to alter [target]'s appearance.", "You begin to alter [target]'s appearance...") + +/datum/surgery_step/reshape_face/end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/obj/item/organ/external/head/head = target.get_organ(target_zone) + var/species_names = target.get_species() + if(head.disfigured) + head.disfigured = FALSE + user.visible_message("[user] successfully restores [target]'s appearance!", "You successfully restore [target]'s appearance.") + else + var/list/names = list() + if(!isabductor(user)) + for(var/i in 1 to 10) + names += random_name(target.gender, species_names) + else + for(var/_i in 1 to 9) + names += "Subject [target.gender == MALE ? "i" : "o"]-[pick("a", "b", "c", "d", "e")]-[rand(10000, 99999)]" + names += random_name(target.gender, species_names) //give one normal name in case they want to do regular plastic surgery + var/chosen_name = input(user, "Choose a new name to assign.", "Plastic Surgery") as null|anything in names + if(!chosen_name) + return + var/oldname = target.real_name + target.real_name = chosen_name + var/newname = target.real_name //something about how the code handles names required that I use this instead of target.real_name + user.visible_message("[user] alters [oldname]'s appearance completely, [target.p_they()] [target.p_are()] now [newname]!", "You alter [oldname]'s appearance completely, [target.p_they()] [target.p_are()] now [newname].") + target.sec_hud_set_ID() + return TRUE + + +/datum/surgery_step/reshape_face/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/obj/item/organ/external/head/head = target.get_organ(target_zone) + user.visible_message(" [user]'s hand slips, tearing skin on [target]'s face with [tool]!", \ + " Your hand slips, tearing skin on [target]'s face with [tool]!") + target.apply_damage(10, BRUTE, head, sharp = TRUE) + return FALSE \ No newline at end of file diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm index 58b570eb5e3..ed82328c47d 100644 --- a/code/modules/surgery/robotics.dm +++ b/code/modules/surgery/robotics.dm @@ -248,10 +248,7 @@ user.visible_message(" [user] finishes patching damage to [target]'s [affected.name] with \the [tool].", \ " You finish patching damage to [target]'s [affected.name] with \the [tool].") affected.heal_damage(rand(30,50),0,1,1) - if(affected.disfigured) - affected.disfigured = 0 - affected.update_icon() - target.regenerate_icons() + affected.disfigured = FALSE if("burn") user.visible_message(" [user] finishes splicing cable into [target]'s [affected.name].", \ " You finishes splicing new cable into [target]'s [affected.name].") @@ -325,7 +322,7 @@ user.visible_message("[user] begins reattaching [target]'s [tool].", \ "You start reattaching [target]'s [tool].") - target.custom_pain("Someone's rooting around in your [affected.name]!",1) + target.custom_pain("Someone's rooting around in your [affected.name]!") else if(istype(tool,/obj/item/mmi)) current_type = "install" @@ -386,7 +383,7 @@ user.visible_message("[user] starts to decouple [target]'s [I] with \the [tool].", \ "You start to decouple [target]'s [I] with \the [tool]." ) - target.custom_pain("The pain in your [affected.name] is living hell!",1) + target.custom_pain("The pain in your [affected.name] is living hell!") else return -1 @@ -407,7 +404,7 @@ to_chat(user, "There are no damaged components in [affected].") return -1 - target.custom_pain("The pain in your [affected.name] is living hell!",1) + target.custom_pain("The pain in your [affected.name] is living hell!") else if(implement_type in implements_finish) current_type = "finish" @@ -522,7 +519,7 @@ user.visible_message("[user] starts to decouple [target]'s [affected.name] with \the [tool].", \ "You start to decouple [target]'s [affected.name] with \the [tool]." ) - target.custom_pain("Your [affected.amputation_point] is being ripped apart!",1) + target.custom_pain("Your [affected.amputation_point] is being ripped apart!") ..() /datum/surgery_step/robotics/external/amputate/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) diff --git a/code/modules/surgery/slime.dm b/code/modules/surgery/slime.dm index ced21be08b4..77614d41430 100644 --- a/code/modules/surgery/slime.dm +++ b/code/modules/surgery/slime.dm @@ -98,6 +98,6 @@ return 1 /datum/surgery_step/slime/saw_core/fail_step(mob/living/user, mob/living/carbon/slime/target, target_zone, obj/item/tool) - user.visible_message(" [user]'s hand slips, causing \him to miss the core!", \ + user.visible_message(" [user]'s hand slips, causing [user.p_them()] to miss the core!", \ " Your hand slips, causing you to miss the core!") - return 0 \ No newline at end of file + return 0 diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index 85880048f9b..53691dd0264 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -8,6 +8,10 @@ w_class = WEIGHT_CLASS_SMALL origin_tech = "materials=1;biotech=1" +/obj/item/retractor/augment + desc = "Micro-mechanical manipulator for retracting stuff." + w_class = WEIGHT_CLASS_TINY + toolspeed = 0.5 /obj/item/hemostat name = "hemostat" @@ -20,6 +24,9 @@ origin_tech = "materials=1;biotech=1" attack_verb = list("attacked", "pinched") +/obj/item/hemostat/augment + desc = "Tiny servos power a pair of pincers to stop bleeding." + toolspeed = 0.5 /obj/item/cautery name = "cautery" @@ -32,6 +39,9 @@ origin_tech = "materials=1;biotech=1" attack_verb = list("burnt") +/obj/item/cautery/augment + desc = "A heated element that cauterizes wounds." + toolspeed = 0.5 /obj/item/surgicaldrill name = "surgical drill" @@ -48,10 +58,16 @@ attack_verb = list("drilled") suicide_act(mob/user) - to_chat(viewers(user), pick("[user] is pressing [src] to \his temple and activating it! It looks like \he's trying to commit suicide.", - "[user] is pressing [src] to \his chest and activating it! It looks like \he's trying to commit suicide.")) + to_chat(viewers(user), pick("[user] is pressing [src] to [user.p_their()] temple and activating it! It looks like [user.p_theyre()] trying to commit suicide.", + "[user] is pressing [src] to [user.p_their()] chest and activating it! It looks like [user.p_theyre()] trying to commit suicide.")) return (BRUTELOSS) +/obj/item/surgicaldrill/augment + desc = "Effectively a small power drill contained within your arm, edges dulled to prevent tissue damage. May or may not pierce the heavens." + hitsound = 'sound/weapons/circsawhit.ogg' + force = 10 + w_class = WEIGHT_CLASS_SMALL + toolspeed = 0.5 /obj/item/scalpel name = "scalpel" @@ -72,12 +88,16 @@ hitsound = 'sound/weapons/bladeslice.ogg' suicide_act(mob/user) - to_chat(viewers(user), pick("[user] is slitting \his wrists with [src]! It looks like \he's trying to commit suicide.", - "[user] is slitting \his throat with [src]! It looks like \he's trying to commit suicide.", - "[user] is slitting \his stomach open with [src]! It looks like \he's trying to commit seppuku.")) + to_chat(viewers(user), pick("[user] is slitting [user.p_their()] wrists with [src]! It looks like [user.p_theyre()] trying to commit suicide.", + "[user] is slitting [user.p_their()] throat with [src]! It looks like [user.p_theyre()] trying to commit suicide.", + "[user] is slitting [user.p_their()] stomach open with [src]! It looks like [user.p_theyre()] trying to commit seppuku.")) return (BRUTELOSS) +/obj/item/scalpel/augment + desc = "Ultra-sharp blade attached directly to your bone for extra-accuracy." + toolspeed = 0.5 + /* * Researchable Scalpels */ @@ -129,6 +149,12 @@ origin_tech = "biotech=1;combat=1" attack_verb = list("attacked", "slashed", "sawed", "cut") +/obj/item/circular_saw/augment + desc = "A small but very fast spinning saw. Edges dulled to prevent accidental cutting inside of the surgeon." + force = 10 + w_class = WEIGHT_CLASS_SMALL + toolspeed = 0.5 + //misc, formerly from code/defines/weapons.dm /obj/item/bonegel name = "bone gel" @@ -139,6 +165,9 @@ throwforce = 1.0 origin_tech = "materials=1;biotech=1" +/obj/item/bonegel/augment + toolspeed = 0.5 + /obj/item/FixOVein name = "FixOVein" icon = 'icons/obj/surgery.dmi' @@ -148,6 +177,9 @@ origin_tech = "materials=1;biotech=1" w_class = WEIGHT_CLASS_SMALL +/obj/item/FixOVein/augment + toolspeed = 0.5 + /obj/item/bonesetter name = "bone setter" icon = 'icons/obj/surgery.dmi' @@ -160,6 +192,9 @@ attack_verb = list("attacked", "hit", "bludgeoned") origin_tech = "materials=1;biotech=1" +/obj/item/bonesetter/augment + toolspeed = 0.5 + /obj/item/surgical_drapes name = "surgical drapes" desc = "Nanotrasen brand surgical drapes provide optimal safety and infection control." diff --git a/config/example/dbconfig.txt b/config/example/dbconfig.txt index a962b4b685c..563768b69bc 100644 --- a/config/example/dbconfig.txt +++ b/config/example/dbconfig.txt @@ -9,7 +9,7 @@ ## This value must be set to the version of the paradise schema in use. ## If this value does not match, the SQL database will not be loaded and an error will be generated. ## Roundstart will be delayed. -DB_VERSION 2 +DB_VERSION 4 ## Server the MySQL database can be found at. # Examples: localhost, 200.135.5.43, www.mysqldb.com, etc. @@ -26,11 +26,11 @@ FEEDBACK_DATABASE feedback ## Note, this does not change the table names in the database, you will have to do that yourself. ## IE: ## FEEDBACK_TABLEPREFIX erro_ -## FEEDBACK_TABLEPREFIX +## FEEDBACK_TABLEPREFIX ## FEEDBACK_TABLEPREFIX SS13_ ## ## Leave as is if you are using the standard schema file. -FEEDBACK_TABLEPREFIX +FEEDBACK_TABLEPREFIX ## Username/Login used to access the database. FEEDBACK_LOGIN username diff --git a/config/example/jobs_highpop.txt b/config/example/jobs_highpop.txt new file mode 100644 index 00000000000..962803ab886 --- /dev/null +++ b/config/example/jobs_highpop.txt @@ -0,0 +1,37 @@ +Captain=1 +Head of Personnel=1 +Head of Security=1 +Chief Engineer=1 +Research Director=1 +Chief Medical Officer=1 + +Station Engineer=5 +Roboticist=1 + +Medical Doctor=5 +Geneticist=2 +Virologist=1 + +Scientist=3 +Chemist=2 + +Bartender=1 +Botanist=2 +Chef=1 +Janitor=1 +Quartermaster=1 +Shaft Miner=3 + +Warden=1 +Detective=1 +Security Officer=7 + +Assistant=-1 +Atmospheric Technician=4 +Cargo Technician=3 +Chaplain=1 +Lawyer=2 +Librarian=1 + +AI=1 +Cyborg=1 \ No newline at end of file diff --git a/config/example/tos.txt b/config/example/tos.txt new file mode 100644 index 00000000000..eb43c50a083 --- /dev/null +++ b/config/example/tos.txt @@ -0,0 +1,3 @@ +

Welcome to Space Station 13!

+ +Terms of service goes here. \ No newline at end of file diff --git a/html/changelog.html b/html/changelog.html index 663a4b11154..da7a5e5ece1 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,189 @@ -->
+

23 June 2018

+

matt81093 updated:

+
    +
  • death squid hitbox position
  • +
+ +

19 June 2018

+

Anasari updated:

+
    +
  • Gloves of the north star is now categorized under highly visible and dangerous weapon instead of pointless badassery. (Because it's actually good)
  • +
+

Fox McCloud updated:

+
    +
  • Can cast spells on CentComm z-level during ragin' mages
  • +
+

MINIMAN10000 updated:

+
    +
  • Cardboard drop counts
  • +
+ +

17 June 2018

+

Fox McCloud updated:

+
    +
  • Fixes wizards not spawning with their clothes and backpack
  • +
  • It no longer snows on away missions
  • +
+

variableundefined updated:

+
    +
  • Nuclear challenge time limit now depends on round start time.
  • +
+ +

13 June 2018

+

Aurorablade updated:

+
    +
  • Fluff for Panzerskull
  • +
+

Fox McCloud updated:

+
    +
  • Medibots now actually talk, like beepsky
  • +
  • Adds Plastic surgery; fix someone's face or give them a new identity!
  • +
  • Having more than 50 cloneloss will render you "Unknown"
  • +
  • head disfigurement requires you to have more than 50 combined brute and burn damage, rather than tracking it separately
  • +
  • Fixes Cryoxadone and Rezadone not fixing disfigurement, Fixes fluorosulfuric acid not causing disfigurement at proper thresholds
  • +
  • Fixes syndicate medibot not being constructable from tactical medkits
  • +
  • Syndicate medibot and the mysterious medibot are better at treating brute and burn damage
  • +
  • Radiation event reworked; graphics updated--effects may be a bit more deadly
  • +
  • Buffed DIY chainsaws damage slightly
  • +
  • You now flip about when you spin with a double e-sword
  • +
  • Adds surgical augment to R&D
  • +
  • Tools on surgical augment are slightly faster at surgery
  • +
  • Wishgranter grants "Avatar of the Wishgranter" instead of making you a superhero
  • +
  • Toxin damage is stealthier and will no longer cause stinging spam message
  • +
+

Kyep updated:

+
    +
  • Additional job slots are now available at 80+ server population.
  • +
+

MINIMAN10000 updated:

+
    +
  • Airlock electronics lock
  • +
  • Airlock electronics close button
  • +
+

Piccione updated:

+
    +
  • Added Magboots to the Paramedic's EVA gear closet
  • +
+

Tayyyyyyy updated:

+
    +
  • Shadowling dethrall has been shortened to scalpel, hemostat, retractor, shine light, cautery
  • +
+ +

11 June 2018

+

FalseIncarnate updated:

+
    +
  • Food on utensils now properly inherits the name of the source dish.
  • +
  • Joined Souls rune can now properly can summon restrained targets with 3+ invokers.
  • +
+ +

09 June 2018

+

Fox McCloud updated:

+
    +
  • Fixes holobarrier icons being missing
  • +
+ +

08 June 2018

+

Alffd updated:

+
    +
  • Adds an automated emergency var on air alarms for mappers
  • +
+

Anasari updated:

+
    +
  • Fixes admin log for spray displaying (0,0,0) all the time.
  • +
+

Desolate updated:

+
    +
  • ED-209 code corrected to work properly. Floorbot code corrected to work properly.
  • +
+

and Dumbdumb updated:

+
    +
  • Unathi and Vox Sec Hardsuit update
  • +
+ +

05 June 2018

+

Kyep updated:

+
    +
  • The Terror Spider away mission now has spiders colonizing the west side of the map. Only the gateway room is safe.
  • +
+ +

04 June 2018

+

Fox McCloud updated:

+
    +
  • Hulk mutation no longer works at range (ie: punching/breaking windows/walls at range)
  • +
  • You must be on harm intent to damage things if you have hulk
  • +
  • Having hulk allows you to punch and damage just about anything
  • +
+

uraniummeltdown updated:

+
    +
  • You can smelt titanium and glass together to form titanium glass for building shuttle windows
  • +
  • You can smelt titanium, plasma and glass together to form plastitanium glass for building plastitanium windows
  • +
  • Fulltile windows now smooth, windows crack as they get damaged and can be repaired with help intent welder
  • +
  • Windows have deconstruction hints and show whether they can be rotated or not
  • +
  • Plasma glass no longer gets auto-colored
  • +
  • RCDs can deconstruct airlocks again, they have no force now though
  • +
  • Wielded fireaxe does a lot of damage to windows and grilles instead of just deleting them
  • +
  • Glass stacks now use stack recipes instead of a custom menu
  • +
+ +

31 May 2018

+

FalseIncarnate updated:

+
    +
  • The singulo no longer feeds on attention.
  • +
+ +

26 May 2018

+

Birdtalon updated:

+
    +
  • Holoparasite guide updated to include newer models. Small tooltip added for charger models.
  • +
  • laser tag gun projectiles now play appropriate sound when striking.
  • +
+

Citinited updated:

+
    +
  • Hopefully fixes all issues with disposals sending you to nullspace.
  • +
+

Fox McCloud updated:

+
    +
  • Fixes not being able to propel yourself through space by farting if you possessed both superfart and toxic farts
  • +
+

Kyep and Bxil updated:

+
    +
  • Prevents everyone and their mother from seeing through closed poddoors.
  • +
+

Tayyyyyyy updated:

+
    +
  • Most things will now use the correct pronouns.
  • +
  • Newscasters properly check for feed channel creation and wanted issue creation
  • +
  • ERT should deploy properly without admins now.
  • +
+ +

19 May 2018

+

Aurorablade updated:

+
    +
  • Vet Coat Fluff item.
  • +
  • Spacepod mod kit now uses kit blueprints and not KITE blueprints (spelling error).
  • +
+

Fox McCloud updated:

+
    +
  • Adds gloves of the North Star; get them on the uplink for 8 TC
  • +
  • Unarmed attacks now have their own icons, as does disarming.
  • +
  • Various mobs have their own custom icon attacks
  • +
  • Monkies now bite!
  • +
+ +

18 May 2018

+

Fox McCloud updated:

+
    +
  • Removes engineering and police tape
  • +
  • Adds security, atmospheric, and engineering holoprojectors
  • +
+

tigercat2000 updated:

+
    +
  • You can now lock a facing direction with shift+middle mouse button, or lock your direction towards an object by clicking on it with shift + ctrl + middle mouse button.
  • +
+

15 May 2018

Tayyyyyyy updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 77de385b0cc..fc15c520d08 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -6402,3 +6402,132 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. 2018-05-15: Tayyyyyyy: - bugfix: Pun pun is back! +2018-05-18: + Fox McCloud: + - rscdel: Removes engineering and police tape + - rscadd: Adds security, atmospheric, and engineering holoprojectors + tigercat2000: + - rscadd: You can now lock a facing direction with shift+middle mouse button, or + lock your direction towards an object by clicking on it with shift + ctrl + + middle mouse button. +2018-05-19: + Aurorablade: + - rscadd: Vet Coat Fluff item. + - tweak: Spacepod mod kit now uses kit blueprints and not KITE blueprints (spelling + error). + Fox McCloud: + - rscadd: Adds gloves of the North Star; get them on the uplink for 8 TC + - rscadd: Unarmed attacks now have their own icons, as does disarming. + - rscadd: Various mobs have their own custom icon attacks + - tweak: Monkies now bite! +2018-05-26: + Birdtalon: + - tweak: Holoparasite guide updated to include newer models. Small tooltip added + for charger models. + - bugfix: laser tag gun projectiles now play appropriate sound when striking. + Citinited: + - bugfix: Hopefully fixes all issues with disposals sending you to nullspace. + Fox McCloud: + - bugfix: Fixes not being able to propel yourself through space by farting if you + possessed both superfart and toxic farts + Kyep and Bxil: + - bugfix: Prevents everyone and their mother from seeing through closed poddoors. + Tayyyyyyy: + - rscadd: Most things will now use the correct pronouns. + - bugfix: Newscasters properly check for feed channel creation and wanted issue + creation + - bugfix: ERT should deploy properly without admins now. +2018-05-31: + FalseIncarnate: + - bugfix: The singulo no longer feeds on attention. +2018-06-04: + Fox McCloud: + - bugfix: 'Hulk mutation no longer works at range (ie: punching/breaking windows/walls + at range)' + - tweak: You must be on harm intent to damage things if you have hulk + - rscadd: Having hulk allows you to punch and damage just about anything + uraniummeltdown: + - rscadd: You can smelt titanium and glass together to form titanium glass for building + shuttle windows + - rscadd: You can smelt titanium, plasma and glass together to form plastitanium + glass for building plastitanium windows + - rscadd: Fulltile windows now smooth, windows crack as they get damaged and can + be repaired with help intent welder + - rscadd: Windows have deconstruction hints and show whether they can be rotated + or not + - bugfix: Plasma glass no longer gets auto-colored + - bugfix: RCDs can deconstruct airlocks again, they have no force now though + - tweak: Wielded fireaxe does a lot of damage to windows and grilles instead of + just deleting them + - tweak: Glass stacks now use stack recipes instead of a custom menu +2018-06-05: + Kyep: + - bugfix: The Terror Spider away mission now has spiders colonizing the west side + of the map. Only the gateway room is safe. +2018-06-08: + Alffd: + - rscadd: Adds an automated emergency var on air alarms for mappers + Anasari: + - bugfix: Fixes admin log for spray displaying (0,0,0) all the time. + Desolate: + - bugfix: ED-209 code corrected to work properly. Floorbot code corrected to work + properly. + and Dumbdumb: + - rscadd: Unathi and Vox Sec Hardsuit update +2018-06-09: + Fox McCloud: + - bugfix: Fixes holobarrier icons being missing +2018-06-11: + FalseIncarnate: + - bugfix: Food on utensils now properly inherits the name of the source dish. + - bugfix: Joined Souls rune can now properly can summon restrained targets with + 3+ invokers. +2018-06-13: + Aurorablade: + - rscadd: Fluff for Panzerskull + Fox McCloud: + - rscadd: Medibots now actually talk, like beepsky + - rscadd: Adds Plastic surgery; fix someone's face or give them a new identity! + - tweak: Having more than 50 cloneloss will render you "Unknown" + - tweak: head disfigurement requires you to have more than 50 combined brute and + burn damage, rather than tracking it separately + - bugfix: Fixes Cryoxadone and Rezadone not fixing disfigurement, Fixes fluorosulfuric + acid not causing disfigurement at proper thresholds + - bugfix: Fixes syndicate medibot not being constructable from tactical medkits + - tweak: Syndicate medibot and the mysterious medibot are better at treating brute + and burn damage + - tweak: Radiation event reworked; graphics updated--effects may be a bit more deadly + - tweak: Buffed DIY chainsaws damage slightly + - tweak: You now flip about when you spin with a double e-sword + - rscadd: Adds surgical augment to R&D + - tweak: Tools on surgical augment are slightly faster at surgery + - rscadd: Wishgranter grants "Avatar of the Wishgranter" instead of making you a + superhero + - tweak: Toxin damage is stealthier and will no longer cause stinging spam message + Kyep: + - rscadd: Additional job slots are now available at 80+ server population. + MINIMAN10000: + - rscdel: Airlock electronics lock + - bugfix: Airlock electronics close button + Piccione: + - rscadd: Added Magboots to the Paramedic's EVA gear closet + Tayyyyyyy: + - tweak: Shadowling dethrall has been shortened to scalpel, hemostat, retractor, + shine light, cautery +2018-06-17: + Fox McCloud: + - bugfix: Fixes wizards not spawning with their clothes and backpack + - bugfix: It no longer snows on away missions + variableundefined: + - tweak: Nuclear challenge time limit now depends on round start time. +2018-06-19: + Anasari: + - tweak: Gloves of the north star is now categorized under highly visible and dangerous + weapon instead of pointless badassery. (Because it's actually good) + Fox McCloud: + - tweak: Can cast spells on CentComm z-level during ragin' mages + MINIMAN10000: + - bugfix: Cardboard drop counts +2018-06-23: + matt81093: + - bugfix: death squid hitbox position diff --git a/html/changelogs/AutoChangeLog-pr-9111.yml b/html/changelogs/AutoChangeLog-pr-9111.yml new file mode 100644 index 00000000000..14da86085cf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9111.yml @@ -0,0 +1,4 @@ +author: "Alffd" +delete-after: True +changes: + - rscadd: "Additional logic to atmos throwing." diff --git a/icons/effects/96x96.dmi b/icons/effects/96x96.dmi index 2fdc968ebd6..a5195cc0167 100644 Binary files a/icons/effects/96x96.dmi and b/icons/effects/96x96.dmi differ diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index ee05d5f450e..060d8b77a27 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/effects/weather_effects.dmi b/icons/effects/weather_effects.dmi index 215cf53556f..da1523706e2 100644 Binary files a/icons/effects/weather_effects.dmi and b/icons/effects/weather_effects.dmi differ diff --git a/icons/mob/inhands/fluff_lefthand.dmi b/icons/mob/inhands/fluff_lefthand.dmi index 645c04a9ac9..a5721f518ce 100644 Binary files a/icons/mob/inhands/fluff_lefthand.dmi and b/icons/mob/inhands/fluff_lefthand.dmi differ diff --git a/icons/mob/inhands/fluff_righthand.dmi b/icons/mob/inhands/fluff_righthand.dmi index f0656ef8e22..50435f90e0d 100644 Binary files a/icons/mob/inhands/fluff_righthand.dmi and b/icons/mob/inhands/fluff_righthand.dmi differ diff --git a/icons/mob/species/unathi/helmet.dmi b/icons/mob/species/unathi/helmet.dmi index f969705ec83..14b099f3f45 100644 Binary files a/icons/mob/species/unathi/helmet.dmi and b/icons/mob/species/unathi/helmet.dmi differ diff --git a/icons/mob/species/unathi/suit.dmi b/icons/mob/species/unathi/suit.dmi index ebbfa5f9c73..1d0bcf81f27 100644 Binary files a/icons/mob/species/unathi/suit.dmi and b/icons/mob/species/unathi/suit.dmi differ diff --git a/icons/mob/species/vox/collar.dmi b/icons/mob/species/vox/collar.dmi index c0b8c6ba936..6c442c62f77 100644 Binary files a/icons/mob/species/vox/collar.dmi and b/icons/mob/species/vox/collar.dmi differ diff --git a/icons/mob/species/vox/helmet.dmi b/icons/mob/species/vox/helmet.dmi index c9227ce2119..a7186d611b6 100644 Binary files a/icons/mob/species/vox/helmet.dmi and b/icons/mob/species/vox/helmet.dmi differ diff --git a/icons/mob/species/vox/suit.dmi b/icons/mob/species/vox/suit.dmi index ca8289a3ccb..3af770d719a 100644 Binary files a/icons/mob/species/vox/suit.dmi and b/icons/mob/species/vox/suit.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 781bc710af3..209e052895a 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/ties.dmi b/icons/mob/ties.dmi index b3f92a3b57f..db92d8c21a6 100644 Binary files a/icons/mob/ties.dmi and b/icons/mob/ties.dmi differ diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index a63ff4f5daa..d1aa0e9805a 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ diff --git a/icons/obj/clothing/species/unathi/hats.dmi b/icons/obj/clothing/species/unathi/hats.dmi index be2fb4f62aa..1ee46571f66 100644 Binary files a/icons/obj/clothing/species/unathi/hats.dmi and b/icons/obj/clothing/species/unathi/hats.dmi differ diff --git a/icons/obj/clothing/species/unathi/suits.dmi b/icons/obj/clothing/species/unathi/suits.dmi index 34c3ea75105..30b590cc7ed 100644 Binary files a/icons/obj/clothing/species/unathi/suits.dmi and b/icons/obj/clothing/species/unathi/suits.dmi differ diff --git a/icons/obj/custom_items.dmi b/icons/obj/custom_items.dmi index d11043875fc..8296c4ceb7d 100644 Binary files a/icons/obj/custom_items.dmi and b/icons/obj/custom_items.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index f1c8b87aaa4..042c10b2aed 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/doors/windoor.dmi b/icons/obj/doors/windoor.dmi index 8104686b483..9bf105faaf6 100644 Binary files a/icons/obj/doors/windoor.dmi and b/icons/obj/doors/windoor.dmi differ diff --git a/icons/obj/engicart.dmi b/icons/obj/engicart.dmi index 36d45cdf04b..0e665bff8df 100644 Binary files a/icons/obj/engicart.dmi and b/icons/obj/engicart.dmi differ diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 22dc1384904..288785052cd 100644 Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index d828f2ee9de..5714fcf4c9f 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi index 119f3df0e37..83cb94a5ca3 100644 Binary files a/icons/obj/janitor.dmi and b/icons/obj/janitor.dmi differ diff --git a/icons/obj/smooth_structures/clockwork_window.dmi b/icons/obj/smooth_structures/clockwork_window.dmi new file mode 100644 index 00000000000..90309ac3d52 Binary files /dev/null and b/icons/obj/smooth_structures/clockwork_window.dmi differ diff --git a/icons/obj/smooth_structures/plasma_window.dmi b/icons/obj/smooth_structures/plasma_window.dmi new file mode 100644 index 00000000000..3d57d156f01 Binary files /dev/null and b/icons/obj/smooth_structures/plasma_window.dmi differ diff --git a/icons/obj/smooth_structures/plastitanium_window.dmi b/icons/obj/smooth_structures/plastitanium_window.dmi new file mode 100644 index 00000000000..82ac0306159 Binary files /dev/null and b/icons/obj/smooth_structures/plastitanium_window.dmi differ diff --git a/icons/obj/smooth_structures/pod_window.dmi b/icons/obj/smooth_structures/pod_window.dmi new file mode 100644 index 00000000000..0fe7501225c Binary files /dev/null and b/icons/obj/smooth_structures/pod_window.dmi differ diff --git a/icons/obj/smooth_structures/reinforced_window.dmi b/icons/obj/smooth_structures/reinforced_window.dmi index b5f24ebbd30..ed9a2a143e6 100644 Binary files a/icons/obj/smooth_structures/reinforced_window.dmi and b/icons/obj/smooth_structures/reinforced_window.dmi differ diff --git a/icons/obj/smooth_structures/rice_window.dmi b/icons/obj/smooth_structures/rice_window.dmi index e3a82935cf2..f5e7a6dd57a 100644 Binary files a/icons/obj/smooth_structures/rice_window.dmi and b/icons/obj/smooth_structures/rice_window.dmi differ diff --git a/icons/obj/smooth_structures/rplasma_window.dmi b/icons/obj/smooth_structures/rplasma_window.dmi new file mode 100644 index 00000000000..c64f42c7f5a Binary files /dev/null and b/icons/obj/smooth_structures/rplasma_window.dmi differ diff --git a/icons/obj/smooth_structures/shuttle_window.dmi b/icons/obj/smooth_structures/shuttle_window.dmi index 3db34cf1ba1..85924dc449b 100644 Binary files a/icons/obj/smooth_structures/shuttle_window.dmi and b/icons/obj/smooth_structures/shuttle_window.dmi differ diff --git a/icons/obj/smooth_structures/tinted_window.dmi b/icons/obj/smooth_structures/tinted_window.dmi index ab992353275..be9affafeea 100644 Binary files a/icons/obj/smooth_structures/tinted_window.dmi and b/icons/obj/smooth_structures/tinted_window.dmi differ diff --git a/icons/obj/smooth_structures/window.dmi b/icons/obj/smooth_structures/window.dmi index 0197f5b20a7..670713bcfe0 100644 Binary files a/icons/obj/smooth_structures/window.dmi and b/icons/obj/smooth_structures/window.dmi differ diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi index 997642dcf29..d4b8e837db6 100755 Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ diff --git a/icons/obj/status_display.dmi b/icons/obj/status_display.dmi index b131da89349..81ccc415de1 100644 Binary files a/icons/obj/status_display.dmi and b/icons/obj/status_display.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index 0b17038ade5..838503bbda1 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/policetape.dmi b/icons/policetape.dmi deleted file mode 100644 index 74a758335a9..00000000000 Binary files a/icons/policetape.dmi and /dev/null differ diff --git a/paradise.dme b/paradise.dme index 303c0ebaed9..095e5ad2a78 100644 --- a/paradise.dme +++ b/paradise.dme @@ -77,6 +77,7 @@ #include "code\__HELPERS\matrices.dm" #include "code\__HELPERS\mobs.dm" #include "code\__HELPERS\names.dm" +#include "code\__HELPERS\pronouns.dm" #include "code\__HELPERS\qdel.dm" #include "code\__HELPERS\sanitize_values.dm" #include "code\__HELPERS\text.dm" @@ -197,7 +198,6 @@ #include "code\controllers\Processes\obj.dm" #include "code\controllers\Processes\shuttles.dm" #include "code\controllers\Processes\ticker.dm" -#include "code\controllers\Processes\weather.dm" #include "code\controllers\ProcessScheduler\core\process.dm" #include "code\controllers\ProcessScheduler\core\processScheduler.dm" #include "code\controllers\subsystem\air.dm" @@ -212,6 +212,7 @@ #include "code\controllers\subsystem\sun.dm" #include "code\controllers\subsystem\throwing.dm" #include "code\controllers\subsystem\timer.dm" +#include "code\controllers\subsystem\weather.dm" #include "code\controllers\subsystem\processing\processing.dm" #include "code\datums\action.dm" #include "code\datums\ai_law_sets.dm" @@ -223,6 +224,7 @@ #include "code\datums\datum.dm" #include "code\datums\datumvars.dm" #include "code\datums\gas_mixture.dm" +#include "code\datums\holocall.dm" #include "code\datums\hud.dm" #include "code\datums\mind.dm" #include "code\datums\mixed.dm" @@ -239,9 +241,6 @@ #include "code\datums\uplink_item.dm" #include "code\datums\vision_override.dm" #include "code\datums\vr.dm" -#include "code\datums\antagonists\antag_datum.dm" -#include "code\datums\antagonists\antag_helpers.dm" -#include "code\datums\antagonists\antag_team.dm" #include "code\datums\cache\air_alarm.dm" #include "code\datums\cache\apc.dm" #include "code\datums\cache\cache.dm" @@ -314,6 +313,7 @@ #include "code\datums\helper_datums\topic_input.dm" #include "code\datums\looping_sounds\looping_sound.dm" #include "code\datums\looping_sounds\machinery_sounds.dm" +#include "code\datums\looping_sounds\weather.dm" #include "code\datums\outfits\outfit.dm" #include "code\datums\outfits\outfit_admin.dm" #include "code\datums\ruins\space.dm" @@ -353,7 +353,10 @@ #include "code\datums\status_effects\status_effect.dm" #include "code\datums\vr\level.dm" #include "code\datums\weather\weather.dm" -#include "code\datums\weather\weather_types.dm" +#include "code\datums\weather\weather_types\ash_storm.dm" +#include "code\datums\weather\weather_types\floor_is_lava.dm" +#include "code\datums\weather\weather_types\radiation_storm.dm" +#include "code\datums\weather\weather_types\snow_storm.dm" #include "code\datums\wires\airlock.dm" #include "code\datums\wires\alarm.dm" #include "code\datums\wires\apc.dm" @@ -403,8 +406,6 @@ #include "code\game\dna\genes\powers.dm" #include "code\game\dna\genes\vg_disabilities.dm" #include "code\game\dna\genes\vg_powers.dm" -#include "code\game\gamemodes\antag_hud.dm" -#include "code\game\gamemodes\antag_spawner.dm" #include "code\game\gamemodes\factions.dm" #include "code\game\gamemodes\game_mode.dm" #include "code\game\gamemodes\gameticker.dm" @@ -528,6 +529,7 @@ #include "code\game\jobs\job_controller.dm" #include "code\game\jobs\job_exp.dm" #include "code\game\jobs\job_objective.dm" +#include "code\game\jobs\job_scaling.dm" #include "code\game\jobs\jobs.dm" #include "code\game\jobs\whitelist.dm" #include "code\game\jobs\job\central.dm" @@ -629,7 +631,6 @@ #include "code\game\machinery\computer\computer.dm" #include "code\game\machinery\computer\crew.dm" #include "code\game\machinery\computer\HolodeckControl.dm" -#include "code\game\machinery\computer\hologram.dm" #include "code\game\machinery\computer\honkputer.dm" #include "code\game\machinery\computer\law.dm" #include "code\game\machinery\computer\medical.dm" @@ -769,7 +770,6 @@ #include "code\game\objects\items\flag.dm" #include "code\game\objects\items\latexballoon.dm" #include "code\game\objects\items\misc.dm" -#include "code\game\objects\items\policetape.dm" #include "code\game\objects\items\random_items.dm" #include "code\game\objects\items\shooting_range.dm" #include "code\game\objects\items\toys.dm" @@ -960,10 +960,10 @@ #include "code\game\objects\structures\false_walls.dm" #include "code\game\objects\structures\flora.dm" #include "code\game\objects\structures\foodcart.dm" -#include "code\game\objects\structures\fullwindow.dm" #include "code\game\objects\structures\girders.dm" #include "code\game\objects\structures\grille.dm" #include "code\game\objects\structures\guillotine.dm" +#include "code\game\objects\structures\holosign.dm" #include "code\game\objects\structures\inflatable.dm" #include "code\game\objects\structures\janicart.dm" #include "code\game\objects\structures\kitchen_spike.dm" @@ -1135,6 +1135,12 @@ #include "code\modules\alarm\fire_alarm.dm" #include "code\modules\alarm\motion_alarm.dm" #include "code\modules\alarm\power_alarm.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\wishgranter\wishgranter.dm" #include "code\modules\arcade\arcade_base.dm" #include "code\modules\arcade\arcade_prize.dm" #include "code\modules\arcade\claw_game.dm" @@ -2105,6 +2111,7 @@ #include "code\modules\research\xenobiology\xenobio_camera.dm" #include "code\modules\research\xenobiology\xenobiology.dm" #include "code\modules\ruins\ruin_areas.dm" +#include "code\modules\scripting\__defines.dm" #include "code\modules\scripting\Errors.dm" #include "code\modules\scripting\Options.dm" #include "code\modules\scripting\AST\AST Nodes.dm" @@ -2155,7 +2162,6 @@ #include "code\modules\surgery\cavity_implant.dm" #include "code\modules\surgery\dental_implant.dm" #include "code\modules\surgery\encased.dm" -#include "code\modules\surgery\face.dm" #include "code\modules\surgery\generic.dm" #include "code\modules\surgery\helpers.dm" #include "code\modules\surgery\implant_removal.dm" @@ -2163,6 +2169,7 @@ #include "code\modules\surgery\limb_reattach.dm" #include "code\modules\surgery\organs_internal.dm" #include "code\modules\surgery\other.dm" +#include "code\modules\surgery\plastic_surgery.dm" #include "code\modules\surgery\remove_embedded_object.dm" #include "code\modules\surgery\rig_removal.dm" #include "code\modules\surgery\robotics.dm" diff --git a/sound/lavaland/ash_storm_end.ogg b/sound/lavaland/ash_storm_end.ogg deleted file mode 100644 index f9b01453dda..00000000000 Binary files a/sound/lavaland/ash_storm_end.ogg and /dev/null differ diff --git a/sound/lavaland/ash_storm_start.ogg b/sound/lavaland/ash_storm_start.ogg deleted file mode 100644 index 4b9bebffd08..00000000000 Binary files a/sound/lavaland/ash_storm_start.ogg and /dev/null differ diff --git a/sound/lavaland/ash_storm_windup.ogg b/sound/lavaland/ash_storm_windup.ogg deleted file mode 100644 index a9f0fa3270e..00000000000 Binary files a/sound/lavaland/ash_storm_windup.ogg and /dev/null differ diff --git a/sound/voice/mapple.ogg b/sound/voice/mapple.ogg new file mode 100644 index 00000000000..21e26742ca1 Binary files /dev/null and b/sound/voice/mapple.ogg differ diff --git a/sound/voice/mcatch.ogg b/sound/voice/mcatch.ogg new file mode 100644 index 00000000000..07b8aaab75c Binary files /dev/null and b/sound/voice/mcatch.ogg differ diff --git a/sound/voice/mcoming.ogg b/sound/voice/mcoming.ogg new file mode 100644 index 00000000000..d3eb9e467f4 Binary files /dev/null and b/sound/voice/mcoming.ogg differ diff --git a/sound/voice/mdelicious.ogg b/sound/voice/mdelicious.ogg new file mode 100644 index 00000000000..5158538580e Binary files /dev/null and b/sound/voice/mdelicious.ogg differ diff --git a/sound/voice/mfeelbetter.ogg b/sound/voice/mfeelbetter.ogg new file mode 100644 index 00000000000..fdbe57fd2e9 Binary files /dev/null and b/sound/voice/mfeelbetter.ogg differ diff --git a/sound/voice/mflies.ogg b/sound/voice/mflies.ogg new file mode 100644 index 00000000000..831281ebbee Binary files /dev/null and b/sound/voice/mflies.ogg differ diff --git a/sound/voice/mhelp.ogg b/sound/voice/mhelp.ogg new file mode 100644 index 00000000000..516d5db068d Binary files /dev/null and b/sound/voice/mhelp.ogg differ diff --git a/sound/voice/minjured.ogg b/sound/voice/minjured.ogg new file mode 100644 index 00000000000..0e968b3980c Binary files /dev/null and b/sound/voice/minjured.ogg differ diff --git a/sound/voice/minsult.ogg b/sound/voice/minsult.ogg new file mode 100644 index 00000000000..017292977a1 Binary files /dev/null and b/sound/voice/minsult.ogg differ diff --git a/sound/voice/mlive.ogg b/sound/voice/mlive.ogg new file mode 100644 index 00000000000..ceb0dec9a34 Binary files /dev/null and b/sound/voice/mlive.ogg differ diff --git a/sound/voice/mlost.ogg b/sound/voice/mlost.ogg new file mode 100644 index 00000000000..7b332ac346a Binary files /dev/null and b/sound/voice/mlost.ogg differ diff --git a/sound/voice/mno.ogg b/sound/voice/mno.ogg new file mode 100644 index 00000000000..030e43a0109 Binary files /dev/null and b/sound/voice/mno.ogg differ diff --git a/sound/voice/mpatchedup.ogg b/sound/voice/mpatchedup.ogg new file mode 100644 index 00000000000..1314f6ee471 Binary files /dev/null and b/sound/voice/mpatchedup.ogg differ diff --git a/sound/voice/mradar.ogg b/sound/voice/mradar.ogg new file mode 100644 index 00000000000..ad347a6d891 Binary files /dev/null and b/sound/voice/mradar.ogg differ diff --git a/sound/voice/msurgeon.ogg b/sound/voice/msurgeon.ogg new file mode 100644 index 00000000000..a300ee57ef6 Binary files /dev/null and b/sound/voice/msurgeon.ogg differ diff --git a/sound/weather/ashstorm/inside/active_end.ogg b/sound/weather/ashstorm/inside/active_end.ogg new file mode 100644 index 00000000000..959bf5773eb Binary files /dev/null and b/sound/weather/ashstorm/inside/active_end.ogg differ diff --git a/sound/weather/ashstorm/inside/active_mid1.ogg b/sound/weather/ashstorm/inside/active_mid1.ogg new file mode 100644 index 00000000000..95244cd2b7c Binary files /dev/null and b/sound/weather/ashstorm/inside/active_mid1.ogg differ diff --git a/sound/weather/ashstorm/inside/active_mid2.ogg b/sound/weather/ashstorm/inside/active_mid2.ogg new file mode 100644 index 00000000000..a45584b9f31 Binary files /dev/null and b/sound/weather/ashstorm/inside/active_mid2.ogg differ diff --git a/sound/weather/ashstorm/inside/active_mid3.ogg b/sound/weather/ashstorm/inside/active_mid3.ogg new file mode 100644 index 00000000000..be2e672fa0e Binary files /dev/null and b/sound/weather/ashstorm/inside/active_mid3.ogg differ diff --git a/sound/weather/ashstorm/inside/active_start.ogg b/sound/weather/ashstorm/inside/active_start.ogg new file mode 100644 index 00000000000..3efab12ef26 Binary files /dev/null and b/sound/weather/ashstorm/inside/active_start.ogg differ diff --git a/sound/weather/ashstorm/inside/weak_end.ogg b/sound/weather/ashstorm/inside/weak_end.ogg new file mode 100644 index 00000000000..416b75a9b84 Binary files /dev/null and b/sound/weather/ashstorm/inside/weak_end.ogg differ diff --git a/sound/weather/ashstorm/inside/weak_mid1.ogg b/sound/weather/ashstorm/inside/weak_mid1.ogg new file mode 100644 index 00000000000..d3211c6b5fc Binary files /dev/null and b/sound/weather/ashstorm/inside/weak_mid1.ogg differ diff --git a/sound/weather/ashstorm/inside/weak_mid2.ogg b/sound/weather/ashstorm/inside/weak_mid2.ogg new file mode 100644 index 00000000000..b6491a7afb8 Binary files /dev/null and b/sound/weather/ashstorm/inside/weak_mid2.ogg differ diff --git a/sound/weather/ashstorm/inside/weak_mid3.ogg b/sound/weather/ashstorm/inside/weak_mid3.ogg new file mode 100644 index 00000000000..95238c72d40 Binary files /dev/null and b/sound/weather/ashstorm/inside/weak_mid3.ogg differ diff --git a/sound/weather/ashstorm/inside/weak_start.ogg b/sound/weather/ashstorm/inside/weak_start.ogg new file mode 100644 index 00000000000..59abf1937dc Binary files /dev/null and b/sound/weather/ashstorm/inside/weak_start.ogg differ diff --git a/sound/weather/ashstorm/outside/active_end.ogg b/sound/weather/ashstorm/outside/active_end.ogg new file mode 100644 index 00000000000..95149d846cc Binary files /dev/null and b/sound/weather/ashstorm/outside/active_end.ogg differ diff --git a/sound/weather/ashstorm/outside/active_mid1.ogg b/sound/weather/ashstorm/outside/active_mid1.ogg new file mode 100644 index 00000000000..189528ab569 Binary files /dev/null and b/sound/weather/ashstorm/outside/active_mid1.ogg differ diff --git a/sound/weather/ashstorm/outside/active_mid2.ogg b/sound/weather/ashstorm/outside/active_mid2.ogg new file mode 100644 index 00000000000..92317f2e0a7 Binary files /dev/null and b/sound/weather/ashstorm/outside/active_mid2.ogg differ diff --git a/sound/weather/ashstorm/outside/active_mid3.ogg b/sound/weather/ashstorm/outside/active_mid3.ogg new file mode 100644 index 00000000000..34846bfd42c Binary files /dev/null and b/sound/weather/ashstorm/outside/active_mid3.ogg differ diff --git a/sound/weather/ashstorm/outside/active_start.ogg b/sound/weather/ashstorm/outside/active_start.ogg new file mode 100644 index 00000000000..8b3acf1a153 Binary files /dev/null and b/sound/weather/ashstorm/outside/active_start.ogg differ diff --git a/sound/weather/ashstorm/outside/weak_end.ogg b/sound/weather/ashstorm/outside/weak_end.ogg new file mode 100644 index 00000000000..55db2fc3565 Binary files /dev/null and b/sound/weather/ashstorm/outside/weak_end.ogg differ diff --git a/sound/weather/ashstorm/outside/weak_mid1.ogg b/sound/weather/ashstorm/outside/weak_mid1.ogg new file mode 100644 index 00000000000..56faa9ad26c Binary files /dev/null and b/sound/weather/ashstorm/outside/weak_mid1.ogg differ diff --git a/sound/weather/ashstorm/outside/weak_mid2.ogg b/sound/weather/ashstorm/outside/weak_mid2.ogg new file mode 100644 index 00000000000..0c836ad220a Binary files /dev/null and b/sound/weather/ashstorm/outside/weak_mid2.ogg differ diff --git a/sound/weather/ashstorm/outside/weak_mid3.ogg b/sound/weather/ashstorm/outside/weak_mid3.ogg new file mode 100644 index 00000000000..f2cbfb0f4b9 Binary files /dev/null and b/sound/weather/ashstorm/outside/weak_mid3.ogg differ diff --git a/sound/weather/ashstorm/outside/weak_start.ogg b/sound/weather/ashstorm/outside/weak_start.ogg new file mode 100644 index 00000000000..1ac59c36f05 Binary files /dev/null and b/sound/weather/ashstorm/outside/weak_start.ogg differ