diff --git a/.travis.yml b/.travis.yml index 802c9435bd6..cf15b927ed0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,6 @@ -#pretending we're C because otherwise ruby/rvm will initialize, even with "language: dm". +#pretending we're C because otherwise ruby will initialize, even with "language: dm". language: c +sudo: false env: global: @@ -9,22 +10,32 @@ env: - DM_MAPFILE="tgstation2" - DM_MAPFILE="metastation" - DM_MAPFILE="ministation" - -before_install: - - sudo apt-get update -qq - - sudo apt-get install libc6:i386 libgcc1:i386 libstdc++6:i386 -qq - - sudo apt-get install python -qq - - sudo apt-get install python-pip -qq - - sudo pip install PyYaml -q - - sudo pip install beautifulsoup4 -q - + +cache: + directories: + - $HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR} + +addons: + apt: + packages: + - libc6-i386 + - libgcc1:i386 + - libstdc++6:i386 + - python + - python-pip + install: - - curl "http://www.byond.com/download/build/${BYOND_MAJOR}/${BYOND_MAJOR}.${BYOND_MINOR}_byond_linux.zip" -o byond.zip - - unzip byond.zip - - cd byond - - sudo make install - - cd .. + - pip install --user PyYaml -q + - pip install --user beautifulsoup4 -q + +before_script: + - chmod +x ./install-byond.sh + - ./install-byond.sh script: - - bash dm.sh -M${DM_MAPFILE} tgstation.dme + - shopt -s globstar + - (! grep 'step_[xy]' _maps/**/*.dmm) + - md5sum -c - <<< "29d5a6e23d172846354505e60ecfe7e7 *html/changelogs/example.yml" - python tools/ss13_genchangelog.py html/changelog.html html/changelogs + - source $HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR}/byond/bin/byondsetup + - bash dm.sh -M${DM_MAPFILE} tgstation.dme diff --git a/SQL/database_changelog.txt b/SQL/database_changelog.txt index 9a56620e157..bf305298ce2 100644 --- a/SQL/database_changelog.txt +++ b/SQL/database_changelog.txt @@ -1,3 +1,13 @@ +28 July 2015, by Jordie0608 + +Modified table 'memo', removing 'id' column and making 'ckey' primary. + +ALTER TABLE `feedback`.`memo` DROP COLUMN `id`, DROP PRIMARY KEY, ADD PRIMARY KEY (`ckey`) + +Remember to add prefix to the table name if you use them. + +---------------------------------------------------- + 19 July 2015, by Jordie0608 Added new table 'memo' for use with admin memos. diff --git a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql index b6797101692..caeec1c432c 100644 --- a/SQL/tgstation_schema.sql +++ b/SQL/tgstation_schema.sql @@ -329,13 +329,12 @@ DROP TABLE IF EXISTS `memo`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `memo` ( - `id` int(11) NOT NULL AUTO_INCREMENT, `ckey` varchar(32) NOT NULL, `memotext` text NOT NULL, `timestamp` datetime NOT NULL, `last_editor` varchar(32), `edits` text, - PRIMARY KEY (`id`) + PRIMARY KEY (`ckey`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/SQL/tgstation_schema_prefixed.sql b/SQL/tgstation_schema_prefixed.sql index 70e02e2c304..93ba765835d 100644 --- a/SQL/tgstation_schema_prefixed.sql +++ b/SQL/tgstation_schema_prefixed.sql @@ -324,13 +324,12 @@ DROP TABLE IF EXISTS `SS13_memo`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `SS13_memo` ( - `id` int(11) NOT NULL AUTO_INCREMENT, `ckey` varchar(32) NOT NULL, `memotext` text NOT NULL, `timestamp` datetime NOT NULL, `last_editor` varchar(32), `edits` text, - PRIMARY KEY (`id`) + PRIMARY KEY (`ckey`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/_maps/RandomZLevels/centcomAway.dmm b/_maps/RandomZLevels/centcomAway.dmm index d0abc744725..b4ae110fca4 100644 --- a/_maps/RandomZLevels/centcomAway.dmm +++ b/_maps/RandomZLevels/centcomAway.dmm @@ -12,7 +12,7 @@ "al" = (/obj/machinery/vending/dinnerware,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe) "am" = (/obj/structure/closet/chefcloset,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe) "an" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe) -"ao" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe) +"ao" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe) "ap" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe) "aq" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe) "ar" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/kitchen/rollingpin,/turf/simulated/floor/plasteel{tag = "icon-greenfull (NORTH)"; icon_state = "greenfull"; dir = 1},/area/awaymission/centcomAway/cafe) @@ -73,7 +73,7 @@ "bu" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/awaymission/centcomAway/cafe) "bv" = (/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/awaymission/centcomAway/cafe) "bw" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/awaymission/centcomAway/cafe) -"bx" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe) +"bx" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal/bin,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe) "by" = (/turf/simulated/floor/plasteel,/area/awaymission/centcomAway/cafe) "bz" = (/obj/structure/closet/secure_closet/hydroponics,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/centcomAway/cafe) "bA" = (/obj/structure/rack,/obj/item/weapon/extinguisher/mini,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/gloves/black,/turf/simulated/floor/plating,/area/awaymission/centcomAway/maint) @@ -172,7 +172,7 @@ "dp" = (/obj/structure/largecrate,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHEAST)"; icon_state = "warnplate"; dir = 5},/area/awaymission/centcomAway/hangar) "dq" = (/obj/structure/dresser,/turf/simulated/floor/fancy/carpet,/area/awaymission/centcomAway/cafe) "dr" = (/obj/structure/table/reinforced,/obj/item/device/t_scanner,/turf/simulated/floor/plasteel{icon_state = "yellow"},/area/awaymission/centcomAway/general) -"ds" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe) +"ds" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/bin,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe) "dt" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/awaymission/centcomAway/cafe) "du" = (/turf/simulated/shuttle/wall{icon_state = "swall0"; dir = 2},/area/awaymission/centcomAway/hangar) "dv" = (/obj/structure/closet/crate,/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/awaymission/centcomAway/hangar) @@ -217,7 +217,7 @@ "ei" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe) "ej" = (/obj/machinery/vending/dinnerware,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe) "ek" = (/obj/structure/closet/chefcloset,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe) -"el" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe) +"el" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe) "em" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe) "en" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe) "eo" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/kitchen/rollingpin,/turf/simulated/floor/plasteel{tag = "icon-redfull"; icon_state = "redfull"},/area/awaymission/centcomAway/cafe) diff --git a/_maps/RandomZLevels/listeningpost.dmm b/_maps/RandomZLevels/listeningpost.dmm index e4bed560e50..fada5c5f7c4 100644 --- a/_maps/RandomZLevels/listeningpost.dmm +++ b/_maps/RandomZLevels/listeningpost.dmm @@ -27,7 +27,7 @@ "A" = (/obj/structure/closet,/obj/item/clothing/gloves/boxing,/turf/simulated/floor/plasteel,/area/awaymission/listeningpost) "B" = (/obj/structure/filingcabinet,/obj/item/weapon/paper{info = "A good start to the operation: intercepted Nanotrasen military communications. A convoy is scheduled to transfer nuclear warheads to a new military base. This is as good a chance as any to get our hands on some heavy weaponry, I suggest we take it."; name = "april report"},/obj/item/weapon/paper{info = "Nothing of real interest to report this month. I have intercepted faint transmissions from what appears to be some sort of pirate radio station. They do not appear to be relevant to my assignment."; name = "may report"},/obj/item/weapon/paper{info = "Nanotrasen communications have been noticably less frequent recently. The pirate radio station I found last month has been transmitting pro-Nanotrasen propaganda. I will continue to monitor it."; name = "june report"},/obj/item/weapon/paper{info = "Nothing of interest to report."; name = "july report"},/obj/item/weapon/paper{info = "Nothing of interest to report."; name = "august report"},/obj/item/weapon/paper{info = "Nothing of interest to report."; name = "september report"},/obj/item/weapon/paper{info = "Nothing of interest to report."; name = "october report"},/obj/item/weapon/paper{info = "1 x Stechtkin pistol - $600
1 x silencer - $200
shipping charge - $4360
total - $5160"; name = "receipt"},/turf/simulated/floor/plasteel,/area/awaymission/listeningpost) "C" = (/obj/structure/table,/obj/item/weapon/paper{info = "Mission Details: You have been assigned to a newly constructed listening post constructed within an asteroid in Nanotrasen space to monitor their plasma mining operations. Accurate intel is crucial to the success of our operatives onboard, do not fail us."; name = "mission briefing"},/turf/simulated/floor/plasteel,/area/awaymission/listeningpost) -"D" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/listeningpost) +"D" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/listeningpost) "E" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/awaymission/listeningpost) "F" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/mineral,/area/mine/unexplored) "G" = (/obj/machinery/door/airlock{name = "Toilet"},/turf/simulated/floor/plasteel,/area/awaymission/listeningpost) diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 1eff96fbe75..1db250f8ea2 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -327,7 +327,7 @@ "go" = (/turf/simulated/floor/plasteel{dir = 1; heat_capacity = 1e+006; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "gp" = (/obj/structure/table,/obj/item/device/mmi,/obj/item/device/mmi,/obj/item/device/mmi,/obj/structure/alien/weeds,/turf/simulated/floor/plasteel{dir = 1; heat_capacity = 1e+006; icon_state = "warnwhite"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "gq" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) -"gr" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; dir = 4; name = "Acid-Proof disposal pipe"; unacidable = 1},/obj/structure/alien/weeds,/turf/simulated/floor/plasteel{dir = 8; heat_capacity = 1e+006; icon_state = "warning"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) +"gr" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; dir = 4; name = "Acid-Proof disposal pipe"; unacidable = 1},/obj/structure/alien/weeds,/turf/simulated/floor/plasteel{dir = 8; heat_capacity = 1e+006; icon_state = "warning"},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "gs" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/disposalpipe/segment{desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; dir = 4; name = "Acid-Proof disposal pipe"; unacidable = 1},/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 = "Awaylab"; name = "Acid-Proof containment chamber blast door"; unacidable = 1},/obj/structure/cable,/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating{heat_capacity = 1e+006},/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "gt" = (/obj/structure/disposalpipe/segment{desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; dir = 4; name = "Acid-Proof disposal pipe"; unacidable = 1},/obj/structure/alien/weeds,/obj/structure/alien/resin/wall,/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) "gu" = (/obj/structure/disposalpipe/segment{desc = "An underfloor disposal pipe. This one has been applied with an acid-proof coating."; dir = 2; icon_state = "pipe-c"; name = "Acid-Proof disposal pipe"; unacidable = 1},/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/engine,/area/awaycontent/a2{has_gravity = 1; name = "MO19 Research"}) @@ -715,7 +715,7 @@ "nM" = (/turf/simulated/floor/plasteel{carbon_dioxide = 48.7; dir = 4; heat_capacity = 1e+006; icon_state = "neutral"; nitrogen = 13.2; oxygen = 32.4; temperature = 251},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "nN" = (/obj/machinery/door/airlock{icon_state = "door_locked"; id_tag = "awaydorm3"; locked = 1; name = "Dorm 3"},/turf/simulated/floor/plasteel{heat_capacity = 1e+006},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "nO" = (/obj/item/weapon/pen,/obj/item/weapon/storage/pill_bottle{pixel_y = 6},/turf/simulated/floor/fancy/carpet{heat_capacity = 1e+006},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) -"nP" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating{heat_capacity = 1e+006},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) +"nP" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating{heat_capacity = 1e+006},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "nQ" = (/obj/structure/closet,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating{heat_capacity = 1e+006},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "nR" = (/obj/structure/table,/obj/item/toy/cards/deck,/turf/simulated/floor/plasteel{broken = 1; carbon_dioxide = 48.7; dir = 8; heat_capacity = 1e+006; icon_state = "damaged1"; nitrogen = 13.2; oxygen = 32.4; tag = "icon-damaged1 (WEST)"; temperature = 251},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "nS" = (/obj/structure/closet/secure_closet{desc = "It's a secure locker for personnel. The first card swiped gains control."; icon_broken = "cabinetdetective_broken"; icon_closed = "cabinetdetective"; icon_locked = "cabinetdetective_locked"; icon_off = "cabinetdetective_broken"; icon_opened = "cabinetdetective_open"; icon_state = "cabinetdetective"; locked = 0; name = "personal closet"; req_access_txt = "201"},/obj/item/clothing/under/suit_jacket/burgundy,/turf/simulated/floor/fancy/carpet{heat_capacity = 1e+006},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) diff --git a/_maps/RandomZLevels/spacehotel.dmm b/_maps/RandomZLevels/spacehotel.dmm index 2d4a70dd1ac..4fea9e60517 100644 --- a/_maps/RandomZLevels/spacehotel.dmm +++ b/_maps/RandomZLevels/spacehotel.dmm @@ -2,7 +2,7 @@ "ab" = (/turf/unsimulated/wall,/area/space) "ac" = (/turf/unsimulated/wall,/area/awaymission) "ad" = (/obj/effect/decal/cleanable/blood/old,/turf/unsimulated/wall,/area/awaymission) -"ae" = (/obj/machinery/power/apc{step_y = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/unsimulated/wall,/area/awaymission) +"ae" = (/obj/machinery/power/apc,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/unsimulated/wall,/area/awaymission) "af" = (/obj/machinery/power/terminal,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/awaymission) "ag" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/awaymission) "ah" = (/obj/item/stack/cable_coil/random,/obj/effect/decal/remains/human,/turf/simulated/floor/plating,/area/awaymission) diff --git a/_maps/RandomZLevels/stationCollision.dmm b/_maps/RandomZLevels/stationCollision.dmm index a7826a47eeb..0f6a280b46c 100644 --- a/_maps/RandomZLevels/stationCollision.dmm +++ b/_maps/RandomZLevels/stationCollision.dmm @@ -263,7 +263,7 @@ "fc" = (/turf/simulated/floor/plasteel,/area/awaymission/northblock) "fd" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/awaymission/northblock) "fe" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/northblock) -"ff" = (/obj/structure/table,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/capacitor{pixel_x = -3},/obj/item/weapon/stock_parts/scanning_module{pixel_x = 3; pixel_y = 3},/obj/item/weapon/stock_parts/scanning_module{pixel_y = -3; step_y = 0},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) +"ff" = (/obj/structure/table,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/capacitor{pixel_x = -3},/obj/item/weapon/stock_parts/scanning_module{pixel_x = 3; pixel_y = 3},/obj/item/weapon/stock_parts/scanning_module{pixel_y = -3},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "fg" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "fh" = (/obj/structure/table,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator{pixel_x = -3; pixel_y = 3},/obj/item/weapon/stock_parts/micro_laser{pixel_x = -3; pixel_y = -3},/obj/item/weapon/stock_parts/micro_laser{pixel_x = 3; pixel_y = 3},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "fi" = (/obj/machinery/computer/crew,/turf/simulated/floor/plasteel{dir = 4; icon_state = "bluecorner"},/area/awaymission/northblock) diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index c0324e1d23e..dd3dcd35a4f 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -173,7 +173,7 @@ "dq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "dr" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/plasteel{dir = 1; heat_capacity = 1e+006; icon_state = "vault"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "ds" = (/obj/machinery/vending/hydroseeds{slogan_delay = 700},/turf/simulated/floor/plasteel{dir = 1; heat_capacity = 1e+006; icon_state = "vault"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"dt" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/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 = 8; heat_capacity = 1e+006; icon_state = "vault"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"dt" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/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 = 8; heat_capacity = 1e+006; icon_state = "vault"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "du" = (/obj/machinery/seed_extractor,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; heat_capacity = 1e+006; icon_state = "vault"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "dv" = (/obj/machinery/biogenerator,/turf/simulated/floor/plasteel{dir = 4; heat_capacity = 1e+006; icon_state = "vault"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "dw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) @@ -309,7 +309,7 @@ "fW" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -28},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{heat_capacity = 1e+006},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "fX" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "fY" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"fZ" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/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{heat_capacity = 1e+006; icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"fZ" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/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{heat_capacity = 1e+006; icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "ga" = (/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "showroomfloor"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "gb" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "showroomfloor"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "gc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{heat_capacity = 1e+006},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) @@ -375,7 +375,7 @@ "hk" = (/obj/machinery/vending/snack,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "hl" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "hm" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) -"hn" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) +"hn" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "ho" = (/obj/structure/table,/obj/item/stack/packageWrap,/obj/item/weapon/reagent_containers/glass/rag,/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "hp" = (/obj/machinery/vending/boozeomat{req_access_txt = "0"},/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "hq" = (/obj/structure/extinguisher_cabinet{pixel_x = -25; pixel_y = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; heat_capacity = 1e+006; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) @@ -444,7 +444,7 @@ "iB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 1; heat_capacity = 1e+006; icon_state = "warnwhite"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "iC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; heat_capacity = 1e+006; icon_state = "warnwhitecorner"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "iD" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "white"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"iE" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 8; heat_capacity = 1e+006; icon_state = "whitehall"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"iE" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 8; heat_capacity = 1e+006; icon_state = "whitehall"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "iF" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{heat_capacity = 1e+006},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "iG" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "iH" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass,/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) @@ -470,7 +470,7 @@ "jb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{heat_capacity = 1e+006},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "jc" = (/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "jd" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) -"je" = (/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; heat_capacity = 1e+006; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) +"je" = (/obj/machinery/disposal/bin,/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; heat_capacity = 1e+006; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "jf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/junction,/turf/simulated/floor/plasteel{dir = 5; heat_capacity = 1e+006; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "jg" = (/obj/structure/closet/secure_closet{icon_state = "secure"; locked = 0; name = "kitchen Cabinet"; req_access_txt = "201"},/obj/item/weapon/reagent_containers/food/drinks/flour,/obj/item/weapon/reagent_containers/food/drinks/flour,/obj/item/weapon/reagent_containers/food/condiment/sugar,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; heat_capacity = 1e+006; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "jh" = (/obj/machinery/alarm{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("UO45","UO45R")},/turf/simulated/floor/plasteel{dir = 8; heat_capacity = 1e+006; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) @@ -617,7 +617,7 @@ "lS" = (/obj/structure/stool/bed/chair{tag = "icon-chair (WEST)"; icon_state = "chair"; dir = 8},/turf/simulated/floor/plasteel{dir = 8; heat_capacity = 1e+006; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "lT" = (/obj/structure/stool/bed/chair{tag = "icon-chair (EAST)"; icon_state = "chair"; dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "lU" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/turf/simulated/floor/plasteel{heat_capacity = 1e+006; icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) -"lV" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/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{heat_capacity = 1e+006; icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) +"lV" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/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{heat_capacity = 1e+006; icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "lW" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/glass{name = "Diner"},/turf/simulated/floor/plasteel{heat_capacity = 1e+006},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "lX" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/glass{name = "Diner"},/turf/simulated/floor/plasteel{heat_capacity = 1e+006},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "lY" = (/obj/structure/closet/crate,/obj/item/stack/sheet/mineral/plasma{amount = 26},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{heat_capacity = 1e+006},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) @@ -783,7 +783,7 @@ "pc" = (/obj/machinery/air_sensor{frequency = 1443; id_tag = "UO45_air_sensor"; output = 7},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "pd" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating{heat_capacity = 1e+006},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "pe" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{broken = 1; heat_capacity = 1e+006; icon_state = "platingdmg1"; tag = "icon-platingdmg1"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"pf" = (/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; heat_capacity = 1e+006; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"pf" = (/obj/machinery/disposal/bin,/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; heat_capacity = 1e+006; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "pg" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; heat_capacity = 1e+006; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "ph" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 5; heat_capacity = 1e+006; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "pi" = (/obj/item/weapon/storage/secure/safe{pixel_x = 5; pixel_y = -27},/turf/simulated/floor/plasteel{dir = 5; heat_capacity = 1e+006; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) @@ -956,7 +956,7 @@ "su" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "sv" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating{heat_capacity = 1e+006},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "sw" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{heat_capacity = 1e+006},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"sx" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/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 = 4; heat_capacity = 1e+006; icon_state = "whitecorner"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"sx" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/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 = 4; heat_capacity = 1e+006; icon_state = "whitecorner"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "sy" = (/obj/structure/closet/l3closet/general,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 1; heat_capacity = 1e+006; icon_state = "whitehall"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "sz" = (/obj/structure/closet/l3closet/general,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; heat_capacity = 1e+006; icon_state = "whitehall"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "sA" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; heat_capacity = 1e+006; icon_state = "whitehall"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) @@ -1164,7 +1164,7 @@ "wv" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (EAST)"; dir = 4},/turf/simulated/floor/plasteel{heat_capacity = 1e+006},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "ww" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{heat_capacity = 1e+006},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "wx" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating{heat_capacity = 1e+006},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"wy" = (/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 = -32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 2; heat_capacity = 1e+006; icon_state = "neutralfull"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"wy" = (/obj/machinery/disposal/bin,/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 = -32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 2; heat_capacity = 1e+006; icon_state = "neutralfull"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "wz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 2; heat_capacity = 1e+006; icon_state = "neutralfull"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "wA" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 2; heat_capacity = 1e+006; icon_state = "neutralfull"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "wB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 2; heat_capacity = 1e+006; icon_state = "neutralfull"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) diff --git a/_maps/map_files/AsteroidStation/Asteroidstation.dmm b/_maps/map_files/AsteroidStation/Asteroidstation.dmm index a133c537b5f..d294859fb9e 100644 --- a/_maps/map_files/AsteroidStation/Asteroidstation.dmm +++ b/_maps/map_files/AsteroidStation/Asteroidstation.dmm @@ -69,7 +69,7 @@ "abq" = (/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating{icon_state = "warnplatecorner"},/area/hallway/secondary/entry{name = "Arrivals Lounge"}) "abr" = (/turf/simulated/wall/r_wall,/area/maintenance/fpmaint) "abs" = (/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/maintenance/fpmaint) -"abt" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals Lounge"}) +"abt" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals Lounge"}) "abu" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals Lounge"}) "abv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/firealarm{pixel_y = 25},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals Lounge"}) "abw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals Lounge"}) @@ -133,7 +133,7 @@ "acC" = (/obj/item/device/radio/beacon,/turf/simulated/floor/carpet,/area/hallway/secondary/entry{name = "Arrivals Lounge"}) "acD" = (/obj/machinery/light{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals Lounge"}) "acE" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals Lounge"}) -"acF" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating,/area/construction) +"acF" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating,/area/construction) "acG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/construction) "acH" = (/obj/machinery/light_switch{dir = 1; pixel_y = 22},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/construction) "acI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/construction) @@ -300,7 +300,7 @@ "afN" = (/obj/machinery/computer/card,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint{name = "Customs Desk"}) "afO" = (/obj/machinery/computer/security,/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint{name = "Customs Desk"}) "afP" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/checkpoint{name = "Customs Desk"}) -"afQ" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/checkpoint{name = "Customs Desk"}) +"afQ" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/checkpoint{name = "Customs Desk"}) "afR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore{name = "Fore Hallway"}) "afS" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/gateway) "afT" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/gateway) @@ -635,7 +635,7 @@ "amk" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/quartermaster/office) "aml" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/quartermaster/office) "amm" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/quartermaster/office) -"amn" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 9; icon_state = "brown"},/area/quartermaster/qm) +"amn" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 9; icon_state = "brown"},/area/quartermaster/qm) "amo" = (/obj/structure/closet,/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/qm) "amp" = (/obj/structure/closet/secure_closet/quartermaster,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; name = "Cargo Bay Requests Console"; pixel_y = 30},/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/qm) "amq" = (/obj/structure/table/glass,/obj/item/weapon/cartridge/quartermaster{pixel_x = 6; pixel_y = 5},/obj/item/weapon/cartridge/quartermaster,/obj/item/weapon/cartridge/quartermaster{pixel_x = -4; pixel_y = 7},/obj/item/weapon/coin/silver,/obj/machinery/camera{c_tag = "Quartermaster's Office"},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 23},/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/qm) @@ -716,7 +716,7 @@ "anN" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "anO" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "anP" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) -"anQ" = (/obj/machinery/door/airlock/engineering{name = "Fore Starboard Solar Access"; req_access_txt = "10"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/maintenance/auxsolarstarboard) +"anQ" = (/obj/machinery/door/airlock/engineering{name = "Fore Starboard Solar Access"; req_access_txt = "10"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "anR" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/maintenance/auxsolarstarboard) "anS" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/solar/auxstarboard) "anT" = (/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/space) @@ -867,7 +867,7 @@ "aqI" = (/obj/structure/table/wood,/obj/item/weapon/folder/white,/obj/machinery/camera{c_tag = "Vacant Office"; dir = 1},/turf/simulated/floor/wood,/area/security/vacantoffice) "aqJ" = (/obj/structure/table/wood,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/machinery/newscaster{pixel_y = -32},/turf/simulated/floor/wood,/area/security/vacantoffice) "aqK" = (/obj/structure/table/wood,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/turf/simulated/floor/wood,/area/security/vacantoffice) -"aqL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/security/vacantoffice) +"aqL" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/security/vacantoffice) "aqM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/glass{name = "Fore Hallway"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/fore{name = "Fore Hallway"}) "aqN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass{name = "Fore Hallway"},/turf/simulated/floor/plasteel,/area/hallway/primary/fore{name = "Fore Hallway"}) "aqO" = (/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,/obj/machinery/door/airlock/glass{name = "Fore Hallway"},/turf/simulated/floor/plasteel{icon_state = "neutralcorner"},/area/hallway/primary/fore{name = "Fore Hallway"}) @@ -982,7 +982,7 @@ "asT" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1},/turf/simulated/floor/plasteel,/area/construction/hallway{name = "Port Central Hallway"}) "asU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/construction/hallway{name = "Port Central Hallway"}) "asV" = (/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,/obj/machinery/camera{c_tag = "Port Central Hallway Starboard"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "neutralcorner"},/area/construction/hallway{name = "Port Central Hallway"}) -"asW" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/requests_console{department = "Tool Storage"; name = "Tool Storage Requests Console"; pixel_y = 30},/turf/simulated/floor/plasteel,/area/storage/primary{name = "Tool Storage"}) +"asW" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/obj/machinery/requests_console{department = "Tool Storage"; name = "Tool Storage Requests Console"; pixel_y = 30},/turf/simulated/floor/plasteel,/area/storage/primary{name = "Tool Storage"}) "asX" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/storage/primary{name = "Tool Storage"}) "asY" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/storage/primary{name = "Tool Storage"}) "asZ" = (/obj/machinery/vending/assist,/turf/simulated/floor/plasteel,/area/storage/primary{name = "Tool Storage"}) @@ -1023,7 +1023,7 @@ "atI" = (/obj/machinery/light/small,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel,/area/tcommsat/computer) "atJ" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "yellowcorner"},/area/tcommsat/computer) "atK" = (/turf/simulated/floor/plasteel{icon_state = "yellow"},/area/tcommsat/computer) -"atL" = (/obj/machinery/disposal,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/disposalpipe/trunk,/obj/machinery/camera{c_tag = "Telecommunications"; dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "yellowcorner"},/area/tcommsat/computer) +"atL" = (/obj/machinery/disposal/bin,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/disposalpipe/trunk,/obj/machinery/camera{c_tag = "Telecommunications"; dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "yellowcorner"},/area/tcommsat/computer) "atM" = (/obj/structure/rack,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/receiver,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/broadcaster,/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/tcommsat/computer) "atN" = (/obj/structure/table/glass,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/tcommsat/computer) "atO" = (/obj/structure/table/glass,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/tcommsat/computer) @@ -1191,7 +1191,7 @@ "awU" = (/turf/simulated/wall,/area/construction/Storage{name = "Construction Site"}) "awV" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/construction/Storage{name = "Construction Site"}) "awW" = (/obj/machinery/camera{c_tag = "Mining External"; dir = 8},/turf/simulated/floor/plating/asteroid/airless,/area/mine/explored) -"awX" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{dir = 1; icon_state = "browncorner"},/area/quartermaster/miningdock) +"awX" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/bin,/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{dir = 1; icon_state = "browncorner"},/area/quartermaster/miningdock) "awY" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "awZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "axa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) @@ -1209,11 +1209,11 @@ "axm" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/gloves/color/fyellow,/obj/machinery/light,/obj/machinery/status_display{pixel_y = -32},/turf/simulated/floor/plasteel,/area/storage/primary{name = "Tool Storage"}) "axn" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/turf/simulated/floor/plasteel,/area/storage/primary{name = "Tool Storage"}) "axo" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/storage/primary{name = "Tool Storage"}) -"axp" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/storage/primary{name = "Tool Storage"}) +"axp" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/storage/primary{name = "Tool Storage"}) "axq" = (/obj/structure/grille,/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/storage/primary{name = "Tool Storage"}) "axr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/junction,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 8},/area/hallway/secondary/construction{name = "Fore Central Hallway"}) "axs" = (/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,/turf/simulated/floor/plasteel{icon_state = "browncorner"; dir = 4},/area/hallway/secondary/construction{name = "Fore Central Hallway"}) -"axt" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/camera{c_tag = "Cargo Lobby"; dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/office) +"axt" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/obj/machinery/camera{c_tag = "Cargo Lobby"; dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/office) "axu" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/quartermaster/office) "axv" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j2s"; sortType = 3},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/quartermaster/office) "axw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/floor/plasteel,/area/quartermaster/office) @@ -1518,7 +1518,7 @@ "aDj" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "Fore Central Hallway"}) "aDk" = (/obj/structure/table/glass,/obj/item/weapon/storage/bag/plants/portaseeder,/obj/item/device/analyzer/plant_analyzer,/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "Fore Central Hallway"}) "aDl" = (/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "Fore Central Hallway"}) -"aDm" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "Fore Central Hallway"}) +"aDm" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "Fore Central Hallway"}) "aDn" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/hallway/secondary/construction{name = "Fore Central Hallway"}) "aDo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "greencorner"},/area/hallway/primary/starboard{name = "Starboard Hallway"}) "aDp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard{name = "Starboard Hallway"}) @@ -1608,7 +1608,7 @@ "aEV" = (/obj/machinery/door/airlock/glass{desc = "Supplies available to the public to help with cultivating the open hydro trays in the hallways."; name = "Public Garden Storage"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/hallway/secondary/construction{name = "Fore Central Hallway"}) "aEW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "green"},/area/hallway/primary/starboard{name = "Starboard Hallway"}) "aEX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard{name = "Starboard Hallway"}) -"aEY" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep_female{name = "Fore Dormitory"}) +"aEY" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep_female{name = "Fore Dormitory"}) "aEZ" = (/obj/structure/closet/wardrobe/pink,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep_female{name = "Fore Dormitory"}) "aFa" = (/obj/machinery/light,/obj/structure/closet/wardrobe/grey,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep_female{name = "Fore Dormitory"}) "aFb" = (/obj/structure/closet/wardrobe/green,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep_female{name = "Fore Dormitory"}) @@ -1730,7 +1730,7 @@ "aHn" = (/obj/structure/closet/lawcloset,/turf/simulated/floor/wood,/area/lawoffice) "aHo" = (/obj/structure/table/wood,/obj/item/device/taperecorder,/obj/item/device/taperecorder,/obj/item/weapon/cartridge/lawyer,/obj/machinery/light{dir = 1},/turf/simulated/floor/wood,/area/lawoffice) "aHp" = (/obj/structure/table/wood,/obj/item/weapon/folder/blue,/obj/item/weapon/stamp/law,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/wood,/area/lawoffice) -"aHq" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/wood,/area/lawoffice) +"aHq" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/wood,/area/lawoffice) "aHr" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/lawoffice) "aHs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching the Prison Wing."; name = "Prison Monitor"; network = list("Prison"); pixel_y = 30},/obj/structure/rack,/obj/item/weapon/storage/briefcase,/turf/simulated/floor/wood,/area/lawoffice) "aHt" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/lawoffice) @@ -1948,7 +1948,7 @@ "aLx" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/captain) "aLy" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/carpet,/area/crew_quarters/heads) "aLz" = (/turf/simulated/floor/carpet,/area/security/hos) -"aLA" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/wood,/area/crew_quarters/captain) +"aLA" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/wood,/area/crew_quarters/captain) "aLB" = (/turf/simulated/mineral,/area/mine/explored) "aLC" = (/obj/machinery/shower{pixel_y = 20},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/prison) "aLD" = (/obj/item/weapon/soap/nanotrasen,/obj/machinery/shower{pixel_y = 20},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/prison) @@ -1982,7 +1982,7 @@ "aMf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/chiefs_office) "aMg" = (/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/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/chiefs_office) "aMh" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/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{dir = 1; icon_state = "yellow"},/area/engine/chiefs_office) -"aMi" = (/obj/machinery/disposal,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/chiefs_office) +"aMi" = (/obj/machinery/disposal/bin,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/chiefs_office) "aMj" = (/obj/structure/filingcabinet/filingcabinet,/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 5; icon_state = "yellow"},/area/engine/chiefs_office) "aMk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravity_generator) "aMl" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravity_generator) @@ -2220,7 +2220,7 @@ "aQJ" = (/obj/machinery/photocopier,/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) "aQK" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) "aQL" = (/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) -"aQM" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) +"aQM" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) "aQN" = (/obj/machinery/vending/coffee,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/security/main) "aQO" = (/obj/structure/grille,/obj/machinery/door/firedoor,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/security/main) "aQP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/brig) @@ -2270,8 +2270,8 @@ "aRH" = (/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 1; icon_state = "greencorner"},/area/hallway/primary/starboard{name = "Starboard Hallway"}) "aRI" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/green{icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "neutralcorner"},/area/hallway/primary/starboard{name = "Starboard Hallway"}) "aRJ" = (/turf/simulated/wall,/area/bridge) -"aRK" = (/obj/structure/plasticflaps,/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; dir = 1; freq = 1400; location = "Bridge"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "loadingarea"},/area/bridge) -"aRL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel,/area/bridge) +"aRK" = (/obj/structure/plasticflaps,/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; dir = 1; freq = 1400; location = "Bridge"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "loadingarea"},/area/crew_quarters/heads) +"aRL" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel,/area/bridge) "aRM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/bridge) "aRN" = (/obj/structure/extinguisher_cabinet{pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "redcorner"},/area/bridge) "aRO" = (/turf/simulated/floor/plasteel{icon_state = "red"},/area/bridge) @@ -2333,12 +2333,12 @@ "aSS" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard{name = "Starboard Hallway"}) "aST" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/green{icon_state = "1-2"},/obj/machinery/camera{c_tag = "Starboard Hallway Central Starboard"; dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/starboard{name = "Starboard Hallway"}) "aSU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/bridge) -"aSV" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window{name = "Bridge Deliveries"; req_access_txt = "19"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/bridge) -"aSW" = (/obj/structure/table,/turf/simulated/floor/plasteel,/area/bridge) -"aSX" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel,/area/bridge) -"aSY" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel,/area/bridge) -"aSZ" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/bridge) -"aTa" = (/obj/structure/closet,/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/bridge) +"aSV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/crew_quarters/heads) +"aSW" = (/obj/structure/table,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"aSX" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window{name = "Bridge Deliveries"; req_access_txt = "19"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/crew_quarters/heads) +"aSY" = (/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"aSZ" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"aTa" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "aTb" = (/obj/machinery/light_switch{dir = 8; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/bridge) "aTc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plasteel,/area/bridge) "aTd" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/bridge) @@ -2411,15 +2411,15 @@ "aUs" = (/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 2},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/starboard{name = "Starboard Hallway"}) "aUt" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard{name = "Starboard Hallway"}) "aUu" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "blue"},/area/hallway/primary/starboard{name = "Starboard Hallway"}) -"aUv" = (/obj/machinery/door/airlock/glass_command{desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; name = "Bridge"; req_access_txt = "19"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/bridge) -"aUw" = (/obj/structure/cable/blue{icon_state = "1-4"; d1 = 1; d2 = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/bridge) -"aUx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/bridge) -"aUy" = (/obj/machinery/door/poddoor/preopen{id = "bridge blast"; name = "Bridge Blast Door"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/bridge) -"aUz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/obj/structure/cable/blue{icon_state = "2-8"; d1 = 1; d2 = 2},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/bridge) -"aUA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/bridge) -"aUB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge Requests Console"; pixel_y = 30},/turf/simulated/floor/plasteel,/area/bridge) +"aUv" = (/obj/structure/closet,/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/crew_quarters/heads) +"aUw" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"aUx" = (/obj/machinery/door/airlock/glass_command{desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; name = "Bridge"; req_access_txt = "19"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/crew_quarters/heads) +"aUy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"aUz" = (/obj/structure/cable/blue{icon_state = "1-4"; d1 = 1; d2 = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"aUA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/obj/structure/cable/blue{icon_state = "2-8"; d1 = 1; d2 = 2},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"aUB" = (/obj/machinery/door/poddoor/preopen{id = "bridge blast"; name = "Bridge Blast Door"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "aUC" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1},/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/bridge) -"aUD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "blue"},/area/bridge) +"aUD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "aUE" = (/obj/machinery/door/airlock/glass_command{desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; name = "Bridge"; req_access_txt = "19"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/bridge) "aUF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "2-8"; d1 = 1; d2 = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/obj/structure/disposalpipe/junction{dir = 8},/turf/simulated/floor/plasteel,/area/bridge) "aUG" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "1-8"; d1 = 1; d2 = 2},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/bridge) @@ -2487,22 +2487,22 @@ "aVQ" = (/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aVR" = (/obj/machinery/requests_console{department = "Hydroponics"; departmentType = 2; name = "Hydroponics Requests Console"; pixel_x = -32},/obj/structure/table,/obj/item/weapon/crowbar/red,/obj/item/weapon/reagent_containers/glass/beaker,/turf/simulated/floor/plasteel{dir = 10; icon_state = "green"},/area/hydroponics) "aVS" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel{icon_state = "green"},/area/hydroponics) -"aVT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "green"},/area/hydroponics) +"aVT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "green"},/area/hydroponics) "aVU" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "green"},/area/hydroponics) "aVV" = (/turf/simulated/floor/plasteel{icon_state = "green"},/area/hydroponics) "aVW" = (/obj/machinery/vending/hydroseeds,/turf/simulated/floor/plasteel{dir = 6; icon_state = "green"},/area/hydroponics) "aVX" = (/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 4; pixel_x = -22},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/starboard{name = "Starboard Hallway"}) "aVY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/green{icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "blue"},/area/hallway/primary/starboard{name = "Starboard Hallway"}) -"aVZ" = (/obj/machinery/door/airlock/glass_command{desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/bridge) -"aWa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel,/area/bridge) -"aWb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/bridge) -"aWc" = (/obj/machinery/door/poddoor/preopen{id = "bridge blast"; name = "Bridge Blast Door"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/bridge) -"aWd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/bridge) -"aWe" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/obj/machinery/camera{c_tag = "Bridge Fore Entrance"; dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/bridge) -"aWf" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/bridge) -"aWg" = (/obj/machinery/power/apc{name = "Head of Personnel APC"; pixel_y = -24},/obj/structure/cable/blue,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/bridge) -"aWh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; pixel_y = 0},/turf/simulated/floor/plasteel,/area/bridge) -"aWi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "blue"},/area/bridge) +"aVZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge Requests Console"; pixel_y = 30},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"aWa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "blue"},/area/crew_quarters/heads) +"aWb" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1},/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"aWc" = (/obj/machinery/door/airlock/glass_command{desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/crew_quarters/heads) +"aWd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"aWe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"aWf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/crew_quarters/heads) +"aWg" = (/obj/machinery/door/poddoor/preopen{id = "bridge blast"; name = "Bridge Blast Door"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/crew_quarters/heads) +"aWh" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"aWi" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/obj/machinery/camera{c_tag = "Bridge Fore Entrance"; dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/crew_quarters/heads) "aWj" = (/obj/machinery/door/airlock/glass_command{desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; name = "Bridge"; req_access_txt = "19"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/bridge) "aWk" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/bridge) "aWl" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; pixel_y = 0},/turf/simulated/floor/plasteel,/area/bridge) @@ -2623,7 +2623,7 @@ "aYw" = (/obj/machinery/vending/boozeomat,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "aYx" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/rag,/obj/machinery/requests_console{department = "Bar"; departmentType = 2; name = "Bar Requests Console"; pixel_y = 30},/obj/machinery/camera{c_tag = "Bar"},/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "aYy" = (/obj/machinery/smartfridge/drinks,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) -"aYz" = (/obj/machinery/disposal,/obj/machinery/alarm{pixel_y = 24},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) +"aYz" = (/obj/machinery/disposal/bin,/obj/machinery/alarm{pixel_y = 24},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "aYA" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen) "aYB" = (/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen) "aYC" = (/obj/machinery/vending/dinnerware,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen) @@ -2856,7 +2856,7 @@ "bcV" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/h_chocolate,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bcW" = (/obj/structure/table/reinforced,/obj/machinery/newscaster{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bcX" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen) -"bcY" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen) +"bcY" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen) "bcZ" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 5},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen) "bda" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/peppermill,/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = 7},/obj/item/weapon/reagent_containers/food/condiment/saltshaker,/obj/item/weapon/reagent_containers/food/condiment/peppermill,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen) "bdb" = (/obj/structure/table,/obj/item/weapon/kitchen/rollingpin,/obj/item/weapon/reagent_containers/food/snacks/mint,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen) @@ -2921,7 +2921,7 @@ "bei" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/shutters/preopen{id = "hopqueue"; name = "HoP Queue Shutters"},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/hallway/primary/starboard{name = "Starboard Hallway"}) "bej" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/hallway/primary/starboard{name = "Starboard Hallway"}) "bek" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/crew_quarters/heads) -"bel" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/heads) +"bel" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/heads) "bem" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "19"},/turf/simulated/floor/wood,/area/crew_quarters/heads) "ben" = (/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_x = -3; pixel_y = -24},/turf/simulated/floor/wood,/area/crew_quarters/heads) "beo" = (/obj/structure/table/wood,/obj/item/device/flash/handheld,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/wood,/area/crew_quarters/heads) @@ -3019,7 +3019,7 @@ "bgc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/plasteel,/area/security/warden) "bgd" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/security/warden) "bge" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel,/area/security/warden) -"bgf" = (/obj/machinery/disposal,/obj/machinery/light{dir = 4},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel,/area/security/warden) +"bgf" = (/obj/machinery/disposal/bin,/obj/machinery/light{dir = 4},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel,/area/security/warden) "bgg" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/security/warden) "bgh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 4; pixel_x = -22},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/brig) "bgi" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/security/brig) @@ -3057,11 +3057,11 @@ "bgO" = (/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 8},/area/hallway/primary/starboard{name = "Starboard Hallway"}) "bgP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard{name = "Starboard Hallway"}) "bgQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/green{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "blue"},/area/hallway/primary/starboard{name = "Starboard Hallway"}) -"bgR" = (/obj/machinery/door/poddoor/preopen{id = "bridge blast"; name = "Bridge Blast Door"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "bluecorner"},/area/bridge) -"bgS" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/bridge) -"bgT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1},/obj/machinery/camera{c_tag = "Bridge Aft Entrance"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "bluecorner"},/area/bridge) -"bgU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel,/area/bridge) -"bgV" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/turf/simulated/floor/plasteel,/area/bridge) +"bgR" = (/obj/machinery/power/apc{name = "Head of Personnel APC"; pixel_y = -24},/obj/structure/cable/blue,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"bgS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "blue"},/area/crew_quarters/heads) +"bgT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; pixel_y = 0},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"bgU" = (/obj/machinery/door/airlock/glass_command{desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; name = "Bridge"; req_access_txt = "19"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/crew_quarters/heads) +"bgV" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/crew_quarters/heads) "bgW" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/bridge) "bgX" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/bridge) "bgY" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellowcorner"},/area/bridge) @@ -3111,12 +3111,12 @@ "bhQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bhR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bhS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/hallway/primary/starboard{name = "Starboard Hallway"}) -"bhT" = (/obj/machinery/door/poddoor/preopen{id = "bridge blast"; name = "Bridge Blast Door"},/turf/simulated/floor/plasteel,/area/bridge) -"bhU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plasteel,/area/bridge) +"bhT" = (/obj/machinery/door/poddoor/preopen{id = "bridge blast"; name = "Bridge Blast Door"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "bluecorner"},/area/crew_quarters/heads) +"bhU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "bhV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/bridge) -"bhW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/newscaster{pixel_y = -32},/turf/simulated/floor/plasteel,/area/bridge) -"bhX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/bridge) -"bhY" = (/obj/structure/cable/blue{icon_state = "2-4"; d1 = 1; d2 = 2},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "blue"},/area/bridge) +"bhW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1},/obj/machinery/camera{c_tag = "Bridge Aft Entrance"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "bluecorner"},/area/crew_quarters/heads) +"bhX" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"bhY" = (/obj/machinery/door/poddoor/preopen{id = "bridge blast"; name = "Bridge Blast Door"},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "bhZ" = (/obj/machinery/door/airlock/glass_command{desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; name = "Bridge"; req_access_txt = "19"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "4-8"; d1 = 1; d2 = 2},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/bridge) "bia" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/blue{icon_state = "1-8"; d1 = 1; d2 = 2},/turf/simulated/floor/plasteel,/area/bridge) "bib" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/bridge) @@ -3160,10 +3160,10 @@ "biN" = (/obj/structure/stool/bed/chair/wood/normal{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "biO" = (/obj/structure/table/wood,/obj/item/weapon/kitchen/fork,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "biP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/green{icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/starboard{name = "Starboard Hallway"}) -"biQ" = (/obj/structure/closet,/turf/simulated/floor/plasteel,/area/bridge) -"biR" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel,/area/bridge) -"biS" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel,/area/bridge) -"biT" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "bluecorner"},/area/bridge) +"biQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"biR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"biS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/newscaster{pixel_y = -32},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"biT" = (/obj/structure/cable/blue{icon_state = "2-4"; d1 = 1; d2 = 2},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "blue"},/area/crew_quarters/heads) "biU" = (/obj/machinery/light_switch{dir = 8; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/bridge) "biV" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"},/area/bridge) "biW" = (/obj/machinery/computer/crew,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/bridge) @@ -3210,7 +3210,7 @@ "bjL" = (/obj/structure/table,/obj/item/weapon/tank/internals/emergency_oxygen{pixel_x = -1; pixel_y = -2},/obj/item/weapon/tank/internals/emergency_oxygen{pixel_x = 1; pixel_y = 2},/obj/item/weapon/tank/internals/emergency_oxygen{pixel_x = 1; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 6; icon_state = "brown"},/area/security/prison) "bjM" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel,/area/security/prison) "bjN" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor/plasteel,/area/security/prison) -"bjO" = (/obj/machinery/alarm{dir = 4; pixel_x = -22},/obj/structure/closet/secure_closet/hos,/obj/item/weapon/gun/energy/gun/hos,/turf/simulated/floor/wood,/area/security/hos) +"bjO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "bjP" = (/turf/simulated/floor/wood,/area/security/hos) "bjQ" = (/obj/structure/table/wood,/obj/machinery/recharger,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/wood,/area/security/hos) "bjR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/security/brig) @@ -3264,7 +3264,7 @@ "bkN" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/engineering) "bkO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/engineering) "bkP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/engineering) -"bkQ" = (/obj/machinery/disposal,/obj/machinery/alarm{dir = 8; pixel_x = 22},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "yellow"},/area/engine/engineering) +"bkQ" = (/obj/machinery/disposal/bin,/obj/machinery/alarm{dir = 8; pixel_x = 22},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "yellow"},/area/engine/engineering) "bkR" = (/obj/machinery/camera{c_tag = "Engineering Escape Pod"; dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering) "bkS" = (/obj/machinery/power/smes{charge = 1e+006},/obj/structure/cable/blue{icon_state = "0-4"; d1 = 1; d2 = 2},/turf/simulated/floor/plating,/area/maintenance/maintcentral) "bkT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "neutralcorner"; dir = 1},/area/hallway/primary/starboard{name = "Starboard Hallway"}) @@ -3307,9 +3307,9 @@ "blE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/machinery/power/smes{charge = 1e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel,/area/engine/gravity_generator) "blF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "neutralcorner"; dir = 1},/area/hallway/primary/starboard{name = "Starboard Hallway"}) "blG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard{name = "Starboard Hallway"}) -"blH" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) +"blH" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "blI" = (/obj/machinery/door/airlock{name = "Theater Stage"; req_access_txt = "46"},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"blJ" = (/obj/machinery/disposal,/obj/machinery/newscaster{dir = 8; pixel_x = -32},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) +"blJ" = (/obj/machinery/disposal/bin,/obj/machinery/newscaster{dir = 8; pixel_x = -32},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "blK" = (/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; sortType = 16},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 8},/area/hallway/primary/starboard{name = "Starboard Hallway"}) "blL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/green{icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "neutralcorner"},/area/hallway/primary/starboard{name = "Starboard Hallway"}) "blM" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/obj/structure/closet/secure_closet/freezer,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/nuke_storage) @@ -3371,7 +3371,7 @@ "bmQ" = (/obj/machinery/computer/security,/obj/machinery/door_control{id = "Prison Gate"; name = "Prison Wing Lockdown"; pixel_x = -28; pixel_y = 7; req_access_txt = "2"},/obj/machinery/door_control{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -28; pixel_y = -3; req_access_txt = "2"},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/wood,/area/security/hos) "bmR" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/wood,/area/security/hos) "bmS" = (/obj/machinery/status_display{pixel_y = -32},/turf/simulated/floor/wood,/area/security/hos) -"bmT" = (/obj/machinery/disposal,/obj/machinery/keycard_auth{pixel_y = -24},/obj/machinery/light_switch{dir = 4; pixel_x = 22},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/security/hos) +"bmT" = (/obj/machinery/disposal/bin,/obj/machinery/keycard_auth{pixel_y = -24},/obj/machinery/light_switch{dir = 4; pixel_x = 22},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/security/hos) "bmU" = (/obj/structure/closet{name = "Evidence Closet"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) "bmV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) "bmW" = (/obj/structure/closet{name = "Evidence Closet"},/obj/machinery/light_switch{dir = 4; pixel_x = 22},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) @@ -3490,7 +3490,7 @@ "bpf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/maintcentral) "bpg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/maintcentral) "bph" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/bridge) -"bpi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/turf/simulated/floor/wood,/area/bridge) +"bpi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal/bin,/turf/simulated/floor/wood,/area/bridge) "bpj" = (/obj/machinery/door_control{id = "Dorm4s"; name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) "bpk" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/yellow,/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; pixel_y = 0},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/carpet,/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) "bpl" = (/obj/machinery/light/small,/turf/simulated/floor/carpet,/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) @@ -3561,7 +3561,7 @@ "bqy" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/orange,/turf/simulated/floor/wood,/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) "bqz" = (/obj/structure/table/wood,/obj/item/weapon/bikehorn/airhorn,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) "bqA" = (/obj/structure/dresser,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) -"bqB" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) +"bqB" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/bin,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) "bqC" = (/obj/machinery/vending/autodrobe,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) "bqD" = (/obj/structure/sink{dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -30},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) "bqE" = (/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) @@ -3625,7 +3625,7 @@ "brK" = (/obj/machinery/camera{c_tag = "Aft Starboard Transit"; dir = 8},/obj/machinery/alarm{dir = 8; pixel_x = 22},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/primary/central{name = "Aft Central Hallway"}) "brL" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating{icon_state = "warnplatecorner"; dir = 8},/area/maintenance/aft) "brM" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft) -"brN" = (/obj/machinery/disposal,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) +"brN" = (/obj/machinery/disposal/bin,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) "brO" = (/turf/simulated/floor/plasteel,/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) "brP" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) "brQ" = (/obj/machinery/status_display{pixel_y = 32},/obj/structure/stool,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) @@ -3731,7 +3731,7 @@ "btM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) "btN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/junction{dir = 8},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) "btO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) -"btP" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) +"btP" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) "btQ" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{icon_state = "darkyellowcorners"; dir = 1},/area/crew_quarters/fitness) "btR" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/crew_quarters/fitness) "btS" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 4},/area/crew_quarters/fitness) @@ -4010,7 +4010,7 @@ "bzf" = (/obj/structure/table/glass,/obj/item/clothing/glasses/welding,/obj/machinery/light_switch{dir = 8; pixel_x = -22},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/toxins/lab) "bzg" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/toxins/lab) "bzh" = (/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/toxins/lab) -"bzi" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/toxins/lab) +"bzi" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/toxins/lab) "bzj" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/toxins/lab) "bzk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitecorner"},/area/hallway/primary/aft{name = "Aft Hallway"}) "bzl" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j2s"; sortType = 14},/turf/simulated/floor/plasteel,/area/hallway/primary/aft{name = "Aft Hallway"}) @@ -4030,7 +4030,7 @@ "bzz" = (/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "chemTesting"; name = "Containment Door"},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/engine,/area/medical/chemistry) "bzA" = (/turf/simulated/floor/engine,/area/medical/chemistry) "bzB" = (/mob/living/carbon/monkey,/turf/simulated/floor/engine,/area/medical/chemistry) -"bzC" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) +"bzC" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bzD" = (/obj/machinery/light{dir = 1},/obj/structure/stool/bed/chair,/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bzE" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bzF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) @@ -4050,7 +4050,7 @@ "bzT" = (/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/surgery) "bzU" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/surgery) "bzV" = (/obj/structure/sink{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/surgery) -"bzW" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/status_display{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/surgery) +"bzW" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/status_display{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/surgery) "bzX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall,/area/medical/surgery) "bzY" = (/obj/machinery/power/apc{dir = 1; name = "Aft Dormitory APC"; pixel_y = 25},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{icon_state = "0-4"},/turf/simulated/floor/plating,/area/crew_quarters/sleep_male{name = "Aft Dormitory"}) "bzZ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/green{icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -4149,7 +4149,7 @@ "bBO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/aft{name = "Aft Hallway"}) "bBP" = (/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; sortType = 22},/obj/machinery/camera{c_tag = "Aft Hallway Fore"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/hallway/primary/aft{name = "Aft Hallway"}) "bBQ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/janitor) -"bBR" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/janitor) +"bBR" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/janitor) "bBS" = (/obj/structure/stool/bed/chair/janicart,/obj/item/key/janitor,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/janitor) "bBT" = (/obj/structure/cable/cyan{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint) "bBU" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -4237,7 +4237,7 @@ "bDy" = (/obj/structure/filingcabinet,/turf/simulated/floor/wood,/area/library) "bDz" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bDA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/pink{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"bDB" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel,/area/assembly/assembly_line) +"bDB" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "bDC" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "bDD" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "bDE" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) @@ -4571,7 +4571,7 @@ "bJU" = (/obj/structure/table/glass,/obj/item/weapon/hand_labeler,/obj/item/stack/packageWrap,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) "bJV" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) "bJW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) -"bJX" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"},/area/medical/chemistry) +"bJX" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"},/area/medical/chemistry) "bJY" = (/turf/simulated/wall/r_wall,/area/medical/medbay) "bJZ" = (/obj/machinery/door/airlock/glass_medical{desc = "The front entrance to the medical bay. Can be exited even without ID via the buttons."; id_tag = "FoyerLeft"; name = "Medbay"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bKa" = (/obj/machinery/door/airlock/glass_medical{desc = "The front entrance to the medical bay. Can be exited even without ID via the buttons."; id_tag = "FoyerLeft"; name = "Medbay"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) @@ -4597,7 +4597,7 @@ "bKu" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/wood,/area/library) "bKv" = (/obj/structure/table/wood,/obj/item/weapon/hand_labeler,/turf/simulated/floor/wood,/area/library) "bKw" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/library) -"bKx" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/library) +"bKx" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/library) "bKy" = (/obj/machinery/light,/turf/simulated/floor/wood,/area/library) "bKz" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/wood,/area/library) "bKA" = (/obj/machinery/bookbinder,/turf/simulated/floor/wood,/area/library) @@ -4620,7 +4620,7 @@ "bKR" = (/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bKS" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; dir = 4; name = "Research Monitor"; network = list("RD"); pixel_x = -28},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/crew_quarters/hor) "bKT" = (/obj/structure/stool/bed/chair/office/light,/obj/effect/landmark/start{name = "Research Director"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) -"bKU" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; external_pressure_bound = 0; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) +"bKU" = (/obj/structure/closet,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "bKV" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "bKW" = (/obj/structure/cable/pink{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "bKX" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 31},/obj/structure/lamarr,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/crew_quarters/hor) @@ -4641,7 +4641,7 @@ "bLm" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "FoyerRight"; name = "Medbay Exit Button"; normaldoorcontrol = 1; pixel_y = 26},/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{icon_state = "whitered"; dir = 8},/area/medical/medbay2) "bLn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2) "bLo" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2) -"bLp" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay2) +"bLp" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay2) "bLq" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay) "bLr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay) "bLs" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/simulated/floor/plating,/area/medical/surgery) @@ -4843,7 +4843,7 @@ "bPg" = (/obj/machinery/dna_scannernew,/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitepurple"},/area/medical/genetics) "bPh" = (/obj/machinery/computer/scan_consolenew,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/genetics) "bPi" = (/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/structure/table/glass,/obj/machinery/light{dir = 1},/obj/machinery/requests_console{department = "Genetics"; name = "Genetics Requests Console"; pixel_y = 30},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/genetics) -"bPj" = (/obj/machinery/firealarm{pixel_y = 25},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/genetics) +"bPj" = (/obj/machinery/firealarm{pixel_y = 25},/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/genetics) "bPk" = (/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/genetics) "bPl" = (/obj/machinery/light_switch{dir = 4; pixel_x = 22},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitepurple"},/area/medical/genetics) "bPm" = (/obj/item/weapon/storage/box/bodybags{pixel_x = 3; pixel_y = 3},/obj/structure/table/glass,/obj/machinery/light{dir = 8},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 23},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/genetics) @@ -4866,7 +4866,7 @@ "bPD" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/camera{c_tag = "Virology Access"},/obj/structure/closet/l3closet,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "bPE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/closet/l3closet,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitegreen"},/area/medical/virology) "bPF" = (/obj/machinery/smartfridge/chemistry/virology,/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitegreen"},/area/medical/virology) -"bPG" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/structure/sign/deathsposal{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology) +"bPG" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/obj/structure/sign/deathsposal{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "bPH" = (/obj/structure/table/glass,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/pen/red,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "bPI" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/obj/structure/sink/kitchen{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitegreen"},/area/medical/virology) "bPJ" = (/turf/simulated/wall,/area/medical/virology) @@ -4881,7 +4881,7 @@ "bPS" = (/turf/simulated/wall/r_wall,/area/maintenance/asmaint2{icon_state = "toxtest"; name = "Toxins Launch Room"}) "bPT" = (/obj/machinery/computer/rdservercontrol,/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 5},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhitecorner"},/area/crew_quarters/hor) "bPU" = (/obj/machinery/atmospherics/components/unary/cold_sink/freezer{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) -"bPV" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) +"bPV" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "bPW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "bPX" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "bPY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/crew_quarters/hor) @@ -4908,7 +4908,7 @@ "bQt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2) "bQu" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2) "bQv" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/medbay2) -"bQw" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/medbay2) +"bQw" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteblue"},/area/medical/medbay2) "bQx" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2) "bQy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2) "bQz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2) @@ -5063,7 +5063,7 @@ "bTs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2) "bTt" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay2) "bTu" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/medical/cmo) -"bTv" = (/obj/machinery/firealarm{pixel_y = 25},/obj/machinery/light_switch{dir = 8; pixel_x = -22},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"bTv" = (/obj/machinery/firealarm{pixel_y = 25},/obj/machinery/light_switch{dir = 8; pixel_x = -22},/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "bTw" = (/obj/structure/cable/cyan{icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "bTx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/cyan{icon_state = "1-2"},/obj/structure/cable/cyan{icon_state = "2-8"},/obj/structure/cable/cyan{icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "bTy" = (/obj/structure/cable/cyan{icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) @@ -5111,7 +5111,7 @@ "bUo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "whiteblue"},/area/medical/genetics) "bUp" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/genetics) "bUq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/alarm{dir = 4; pixel_x = -22},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/medbay2) -"bUr" = (/obj/machinery/disposal,/turf/simulated/floor/plasteel{icon_state = "whiteblue"},/area/medical/medbay2) +"bUr" = (/obj/machinery/disposal/bin,/turf/simulated/floor/plasteel{icon_state = "whiteblue"},/area/medical/medbay2) "bUs" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "whiteblue"},/area/medical/medbay2) "bUt" = (/obj/structure/table/glass,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/mask/muzzle,/turf/simulated/floor/plasteel{icon_state = "whiteblue"},/area/medical/medbay2) "bUu" = (/obj/structure/table/glass,/obj/item/weapon/hand_labeler,/obj/item/weapon/gun/syringe,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/medbay2) @@ -5284,7 +5284,7 @@ "bXF" = (/obj/machinery/door/airlock/research{desc = "Make sure to pack some snacks."; name = "Toxins Launch Room"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/maintenance/asmaint2{icon_state = "toxtest"; name = "Toxins Launch Room"}) "bXG" = (/turf/simulated/wall,/area/medical/research{name = "Research Division"}) "bXH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/maintenance{name = "Research Maintenance"; req_access_txt = "47"},/obj/structure/cable/pink{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"bXI" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"bXI" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bXJ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bXK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bXL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -5505,7 +5505,7 @@ "cbS" = (/obj/machinery/atmospherics/components/binary/pump{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cbT" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 10},/obj/machinery/camera{c_tag = "Incinerator"; dir = 6},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cbU" = (/turf/simulated/floor/plating,/area/maintenance/incinerator) -"cbV" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"cbV" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cbW" = (/obj/machinery/doorButtons/airlock_controller{idExterior = "incinerator_airlock_exterior"; idSelf = "incinerator_access_control"; idInterior = "incinerator_airlock_interior"; name = "Incinerator Access Console"; pixel_x = 24; pixel_y = -8; req_access_txt = "12"},/obj/machinery/atmospherics/components/binary/pump{dir = 1; name = "Gas Pump"},/turf/simulated/floor/plating{icon_state = "warnplatecorner"},/area/maintenance/incinerator) "cbX" = (/obj/machinery/doorButtons/access_button{idDoor = "incinerator_airlock_exterior"; layer = 3.1; idSelf = "incinerator_access_control"; name = "Incinerator airlock control"; pixel_x = -24; pixel_y = -8},/obj/structure/sign/fire{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 6},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cbY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/turf/simulated/wall/r_wall,/area/maintenance/incinerator) @@ -5547,7 +5547,7 @@ "ccI" = (/obj/machinery/requests_console{department = "Chapel"; departmentType = 2; name = "Chapel Requests Console"; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "ccJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "ccK" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) -"ccL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) +"ccL" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "ccM" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_y = 26},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "ccN" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted/fulltile,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "ccO" = (/obj/structure/stool/bed/chair{dir = 8},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_y = 26},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) @@ -5763,7 +5763,7 @@ "cgQ" = (/obj/structure/disposaloutlet,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cgR" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cgS" = (/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "Containment Door"},/obj/structure/cable/pink{d2 = 2; icon_state = "0-2"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/toxins/xenobiology) -"cgT" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) +"cgT" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) "cgU" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"},/area/toxins/xenobiology) "cgV" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cgW" = (/obj/structure/cable/pink{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) @@ -5850,7 +5850,7 @@ "ciz" = (/obj/structure/cable/pink{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"},/area/toxins/xenobiology) "ciA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "ciB" = (/obj/structure/cable/pink{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"},/area/toxins/xenobiology) -"ciC" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology) +"ciC" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology) "ciD" = (/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "Containment Door"},/obj/structure/cable/pink,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/toxins/xenobiology) "ciE" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/engine,/area/toxins/xenobiology) "ciF" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) @@ -5894,9 +5894,9 @@ "cjr" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/teleporter) "cjs" = (/obj/machinery/teleport/hub,/obj/item/weapon/crowbar,/turf/simulated/floor/plating,/area/teleporter) "cjt" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/chapel/main) -"cju" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) +"cju" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cjv" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) -"cjw" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) +"cjw" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cjx" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cjy" = (/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "cjz" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) @@ -5913,7 +5913,7 @@ "cjK" = (/obj/structure/stool,/turf/simulated/floor/plasteel,/area/maintenance/asmaint2) "cjL" = (/obj/structure/table,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/reagent_containers/spray/plantbgone,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/maintenance/asmaint2) "cjM" = (/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "Containment Door"},/obj/structure/cable/pink{d2 = 2; icon_state = "0-2"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/toxins/xenobiology) -"cjN" = (/obj/machinery/disposal,/obj/structure/sign/electricshock{pixel_y = 32},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) +"cjN" = (/obj/machinery/disposal/bin,/obj/structure/sign/electricshock{pixel_y = 32},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) "cjO" = (/obj/structure/table/reinforced,/obj/structure/sign/electricshock{pixel_y = 32},/obj/machinery/door_control{id = "xenobio4"; name = "Containment Blast Doors"; req_access_txt = "55"},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology) "cjP" = (/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "xenobio4"; name = "Containment Door"},/obj/structure/cable/pink{d2 = 2; icon_state = "0-2"},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/toxins/xenobiology) "cjQ" = (/obj/structure/table,/obj/item/device/radio/off,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) @@ -6165,7 +6165,7 @@ "coC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/stool/bed/chair,/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/secondary/exit) "coD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/stool/bed/chair,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/secondary/exit) "coE" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1},/obj/structure/stool/bed/chair,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/secondary/exit) -"coF" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/secondary/exit) +"coF" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/secondary/exit) "coG" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/secondary/exit) "coH" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/secondary/exit) "coI" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "neutralcorner"; dir = 1},/area/hallway/secondary/exit) @@ -6174,7 +6174,7 @@ "coL" = (/obj/machinery/computer/station_alert,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/atmos) "coM" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/atmos) "coN" = (/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmospherics Requests Console"; pixel_y = -32},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/atmos) -"coO" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/atmos) +"coO" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/atmos) "coP" = (/obj/machinery/door/window/eastright{dir = 2},/turf/simulated/floor/plasteel,/area/atmos) "coQ" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plasteel,/area/atmos) "coR" = (/obj/machinery/atmospherics/components/trinary/filter{dir = 4; filter_type = 3; flipped = 0; on = 1},/turf/simulated/floor/plasteel,/area/atmos) @@ -6191,7 +6191,7 @@ "cpc" = (/mob/living/simple_animal/crab/Coffee,/turf/simulated/floor/engine,/area/toxins/xenobiology) "cpd" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cpe" = (/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "Test Chamber Containment Door"},/obj/structure/cable/pink{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/pink,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/toxins/xenobiology) -"cpf" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"},/area/toxins/xenobiology) +"cpf" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"},/area/toxins/xenobiology) "cpg" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/structure/cable/pink{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cph" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cpi" = (/obj/machinery/power/apc{name = "Xenobiology APC"; pixel_y = -25},/obj/structure/cable/pink,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) @@ -6338,6 +6338,11 @@ "crT" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/smes{charge = 1e+006},/turf/simulated/floor/plating,/area/maintenance/portsolar) "crU" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_y = -32},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/exit) "crV" = (/obj/docking_port/stationary{dir = 4; dwidth = 0; height = 28; id = "emergency_home"; name = "emergency evac bay"; width = 13},/turf/space,/area/space) +"crW" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"crX" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"crY" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "bluecorner"},/area/crew_quarters/heads) +"crZ" = (/obj/machinery/alarm{dir = 4; pixel_x = -22},/obj/structure/closet/secure_closet/hos,/turf/simulated/floor/wood,/area/security/hos) +"csa" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -6488,10 +6493,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaLBaLBaLBaLBaIcaMPaMQaMRaJdaJdaJdaJdaJdaJdaJdaMSaMTaJdaMUaMVaMVaMVaMWaMXaMYaMZaNaaNbaNcaNdaNeaNfaNgaNhaNiaNjaNkaNlaNmaNnaNoaNpaNqaNraCdaCdaDaaCdaaaaNsaaaaNsaaaaaaaakaakaakaaaaaaaaaaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaKUaNuaNuaNuaNvaNvaNvaKVaNwaNxaNyaNzaNAaNBaNCaMkaNDaNEaNFaNGaHCaaaaaaaCFaNHaxZaNIaCFaNJaNKaGJaLjaHIaHIaHIaLjaLkaNLaNMaLnaLoaLoaLoaNMaLpaNNaNOaFqaLqaCFaGcaGdaNPaNQaNRaNSaNTaNUaNVaNWaNXaNYaNZaOaaGdaabaObaOcbyQbwwbwwbGpaaaaaaaaaanTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaLBaalaalaIcaIcaOeaOfaOfaOgaOhaJdaOiaOjaOkaJdaOlaOmaJdaOnaOoaOpaOqaOraOsaOtaLOaOuaOvaLRaOwaOxaOyaOzaOAaOBaOCaODaOEaOFaOGaOHaOIaHvaOJaOKaCdaDaaCdaaaaKSaaaaKSaaaaaaaaaaakaakaakaabaaaaakaaaaaaaaaaaaaakaaaaaaaaaaaaaakaaaaKUaOLaOLaOLaNvaNvaOMaKVaONaOOaOPaOQaORaOSaOTaOUaOVaOWaOVaOXaHCaaaaaaaCFaOYaOZaAyaCFaPabLaaGJaLjaPcaPdaPcaPeaPcaPfaMyaMzaPgaPhaPhaPiaPjaPkaPlaFqaLqaPmaGcaGdaGdaGdaGdaGdaGdaGdaGdaGdaGdaGdaPnaPoaGdaMOaMOaPpcfubYfcfwcfvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaalaalaalaPtaPuaOfaOfaOfaOfaOfaPvaPwaPxaPyaPzaPyaPAaJdaPBaPCaPDaPCaPEaPFaPGaPHaPIaPHaJpaPIaPJaPKaPLaPMaPNaLUaLWaLWaLWaPOaOHaOIaHvaOJaPPaCdaDaaCdaakaKSaaaaKSaaaaaaaaaaakaakaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaPQaKUaKVaPRaPSaPTaPUaPVaPWaKVaPXaNFaPYaNDaMlaHCaakaakaCFaPZaxZaQaaQbaQbaQbaQbaQcaPcaQdaQeaQfaPcaQgaQhaQiaQjaLoaLoaQkaQlaQmaQnaEtaQoaCFaGcapgapgapgapgapgapgapgapgapgaQpaQqaQraQsaQqaQqaQtaQucfxbwwbwwcfyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaLBaalaalaalaQwaQxaQyaQzaQAaQBaQCaLIaQDaQEaQFaLIaQGaQHaJdaJdaJdaJdaJdaJdaJdaQIaQJaQKaQLaQLaQMaQNaQOaQPaQQaOBaQRaQSaQTaQUaQVaQWaQXaQYaQZaCdaCdaDXaCdaHzaRaaakaRaaakaakaKUaKUaKUaKUaRbaRcaRdaRcaRcaRcaRcaReaRfaRcaRcaRcaRdaRgaRhaRiaRjaRkaRlaRmaRnaKVaKVaRoaRpaRqaRraKVaKVaMlaMlaRsaMlaMlaHCajQajQaCFawDaxZaAyaRtaRuaRvaRwaRxaPcaRyaRzaQfaPcaRAaRBaRCaRDaREaREaRFaRGaLkaRHaFqaRIaRJaRKaRJaMOaRJaRJaRJaRJaRJaRJaRJaRJaRLaQraRMaRNaROaMOaMOaMOaMOaMOaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaLBaRPaalaalaQwaQxaRQaRRaRSaOfaRTaJdaJdaJdaJdaJdaRUaRVaRWaRXaRYaJdaRZaSaaJdaJdaSbaSbaScaSbaSbaSbaSbaSdaSeaOBaOCaODaSfaSgaOGaOHaOIaHvaHwaCdaShaFRaSiaakaNsaaaaNsaaaaaaaSjaSkaSjaSlaRcaSmaSnaSoaSpaSpaSpaSpaSpaSpaSpaSpaSpaSqaSraSsaSraStaSuaSvaSwaSxaSyaSzaSAaSBaSCaSDaKUaHCaHCaHCaHCaHCaHCaSEaSEaCdawDaxZaAyaQbaSFaSGaSHaSIaSJaSKaSLaSMaPcaSNaSOaLnaQjaLoaLoaSPaSQaLkaSRaSSaSTaSUaSVaSWaMOaQqaSXaSYaQqaRJaSZaTaaRJaTbaTcaRMaTdaTeaTfaakaakaakaTgajQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaagaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaalaalaalaalaQwaThaRQaTiaTjaQzaTkaJdaTlaTmaTnaLIaToaTpaTqaTraPxaTsaTtaTuaTvaTwaTxaTxaTxaTxaTxaTxaTyaTzaTAaTBaLUaLWaLWaTCaPOaTDaOIaHvaTEaCdaDaaFRaSiaaaaKSaaaaKSaaaaaaaKUaTFaKUaTGaRcaTHaTIaTJaTJaTJaTJaTJaTJaTJaTJaTJaTKaTLaSraSraTMaTNaTOaTPaTQaTQaTRaTSaTTaTUaTVaTWaTXaTYaTZaUaaUbaUcaUdaEcaDgaCdaUeaUfaUgaQbaUhaUiaUjaUkaPcaUlaUmaUnaUoaUpaUqaLnaQjaLoaLoaNMaUraLkaUsaUtaUuaUvaUwaUxaUyaUzaUAaUxaUzaUBaUCaUDaUEaUFaUCaUGaUHaUIaUJaaaaaaaaaaTgaakaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaagaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaalaalaalaalaUKaULaUMaQxaUNaQxaQxaUOaUPaUQaUQaURaUSaUTaUUaUVaQxaUWaQxaUXaUYaUZaNkaNkaNkaVaaNkaNkaVbaVcaVdaVeaVfaNkaVgaVhaViaNoaNpaNqaJEaCdaDaaFRaSiaaaaKSaaaaKSaNtaakaKUaKUaKUaRcaRcaTHaVjaVkaVlaVlaVlaVlaVkaVlaVlaVkaTHaVmaVnaSraVoaVpaSuaVqaVraVsaVtaVuaVvaVwaVxaVyaVzaTYaVAaVBaVCaCdaVDaVEaVFaCdaVGaVHaVIaVJaVKaVLaVMaVNaPcaVOaVPaVQaPcaVRaVSaVTaVUaVVaVVaVVaVWaLkaVXaFqaVYaVZaWaaWbaWcaWdaWeaWfaWgaWbaWhaWiaWjaWkaWlaWmaTdaWnaUJaaaaaaaaaaTgaakajQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaLBaalaalaalaQwaQxaQyaQzaQAaQBaQCaLIaQDaQEaQFaLIaQGaQHaJdaJdaJdaJdaJdaJdaJdaQIaQJaQKaQLaQLaQMaQNaQOaQPaQQaOBaQRaQSaQTaQUaQVaQWaQXaQYaQZaCdaCdaDXaCdaHzaRaaakaRaaakaakaKUaKUaKUaKUaRbaRcaRdaRcaRcaRcaRcaReaRfaRcaRcaRcaRdaRgaRhaRiaRjaRkaRlaRmaRnaKVaKVaRoaRpaRqaRraKVaKVaMlaMlaRsaMlaMlaHCajQajQaCFawDaxZaAyaRtaRuaRvaRwaRxaPcaRyaRzaQfaPcaRAaRBaRCaRDaREaREaRFaRGaLkaRHaFqaRIaXraRKaXraXpaXraXraXraXraXraXraXraRJaRLaQraRMaRNaROaMOaMOaMOaMOaMOaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaLBaRPaalaalaQwaQxaRQaRRaRSaOfaRTaJdaJdaJdaJdaJdaRUaRVaRWaRXaRYaJdaRZaSaaJdaJdaSbaSbaScaSbaSbaSbaSbaSdaSeaOBaOCaODaSfaSgaOGaOHaOIaHvaHwaCdaShaFRaSiaakaNsaaaaNsaaaaaaaSjaSkaSjaSlaRcaSmaSnaSoaSpaSpaSpaSpaSpaSpaSpaSpaSpaSqaSraSsaSraStaSuaSvaSwaSxaSyaSzaSAaSBaSCaSDaKUaHCaHCaHCaHCaHCaHCaSEaSEaCdawDaxZaAyaQbaSFaSGaSHaSIaSJaSKaSLaSMaPcaSNaSOaLnaQjaLoaLoaSPaSQaLkaSRaSSaSTaSVaSXaSWaXpaSYaTaaSZaSYaXraUwaUvaRJaTbaTcaRMaTdaTeaTfaakaakaakaTgajQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaagaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaalaalaalaalaQwaThaRQaTiaTjaQzaTkaJdaTlaTmaTnaLIaToaTpaTqaTraPxaTsaTtaTuaTvaTwaTxaTxaTxaTxaTxaTxaTyaTzaTAaTBaLUaLWaLWaTCaPOaTDaOIaHvaTEaCdaDaaFRaSiaaaaKSaaaaKSaaaaaaaKUaTFaKUaTGaRcaTHaTIaTJaTJaTJaTJaTJaTJaTJaTJaTJaTKaTLaSraSraTMaTNaTOaTPaTQaTQaTRaTSaTTaTUaTVaTWaTXaTYaTZaUaaUbaUcaUdaEcaDgaCdaUeaUfaUgaQbaUhaUiaUjaUkaPcaUlaUmaUnaUoaUpaUqaLnaQjaLoaLoaNMaUraLkaUsaUtaUuaUxaUzaUyaUBaUAaUDaUyaUAaVZaWbaWaaUEaUFaUCaUGaUHaUIaUJaaaaaaaaaaTgaakaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaagaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaalaalaalaalaUKaULaUMaQxaUNaQxaQxaUOaUPaUQaUQaURaUSaUTaUUaUVaQxaUWaQxaUXaUYaUZaNkaNkaNkaVaaNkaNkaVbaVcaVdaVeaVfaNkaVgaVhaViaNoaNpaNqaJEaCdaDaaFRaSiaaaaKSaaaaKSaNtaakaKUaKUaKUaRcaRcaTHaVjaVkaVlaVlaVlaVlaVkaVlaVlaVkaTHaVmaVnaSraVoaVpaSuaVqaVraVsaVtaVuaVvaVwaVxaVyaVzaTYaVAaVBaVCaCdaVDaVEaVFaCdaVGaVHaVIaVJaVKaVLaVMaVNaPcaVOaVPaVQaPcaVRaVSaVTaVUaVVaVVaVVaVWaLkaVXaFqaVYaWcaWeaWdaWgaWfaWiaWhbgRaWdbgTbgSaWjaWkaWlaWmaTdaWnaUJaaaaaaaaaaTgaakajQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaagaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaLBaalaWoaalaQwaQxaWpaOfaOfaOfaWqaJdaWraWsaWtaJdaWuaWvaWwaWxaQBaWyaWzaWAaWBaWCaQSaQSaQSaQSaQSaQSaQSaWDaWEaOBaOCaODaWFaOFaOGaWGaWHaHvaHwaCdaWIaWJaCdaaaaKSaaaaKSaNtaaaaakaakaWKaWLaWMaWNaWOaVlaWPaWPaWPaVlaWPaWPaWPaVlaTHaWQaSraSraSraSraWRaSraSraSraWSaWTaWUaWVaWWaWXaWYaTYaWZaXaaXbaCdaXcaXdaXdaXeaXfaXgaXhaQbaQbaXiaQbaQbaPcaPcaPcaXjaPcaLkaLkaXkaLkaXlaXmaLkaLkaLkayKaFqaXnaXoaXoaXpaXpaXqaXraXraXraXraXraXraRJaXsaXtaWmaXuaXvaUJaUJaUJaakaTgaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaagaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaLBaalaXwaalaQwaXxaXyaXzaXAaXBaXCaJdaJdaJdaJdaJdaXDaXEaXFaXGaXHaJdaXIaXJaJdaXKaXLaXMaXNaXOaXPaXQaXQaXRaXSaXTaLUaLWaLWaLWaPOaLUaXUaXVaXWaCdaCYaDaaCdaaaaNsaaaaNsaNtaaaaaaaakaXXaRcaXYaXZaYaaVlaWPaVlaVlaVlaVlaVlaWPaYbaTHaYcaYdaNvaNvaYeaYfaYgaYhaSraSraYiaSuaYjaYkaYlaYmaTYaYnaCdaCdaCdaYoaYpaCdaCdaYqaYraYsaYtaYuaYvaYwaYxaYyaYzaPcaYAaYBaYCaYDaYEaYFaYBaYBaYGaYHaPcayKaFqaVYaYIaFqaYJaYKaYLaYMaYNaYOaYPaYQaYRaRJaYSaYTaWmaQqaYUaYVaYWaUJaaaaTgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaLBaalaalaQwaYXaYYaYZaZaaZbaZcaJdaZdaZeaTnaLIaZfaZgaZhaZhaZhaZhaZhaZhaZhaZhaZhaZiaZiaZjaZjaZjaZjaZkaZlaZmaZnaZoaZpaZqaZraZsaZtaZuaZvaCdaCYaDaaCdaaaaKSaaaaKSaNtaaaaaaaakaXXaRcaXYaXZaYaaVlaWPaZwaTIaTJaTKaVlaWPaVlaTHaYcaYdaZxaZyaZzaSuaSuaZAaZBaSraZCaZDaZEaZFaZGaZHaZIaZJaZKaZLaZMaZNaZOaZPaZQaZRaxMaZSaZTaZUaZVaZWaZXaZXaZYaZZbaabaabaabaababbaabaabaabaabaabacbadaFqaVYbaebafbagbahbaibajbajbakaKtaKubajaRJbanbaobapbaqbarbasbataUJaaaaTgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -6499,11 +6504,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaLBaLBaIcaIcbbYbbZbcabcbbccaJdaWraWsaWtaJdbcdbceaZhbcfbcgbcgbcgbcgbcgbcgbchbcibcjbckbclbcmbcnbcobcpbcqbcrbcsbctbctbcubcvbcwaNqaJEaCdaDaaFRaSiaaaaKSaaaaRaaNtaaaaaaaakaXXaRcaXYaXZaYaaVlaWPaVlbcxaSnbcyaVlaWPaVlaTHaYcaYdaNvbczbcAbcBaVwbcCbcDaSrbcEbcFbcGbcHbcIbcJbcKbcLbcMbcNbcObcPbcQbcRbcSbcTaxZbbxaZTaZUbcUbcVaZUbcUbcWaPcaYBbcXbcYbcZbdabdbbdcbaabddbdebdfbdgaEtbbIbaebdhaXpbdibdjbdkbajbdlaLyaKubdnaRJbdobdpbdqbdraQqbdsbdtaUJaaaaTgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaLBaLBakSakSakSakSakSaIcaJdaJdaJdaJdaJdbdubdvaZhbdwbcgbdxbdybdybdzbdAbdBbdCbdDbdEbdFbdGbdHaPLbdIbdJaLUbdKbdLbdKaPOaLUbaSaHvaHwaCdaDaaFRaSiaaaaNsaaaaNsaNtaaaaaaaakaXXaRcaXYaXZaYaaVlaWPaVlaVlaVlaVlaVlaWPaVlaTHaYcaYdaNvaNvbdMbdNbdObdPaSraSrbdQbdRbdSbdTbdUbdVaKUbdWaSraSrbdXbdYbdZaSraSrbeaaxZbbxaZXaZXaZXbebaZTaZTbecaPcaPcaPcbedbedbeeaPcaPcaYBaYBbefaPcbegaUtbehbeibejbekbelbdjbembenbeobepbeqberaRJbesbetbeubevaQqbbWbewaUJaaaaTgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaLBaLBaLBaalaalaalbexbeybezbeAbeBbeCbeDaJdbeEbeFaZhbeGbcgbcgbcgbcgbcgbcgbeHbeIbeJbeKbeLbeMbeNbeObePbeQbeRaNkbeSaNkbeTbeUbeVaHvaHwaCdaDaaFRaSiaaaaKSaaaaKSaNtaaaaakaakaWKbeWbeXbeYaYaaVlaWPaWPaWPaVlaWPaWPbeZaVlaTHaWQaSraSraSraSrbfaaSraSraSrbfbbfcbdRbfdbfebffbfgaSrbfhaSrbfibfjbfkbflbfmbfnbfoaxZbbxaZXbfpbfqbfrbfsbfsbfsbfsbftbfubfvbfwbfxbfyaPcbfzbfAbfBaPcbfCaGVbfDaXoaXoaXpaXpbfEaXraXraXraXraXraXraRJbfFbfGbfHbfIbfJbfKbfLaUJaakaTgaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaalaalaalaalbfMbfNbfObfPaQxbfQbfRbfSbfTbfUaZhbdwbcgbfVbfWbfXbfYbfZbgabgbbgcbgdbgebgfbggbghaZlbgibgjbgkbglbgmbgnaOHaOIaHvbgoaCdbgpaWJaCdaaaaKSaaaaKSaNtaakaKUaKUaKUaRcaRcaTHbaZaVkaVlaVlaVkaVlaVlaVlaVlaVkaTHbgqaVnaSraVobgrbbfbgsbgtbgubgvaVwbgwbgxbgybgzcgaaSrbgBaSrbgCbgDaSubgEbgFbfnbgGaOZbbxaZXbgHbgIbbyaZXaZXbgJbgKbgLaZXaZXaZXaZXaZXbgMaZXaZXaZXbgNbgObgPbgQaWjaWbaWbbgRbgSbgTbgUaWbaWbbgVaWiaWjbgWbgXaWmaQqbgYbgZbhaaUJaaaaTgaakaakajQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaalaalaalaalbhbbhcbhdbhebhfaPwbhgaJibhhbhiaZhbhjbcgbcgbcgbcgbcgbhkaZhbhlbhmbhnbhobhpbhqbaKaSebhraLUaLWaLWaLWaPOaTDaOIaHvaHwaCdbhsaDaaCdaaaaKSaaaaKSaaaaaaaKUbhtaKUbhuaRcaTHbhvaSnbhwaSnaSnaSnaSnaSnaSnaSnbcybhxaSraSraTMbhybhzbhAbhBbhCbhCbhCbhDbhEbhFbhGbhHaKUbhIaSrbhJbhKbhLbhLbhMbfnbfoaxZbbxaZXbhNbhNbfrbhOaZXaZXaZXaZXbhPbhQbhQbhQbhQbhQbhRbfpbfpaZXbgObhSaVYaVZaQqaQqbhTaQqbhUbhVbhVbhWbhXbhYbhZbiabhVbibbicbidaUJaUJaUJaaaaTgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaalaalaalaalbieakSakSaIcaIcbifbigbihaJdbifaOfaZhbiibijbikbikbikbilbimaZhaZiaZiaZiaZiaZiaZibinaSeaOBbioaQSbipaQUaQVaQWaQXbiqbiraCdaDaaDaaCdaaaaNsaaaaNsaaaaaaaSjbisaSjaSlaRcbitbiubivbiwbiwbiwbiwbiwbiwbiwbiwbixbiyaSrbizaSraStbiAbiBbiCbiDbiEbiFbiGbiHaKUaKUaKUaKUbhIaSraSrbfnbfnbfnaSraSrbiIaxZbbxaZXaZXaZXbbyaZXaZXbiJbiKbiLaZXbiJbiMbgLaZXaZXbiNbiObiMbiLbgObhSbiPaRJbiQaSZaMOaQqbiRbiSaQqaRJaQqbiTaMObiUaQqaWmbiVbiWaUJaaaaaaaakaTgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaalaalaalaalaalaalaalaalaIcbiXbiYbiZaJdaJdbjaaIcaIcbjbbjbbjbbjbbjbbjbbjbbjcbjdbjebjfbjgaLWbjhaSeaOBaOCaODbjiaSgbjjaOHbjkbjlaIpaCdaDaaDXaCdaHzaRaaakaRaaakaakaKUaKUaKUaKUaRbaRcbjmbjnbjnbjnbjnbjobjnbjnbjnbjnbjpbjnbjqbjrbjsbjtbjubjvbjwaSrbjxaSrbjyaSraKUajQaakaakaakaakaakaaaaaaaakaakaCFbjzaxZbbxaZXbfqbfpbbyaZXbjAbjBbjBbjBbjBbjBbjBbjBbjCaZXbiNbiMbiMbgLbjDbjEbjFaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJbjGaMOaQraQqaWmbjHbjIaUJaakaakaaaaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaalaalaalaalaalaalaalaIcbjJbjKbjLaJdaOfaOfbjMbjNbjbbjObjPbjPbjPbjQbjbbjRbjSaQSaQSbjSbjTbjUbdIbjVaLUaLWaLWaTCaPOaOHaOIaHvaHwaCdaDaaFRaSiaakaKSaaaaKSaaaaaaaaaaakaakaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaSraSrbjWbjXbjYbjZaSraNvcgccgwcgwcgxaaaaaaajQaakaakaaaaaaaaaaaaaakaCFbkbaxZbbxaZXbkcbiKbfrbfsbkdbkebkfaUjaUjaUjbkgbkhbkibhQbkjbkkbklbiLbgOaFqaLqbkmaaaaaaaaaaaaaaaaaaaaabknapgbkoaMObkpbkqaWmbkrbksaUJaaaaaaaaaaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaalaalaalaalbfMbfNbfObfPaQxbfQbfRbfSbfTbfUaZhbdwbcgbfVbfWbfXbfYbfZbgabgbbgcbgdbgebgfbggbghaZlbgibgjbgkbglbgmbgnaOHaOIaHvbgoaCdbgpaWJaCdaaaaKSaaaaKSaNtaakaKUaKUaKUaRcaRcaTHbaZaVkaVlaVlaVkaVlaVlaVlaVlaVkaTHbgqaVnaSraVobgrbbfbgsbgtbgubgvaVwbgwbgxbgybgzcgaaSrbgBaSrbgCbgDaSubgEbgFbfnbgGaOZbbxaZXbgHbgIbbyaZXaZXbgJbgKbgLaZXaZXaZXaZXaZXbgMaZXaZXaZXbgNbgObgPbgQbgUaWdaWdbhTbgVbhWbhUaWdaWdbhXbgSaWjbgWbgXaWmaQqbgYbgZbhaaUJaaaaTgaakaakajQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaalaalaalaalbhbbhcbhdbhebhfaPwbhgaJibhhbhiaZhbhjbcgbcgbcgbcgbcgbhkaZhbhlbhmbhnbhobhpbhqbaKaSebhraLUaLWaLWaLWaPOaTDaOIaHvaHwaCdbhsaDaaCdaaaaKSaaaaKSaaaaaaaKUbhtaKUbhuaRcaTHbhvaSnbhwaSnaSnaSnaSnaSnaSnaSnbcybhxaSraSraTMbhybhzbhAbhBbhCbhCbhCbhDbhEbhFbhGbhHaKUbhIaSrbhJbhKbhLbhLbhMbfnbfoaxZbbxaZXbhNbhNbfrbhOaZXaZXaZXaZXbhPbhQbhQbhQbhQbhQbhRbfpbfpaZXbgObhSaVYaWcaSYaSYbhYaSYbiRbiQbiQbiSbjObiTbhZbiabhVbibbicbidaUJaUJaUJaaaaTgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaalaalaalaalbieakSakSaIcaIcbifbigbihaJdbifaOfaZhbiibijbikbikbikbilbimaZhaZiaZiaZiaZiaZiaZibinaSeaOBbioaQSbipaQUaQVaQWaQXbiqbiraCdaDaaDaaCdaaaaNsaaaaNsaaaaaaaSjbisaSjaSlaRcbitbiubivbiwbiwbiwbiwbiwbiwbiwbiwbixbiyaSrbizaSraStbiAbiBbiCbiDbiEbiFbiGbiHaKUaKUaKUaKUbhIaSraSrbfnbfnbfnaSraSrbiIaxZbbxaZXaZXaZXbbyaZXaZXbiJbiKbiLaZXbiJbiMbgLaZXaZXbiNbiObiMbiLbgObhSbiPaXrbKUaUwaXpaSYcrXcrWaSYaXraSYcrYaMObiUaQqaWmbiVbiWaUJaaaaaaaakaTgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaalaalaalaalaalaalaalaalaIcbiXbiYbiZaJdaJdbjaaIcaIcbjbbjbbjbbjbbjbbjbbjbbjcbjdbjebjfbjgaLWbjhaSeaOBaOCaODbjiaSgbjjaOHbjkbjlaIpaCdaDaaDXaCdaHzaRaaakaRaaakaakaKUaKUaKUaKUaRbaRcbjmbjnbjnbjnbjnbjobjnbjnbjnbjnbjpbjnbjqbjrbjsbjtbjubjvbjwaSrbjxaSrbjyaSraKUajQaakaakaakaakaakaaaaaaaakaakaCFbjzaxZbbxaZXbfqbfpbbyaZXbjAbjBbjBbjBbjBbjBbjBbjBbjCaZXbiNbiMbiMbgLbjDbjEbjFaXraXraXraXraXraXraXraXraXraXrbjGaMOaQraQqaWmbjHbjIaUJaakaakaaaaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaalaalaalaalaalaalaalaIcbjJbjKbjLaJdaOfaOfbjMbjNbjbcrZbjPbjPbjPbjQbjbbjRbjSaQSaQSbjSbjTbjUbdIbjVaLUaLWaLWaTCaPOaOHaOIaHvaHwaCdaDaaFRaSiaakaKSaaaaKSaaaaaaaaaaakaakaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaKUaSraSrbjWbjXbjYbjZaSraNvcgccgwcgwcgxaaaaaaajQaakaakaaaaaaaaaaaaaakaCFbkbaxZbbxaZXbkcbiKbfrbfsbkdbkebkfaUjaUjaUjbkgbkhbkibhQbkjbkkbklbiLbgOaFqaLqbkmaaaaaaaaaaaaaaaaaaaaabknapgbkoaMObkpbkqaWmbkrbksaUJaaaaaaaaaaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaalaalaalaalaalaalaIcaIcaIcaIcaIcbktaPubkubkvbjbbkwaLzaMKaLzbkzbkAbkBbkCbaPbkDbkEbkFbkGbkHaVebkIaNkbkJaVhaViaNoaNpaNqaJEaCdbkKaFRaSiaaaaKSaaaaKSaaaaaaaaaaakaakaakaaaaaaaakaaaaaaaaaaaaaakaaaaaaaaaaaaaakaaaaKUbkLbkMbkNbkObkPbkQaSrbkRcgycgBcgAcgCaaaaaaaakaaaaaaaaaaaaaaaaaaajQaCFbkTaxZbbxaZXbhNbhNbbyaZXbkUbkVaUjaUjbkWaUjaUjbkVbkXaZXbkYbhNbhNaZXbgOaFqaLqbkmaaabkZbkZbkZbkZbkZbkZbkZapgbkoaRJblaaMOblbaMOaMOaMOaRJaRJaakaNtaakajQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaalaalaalaalaalaIZaIZaIZakSakSakSakSakSbjbblcaMLbalaMMblgblhblibljblkbllblmblnbloblpblqaOCaODblraOFblsaOHaOIbltblublvblwaFRaSiaaaaIraIsaNsaaaaaaaakaakaakaaaaaaaaaaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaKUblxblyblzblAblBblCaSrblDcgEcgwcgwchjaaaajQajQaaaaaaaaaaaaaaaaaaaaaaCFblFblGbbxaZXaZXaZXbbyblHaQbaQbaQbblIaQbblIaQbaQbaQbblJbkYaZXaZXaZXblKaUtblLbkmaaabkZblMblNblNblNblOblPaEwblQaSUblRblSblTblUblVblWblXaRJaaaaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaalaalaIZaIZaIZaIZaIZaIZaIZaIZaIZbjbblYbambdmbbObmcbmdaLWbmeaLWaLUbmfaLUaLUbmgaLUaLUaLUaLUaLUaLUaLWaJCaHvbmhaCdaCdaWJaCdaaaaJHbmibmjaaaaakbmkaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKUbmlbmmbmnbmobmmbmpaKUaKUaKUaWPaWPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCFbmqbmrbmsbmtbmubmtbmvbmwbmtbmtbmtbmtbmxbmybmtbmtbmtbmwbmzbmtbmtbmtbmAaFqbmBbmCbkmbkZbmDbmEbmFbmEbmGbkZbmHbkoaRJbmIbkybkxblebldblfbmObmPaaaaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -6532,7 +6537,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHtbHubHvbFAbHwbHwbHwbHwbHwaabaabaabaagaagaagaagaagaagaabaabaabaalbHxaabaabaabaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZbqLbHybrubFBbHzbFBbFCbHAbrubqLbHBbHCbHCbHCbHDbHCbHCbHCbHCbHCbHCbHCbHCbHCbHDbHCbHCbHCbHCbHEbHFbHGbHHbHIbFHbHJbHKbHLbHMbHNbHObHPbHQbHRbGNbBTbzvbHSbANbANbANbANbGSbGTbEdbEebzHbzGbHTbyxbHUbHVbHWbHXbHYbyxbHabHZbzGbHbbIabIbbIcbIdbIebIfbIgbIhbIibIjbBkbBkbIkbyybHmbzvbyBbIlbwGbDrbInbIobyFbIobyFbyFbGkbIpbIqbGlbEDaalaalaalaalaalaalaalaalaalaalaalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIrbIsbGnbItbIubHwbIvbIwbIxbHwaabaabaabaabaabaabaabaabaabaabaabaalbIyaalaalaabaabaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZbqLbIzbHCbIAbIBbICbIDbrubIEbqLbIFbrubqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbIGbIGbIGbIGbIHbIIbIJbIGbIKbADbFIbGKbILbIMbINbIObIPbIQbGNbBTbzvbypbIRbANbISbITbIUbIVbIWbIXbIYbIZbJabyqbJbbJcbHWbJdbJebyqbHabElbzGbJfbyqbJgbIcbzGbHbbJhbJibJjbIibBkbBkbBkbBkbJkbHmbzvbyBbJlbyIbJmbJnbJobJobJpbyFbyFbyFbJqbJqbyFbEDaalaalaalaalaalaalaalaalaalaalaalaalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFAbJrbJsbJtbJubJvbJwbJxbHwaabaabaabaabaabaabaabaabaabaabbJybJyaalbJzaalaabaabaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZbqLbqLbqLbqLbqLbqLbFBbFCbJAbJBbqLbIFbrubqLaabaabbqLbJCbJDbJEbJFbqLbJGbJHbJIbJIbJIbIGbJJbJKbJLbJMbJNbJObIGbFHbADbFIbGKbJPbJQbGNbGNbGNbGNbGNbJRbJSbJTbJUbJVbJVbJVbJWbJXbJYbyqbJZbKabKbbyqbKcbKdbKebKfbKgbyqbyqbKhbKibyqbyqbKjbKkbKlbKmbJhbKnbKobKpbKqbKrbKsbKtbyybHmbzvbyBbKubIqbJmbyFbKvbKwbKxbyIbKybKzbyFbyFbKAbyBaalaalaalaalaalaalaalaalaalaalaalaalaalaaaaaaanTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFAbKBbKCbKDbHwbKEbKFbKGbKHaynaalaalaalaalbJyaalaalaalaalaalaalbKIbKJaalaabaabaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZbqLbKKbKLbtWbKMbKNbKObKPbKNbKNbKNbKQbrubqLbqLaabbqLbrubrubKRbrubrubrubrubrubrubrubIGbKSbKTbKUbKVbKWbKXbIGbFHbADbKYbGKbHmbJQbGNbKZchnbLbbGNbLcbzvbypbLdbLebANbANbGSbLfbypbLgbLhbLibLjbyqbyqbLkbLlbysbyqbyqbLmbLnbLobLpbyqbyqbLqbLrbJhbJhbLsbLtbLubyybyybyybyybyybHmbzvbyBbyBbyBbyBbLvbyBbyBbyBbyBbyBbyBbyBbyBbyBbyBaalaalaalaalaalaalaalaalaalaalaalaalaalaalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFAbKBbKCbKDbHwbKEbKFbKGbKHaynaalaalaalaalbJyaalaalaalaalaalaalbKIbKJaalaabaabaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZbqLbKKbKLbtWbKMbKNbKObKPbKNbKNbKNbKQbrubqLbqLaabbqLbrubrubKRbrubrubrubrubrubrubrubIGbKSbKTcsabKVbKWbKXbIGbFHbADbKYbGKbHmbJQbGNbKZchnbLbbGNbLcbzvbypbLdbLebANbANbGSbLfbypbLgbLhbLibLjbyqbyqbLkbLlbysbyqbyqbLmbLnbLobLpbyqbyqbLqbLrbJhbJhbLsbLtbLubyybyybyybyybyybHmbzvbyBbyBbyBbyBbLvbyBbyBbyBbyBbyBbyBbyBbyBbyBbyBaalaalaalaalaalaalaalaalaalaalaalaalaalaalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHwbHwbHwbHwbLwbHwbLxbLybLzbLAbLBbLCaalbJyaalaalaabaabaabaabaabaalaalaalaalaabaabaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaabaabbqLbKKbLDbuJbLEbLFbLGbLHbHCbHCbHCbLIbLJbLKbqLaabbqLbLLbrubrubLMbrtbLNbIGbIGbIGbIGbIGbLObLPbLQbLRbLSbLTbIGbLUbADbFIbGKbLVbLWbLXbLYbLZbMabGNbLcbzvbMbbMcbMdbMebMebMfbMgbMhbMibMjbMkbMlbMmbMnbMobMpbMqbMrbMsbMtbMubMvbMwbMxbMybMzbMAbMBbMCbMDbMEbMwbMFbMGbMHbMIbMJbLVbMKbMKbMKbMLbMKbMKbMKbMKbBobMMbMNbMObMObMObMObMObMPbMPbMPbMPbMPbMPbMPbMPbMPbMPbMPbMPbMPbMPbMPbMQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHwbHwbMRbMSbHwbMTbHwbHwbHwbHwbHwaynbMUaalaalaabaabaabaabaabaabaabaabaabaabaabaabaabaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaabaabbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbMVbqLaabbqLbMWbrubMXbqLbqLbqLbIGbMYbMZbNabNbbNcbNdbNebNfbKWbNgbIGbFHbADbFIbGKbzvbJQbGNbNhbNibNjbGNbNkbIPbNlbNmbNnbNobNpbNqbNrbNsbNtbNubNvbNwbNxbNybNzbNAbLobLobNBbNCbNDbNEbMpbNFbNGbMpbMkbMpbMkbNHbMebMebMebNIbNJbzvbNKbNLbNLbNLbNLbNMbNLbNLbNLbNLbNNbNObGNaabaabaabaabaabaalaalaalaalaalaalaalaalaalaalaalaalaalaalaalaalaalaalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNPbNQbKCbNRbHwbNSbNTbNUbNVbHwaabaabaabaabaabaabaabaagaagaagaagaagaabaabaabaabaabaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaIZaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabbqLbMVbqLaabbqLbNWbrubNXbqLbNYbNZbIGbOabObbOcbOdbOebNebNebOfbKWbNebIGbOgbOhbOibGKbBUbJQbGNbGNbOjbGNbGNbJQbzvbOkbOkbOkbOkbOlbOkbOkbOkbOmbOnbOobOmbOpbOmbOqbOrbOsbOtbOtbOubOvbOwbOsbOxbOybOzbOAbOBbLibOCbODbMebOEbOFbOFbOFbOFbOFbOFbOFbOFbOFbOFbOFbOFbOFbHmbOGbGNaabaabaabaabaabaalaalaalaalaalaalaalaalaalaalaalaalaalaalaalaalaalaalaalaalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/AsteroidStation/z2.dmm b/_maps/map_files/AsteroidStation/z2.dmm index d624a944e99..b10d5b27b2a 100644 --- a/_maps/map_files/AsteroidStation/z2.dmm +++ b/_maps/map_files/AsteroidStation/z2.dmm @@ -620,7 +620,7 @@ "lV" = (/turf/indestructible/fakeglass{icon_state = "fakewindows"; dir = 9},/area/syndicate_mothership) "lW" = (/turf/indestructible/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/syndicate_mothership) "lX" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/mushroom,/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) -"lY" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = 5; pixel_y = -2; step_x = 0},/obj/item/toy/cards/deck/syndicate{icon_state = "deck_syndicate_full"; pixel_x = -6; pixel_y = 6},/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) +"lY" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = 5; pixel_y = -2},/obj/item/toy/cards/deck/syndicate{icon_state = "deck_syndicate_full"; pixel_x = -6; pixel_y = 6},/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) "lZ" = (/obj/machinery/computer/telecrystals/uplinker,/turf/simulated/floor/plasteel/podhatch{dir = 8},/area/syndicate_mothership) "ma" = (/obj/structure/showcase{desc = "A strange machine supposedly from another world. The Wizard Federation has been meddling with it for years."; icon_state = "processor"; name = "byond random number generator"},/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage7"},/area/wizard_station) "mb" = (/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage"},/area/wizard_station) diff --git a/_maps/map_files/MetaStation/MetaStation.v41F.dmm b/_maps/map_files/MetaStation/MetaStation.v41F.dmm index 780c56bac3b..b05fc0caa49 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41F.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41F.dmm @@ -405,7 +405,7 @@ "ahO" = (/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) "ahP" = (/turf/simulated/floor/plasteel{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/security/warden) "ahQ" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/effect/landmark{name = "secequipment"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/main) -"ahR" = (/obj/machinery/disposal,/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -24; pixel_y = -20},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching certain areas."; dir = 1; name = "Head of Security's Monitor"; network = list("Prison","MiniSat","tcomm"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) +"ahR" = (/obj/machinery/disposal/bin,/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -24; pixel_y = -20},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching certain areas."; dir = 1; name = "Head of Security's Monitor"; network = list("Prison","MiniSat","tcomm"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) "ahS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/hos) "ahT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{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/carpet,/area/security/hos) "ahU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/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/carpet,/area/security/hos) @@ -515,7 +515,7 @@ "ajU" = (/obj/structure/rack,/obj/item/weapon/storage/box/firingpins{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/firingpins,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/warden) "ajV" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/maintenance/starboard) "ajW" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/main) -"ajX" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/main) +"ajX" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/main) "ajY" = (/obj/structure/table,/obj/machinery/light/small{dir = 8},/obj/machinery/magnetic_controller{autolink = 1; pixel_y = 3},/obj/item/clothing/ears/earmuffs,/obj/item/clothing/glasses/sunglasses{pixel_x = 3; pixel_y = 3},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/security/range) "ajZ" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel,/area/security/range) "aka" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/light/small{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/security/range) @@ -805,7 +805,7 @@ "apy" = (/obj/structure/grille,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/window/shuttle,/turf/simulated/floor/plating,/area/shuttle/labor) "apz" = (/obj/machinery/flasher_button{id = "gulagshuttleflasher"; name = "Flash Control"; pixel_x = 0; pixel_y = -26; req_access_txt = "1"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/labor) "apA" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/iv_drip{density = 0},/turf/simulated/floor/plasteel{icon_state = "whitered"},/area/security/brig) -"apB" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"apB" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) "apC" = (/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/labor) "apD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Airlock"; req_access_txt = "2"},/obj/machinery/door_control{id = "prison release"; name = "Labor Camp Shuttle Lockdown"; pixel_x = 0; pixel_y = -25; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "apE" = (/obj/machinery/door/airlock/glass_command{name = "Gravity Generator Area"; req_access_txt = "19; 61"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravity_generator) @@ -858,7 +858,7 @@ "aqz" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aqA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aqB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) -"aqC" = (/obj/machinery/disposal,/obj/machinery/light_switch{pixel_x = 0; pixel_y = -26},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/camera{c_tag = "Fitness Room - Aft"; dir = 1},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) +"aqC" = (/obj/machinery/disposal/bin,/obj/machinery/light_switch{pixel_x = 0; pixel_y = -26},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/camera{c_tag = "Fitness Room - Aft"; dir = 1},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aqD" = (/obj/machinery/vending/coffee,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aqE" = (/obj/machinery/light,/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aqF" = (/obj/machinery/vending/cigarette,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -1227,7 +1227,7 @@ "axE" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "briglockdown"; name = "brig shutters"},/turf/simulated/floor/plating,/area/security/brig) "axF" = (/obj/machinery/door/airlock/maintenance{name = "Mining Dock Maintenance"; req_access_txt = "48"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "axG" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/flasher{id = "gulagshuttleflasher"; pixel_x = 25},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/labor) -"axH" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/security/brig) +"axH" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/security/brig) "axI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig) "axJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/brig) "axK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/machinery/camera{c_tag = "Brig - Hallway - Port"; dir = 1; network = list("SS13")},/obj/machinery/door_timer{id = "Cell 1"; name = "Cell 1"; pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/brig) @@ -1413,7 +1413,7 @@ "aBi" = (/obj/structure/closet/secure_closet/engineering_personal,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aBj" = (/obj/structure/closet/crate/medical,/obj/item/stack/cable_coil,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard) "aBk" = (/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/device/radio/intercom{freerange = 0; 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) -"aBl" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"aBl" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "aBm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) "aBn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{sortType = 4},/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor/plasteel,/area/engine/engineering) "aBo" = (/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/supply/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/engine/engineering) @@ -2043,7 +2043,7 @@ "aNo" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible,/obj/machinery/portable_atmospherics/pump,/obj/machinery/light/small{dir = 1},/obj/machinery/firealarm{pixel_y = 27},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/crew_quarters/locker) "aNp" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible,/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/crew_quarters/locker) "aNq" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible,/obj/machinery/portable_atmospherics/scrubber,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/crew_quarters/locker) -"aNr" = (/obj/machinery/disposal{pixel_x = 0; pixel_y = 0},/obj/structure/disposalpipe/trunk,/obj/machinery/camera{c_tag = "Locker Room Starboard"; dir = 2; network = list("SS13")},/obj/structure/sign/pods{pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/crew_quarters/locker) +"aNr" = (/obj/machinery/disposal/bin{pixel_x = 0; pixel_y = 0},/obj/structure/disposalpipe/trunk,/obj/machinery/camera{c_tag = "Locker Room Starboard"; dir = 2; network = list("SS13")},/obj/structure/sign/pods{pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/crew_quarters/locker) "aNs" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) "aNt" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/locker) "aNu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/locker) @@ -2197,7 +2197,7 @@ "aQm" = (/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},/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) "aQn" = (/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"}) "aQo" = (/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"}) -"aQp" = (/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"}) +"aQp" = (/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/bin,/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"}) "aQq" = (/obj/machinery/power/apc{cell_type = 10000; dir = 8; name = "Engine Room APC"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/engine/engineering) "aQr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) "aQs" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/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) @@ -2367,7 +2367,7 @@ "aTA" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "bridge blast"; layer = 2.9; name = "bridge blast door"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/bridge) "aTB" = (/obj/machinery/computer/supplycomp,/turf/simulated/floor/plasteel{dir = 10; icon_state = "brown"},/area/quartermaster/qm) "aTC" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/obj/item/device/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) -"aTD" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/quartermaster/qm) +"aTD" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/quartermaster/qm) "aTE" = (/obj/structure/safe,/obj/item/weapon/storage/secure/briefcase{contents = newlist(/obj/item/clothing/suit/armor/vest,/obj/item/weapon/gun/projectile/automatic/pistol,/obj/item/weapon/suppressor,/obj/item/weapon/melee/classic_baton/telescopic,/obj/item/clothing/mask/balaclava,/obj/item/bodybag,/obj/item/weapon/soap/nanotrasen)},/obj/item/weapon/storage/backpack/dufflebag{contents = newlist(/obj/item/clothing/under/lawyer/blacksuit,/obj/item/clothing/tie/waistcoat,/obj/item/clothing/suit/toggle/lawyer/black,/obj/item/clothing/shoes/laceup,/obj/item/clothing/gloves/color/black,/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/head/fedora); desc = "A large dufflebag for holding extra things. There is a NanoTrasen logo on the back."; icon_state = "duffle-syndieammo"; item_state = "duffle-syndieammo"},/obj/item/weapon/card/id/silver{access = list(12); assignment = "Reaper"; name = "Thirteen's ID Card (Reaper)"; registered_name = "Thirteen"},/obj/item/weapon/lazarus_injector,/obj/item/weapon/gun/energy/gun/advtaser,/obj/item/weapon/gun/projectile/revolver/russian,/obj/item/ammo_box/a357,/obj/item/clothing/tie/stethoscope,/obj/item/weapon/book{desc = "An undeniably handy book."; icon_state = "bookknock"; name = "A Simpleton's Guide to Safe-cracking with Stethoscopes"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/security/nuke_storage) "aTF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/machinery/disposal/deliveryChute{dir = 4; name = "Crate Disposal Chute"; pixel_x = -5; pixel_y = 2},/obj/machinery/door/window/westleft{base_state = "right"; dir = 4; icon_state = "right"; name = "Crate Disposal Chute"; req_access_txt = "0"},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/storage/primary) "aTG" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/storage/primary) @@ -2438,7 +2438,7 @@ "aUT" = (/obj/item/weapon/book/manual/wiki/engineering_hacking{pixel_x = 4; pixel_y = 5},/obj/item/weapon/book/manual/wiki/engineering_construction{pixel_x = 0; pixel_y = 3},/obj/structure/closet/crate,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard) "aUU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aUV" = (/obj/structure/disposalpipe/segment,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"aUW" = (/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; supply_display = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/quartermaster/storage) +"aUW" = (/obj/machinery/light{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/status_display{density = 0; pixel_x = 32; pixel_y = 0; supply_display = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/quartermaster/storage) "aUX" = (/turf/simulated/wall,/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "aUY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/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"}) "aUZ" = (/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"}) @@ -2504,7 +2504,7 @@ "aWh" = (/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aWi" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/sheet/cardboard,/obj/item/stack/rods{amount = 50},/obj/item/weapon/paper,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "aWj" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/storage/primary) -"aWk" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/storage/primary) +"aWk" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/storage/primary) "aWl" = (/obj/structure/reagent_dispensers/fueltank,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/storage/primary) "aWm" = (/obj/machinery/computer/station_alert,/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkbrown"},/area/bridge) "aWn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/storage/primary) @@ -2601,7 +2601,7 @@ "aYa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Crew Quarters Access"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "aYb" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Crew Quarters Access"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "aYc" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) -"aYd" = (/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) +"aYd" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "aYe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{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) "aYf" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) "aYg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{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) @@ -2677,7 +2677,7 @@ "aZy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "L11"},/area/hallway/primary/central) "aZz" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 2},/turf/simulated/floor/plasteel{icon_state = "L9"},/area/hallway/primary/central) "aZA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{desc = ""; icon_state = "L13"; name = "floor"},/area/hallway/primary/central) -"aZB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{icon_state = "4-8"; step_x = 0; step_y = 0; d1 = 4; d2 = 8},/turf/simulated/floor/plasteel,/area/hallway/primary/central) +"aZB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "aZC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "aZD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "aZE" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -2794,7 +2794,7 @@ "bbL" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engine/engineering) "bbM" = (/obj/machinery/camera{c_tag = "AI Chamber - Port"; dir = 4; network = list("RD")},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 4; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/turret_protected/ai) "bbN" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; layer = 2.9},/obj/machinery/turretid{icon_state = "control_stun"; name = "AI Chamber turret control"; pixel_x = 3; pixel_y = -23},/turf/simulated/floor/plasteel{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/turret_protected/ai) -"bbO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{icon_state = "1-4"; step_x = 0; step_y = 0; d1 = 1; d2 = 4},/turf/simulated/floor/plasteel{icon_state = "L8"},/area/hallway/primary/central) +"bbO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/simulated/floor/plasteel{icon_state = "L8"},/area/hallway/primary/central) "bbP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bbQ" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; layer = 2.9},/obj/machinery/flasher{id = "AI"; pixel_x = -6; pixel_y = -24},/turf/simulated/floor/plasteel{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/turret_protected/ai) "bbR" = (/obj/machinery/hologram/holopad,/obj/machinery/door/window{dir = 1; name = "AI Core Door"; req_access_txt = "16"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/turret_protected/ai) @@ -3019,7 +3019,7 @@ "bgc" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/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"}) "bgd" = (/obj/machinery/light{dir = 1},/obj/machinery/computer/security/wooden_tv,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bge" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table/wood,/obj/item/weapon/pinpointer,/obj/item/weapon/disk/nuclear,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bgf" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"bgf" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bgg" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bgh" = (/obj/structure/table/wood,/obj/machinery/newscaster/security_unit{pixel_x = -30; pixel_y = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bgi" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/filingcabinet{pixel_x = 4},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3041,7 +3041,7 @@ "bgy" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/device/multitool,/obj/item/clothing/glasses/meson,/obj/machinery/light_switch{pixel_x = 0; pixel_y = -28},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/tech) "bgz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) "bgA" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 0},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/tech) -"bgB" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) +"bgB" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "bgC" = (/obj/structure/table/glass,/turf/simulated/floor/plasteel,/area/engine/break_room) "bgD" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/secure/briefcase,/obj/item/clothing/mask/cigarette/cigar,/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 = "vault"; dir = 5},/area/engine/chiefs_office) "bgE" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/lighter,/obj/item/clothing/glasses/meson,/obj/machinery/door_control{id = "ceprivacy"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) @@ -3250,7 +3250,7 @@ "bkz" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/break_room) "bkA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/break_room) "bkB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/break_room) -"bkC" = (/obj/machinery/disposal{pixel_x = 2; pixel_y = 2},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/break_room) +"bkC" = (/obj/machinery/disposal/bin{pixel_x = 2; pixel_y = 2},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/break_room) "bkD" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/simulated/floor/plating,/area/library) "bkE" = (/turf/simulated/floor/plating,/area/engine/break_room) "bkF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkblue"; tag = "icon-darkbluecorners (WEST)"},/area/bridge) @@ -3284,7 +3284,7 @@ "blh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/quartermaster/office{name = "\improper Cargo Office"}) "bli" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/quartermaster/office{name = "\improper Cargo Office"}) "blj" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/office{name = "\improper Cargo Office"}) -"blk" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/heads) +"blk" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/heads) "bll" = (/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/folder/yellow,/obj/item/device/multitool,/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "blm" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor/plasteel,/area/quartermaster/office{name = "\improper Cargo Office"}) "bln" = (/obj/item/weapon/tank/internals/air,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) @@ -3296,8 +3296,8 @@ "blt" = (/obj/structure/table,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/janitor) "blu" = (/obj/structure/janitorialcart,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/janitor) "blv" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the Cargo department is."; icon_state = "direction_supply"; name = "cargo department"; pixel_y = -5; tag = "icon-direction_supply"},/turf/simulated/wall,/area/quartermaster/office{name = "\improper Cargo Office"}) -"blw" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/janitor) -"blx" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light_switch{pixel_x = 27; pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) +"blw" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/bin,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/janitor) +"blx" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light_switch{pixel_x = 27; pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "bly" = (/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) "blz" = (/obj/machinery/vending/cart{req_access_txt = "57"},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/wood,/area/crew_quarters/heads) "blA" = (/obj/item/weapon/hand_labeler,/obj/item/stack/packageWrap,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table/wood,/turf/simulated/floor/wood,/area/crew_quarters/heads) @@ -3539,10 +3539,10 @@ "bqc" = (/obj/structure/lattice/catwalk,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/space,/area/space) "bqd" = (/obj/structure/transit_tube/station{tag = "icon-closed (EAST)"; icon_state = "closed"; dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bqe" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/lattice/catwalk,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/space,/area/space) -"bqf" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable/yellow{icon_state = "4-8"; step_x = 0; step_y = 0; d1 = 4; d2 = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bqf" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bqg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bqh" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{icon_state = "4-8"; step_x = 0; step_y = 0; d1 = 4; d2 = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bqi" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{icon_state = "4-8"; step_x = 0; step_y = 0; d1 = 4; d2 = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bqh" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"bqi" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bqj" = (/obj/machinery/door_control{id = "hop"; name = "Privacy Shutters Control"; pixel_x = -24; pixel_y = -6; req_access_txt = "28"},/obj/machinery/light_switch{pixel_x = -25; pixel_y = 5},/turf/simulated/floor/carpet,/area/crew_quarters/heads) "bqk" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{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"}) "bql" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"}) @@ -3589,7 +3589,7 @@ "bra" = (/obj/structure/table/wood,/turf/simulated/floor/wood,/area/library) "brb" = (/obj/item/device/camera_film{pixel_y = 9},/obj/item/device/camera_film{pixel_x = -3; pixel_y = 5},/obj/structure/table/wood,/turf/simulated/floor/wood,/area/library) "brc" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/structure/table/wood,/turf/simulated/floor/wood,/area/library) -"brd" = (/obj/structure/cable/yellow{icon_state = "4-8"; step_x = 0; step_y = 0; d1 = 4; d2 = 8},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{icon_state = "door_closed"; name = "MiniSat Foyer"; req_one_access_txt = "32;19"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Foyer"}) +"brd" = (/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{icon_state = "door_closed"; name = "MiniSat Foyer"; req_one_access_txt = "32;19"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Foyer"}) "bre" = (/obj/structure/displaycase{pixel_y = 5},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "brf" = (/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "brg" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -3604,7 +3604,7 @@ "brp" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/photocopier,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel,/area/storage/art) "brq" = (/obj/machinery/light/small,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/wood,/area/crew_quarters/bar) "brr" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"brs" = (/obj/structure/cable/yellow{icon_state = "4-8"; step_x = 0; step_y = 0; d1 = 4; d2 = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) +"brs" = (/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "brt" = (/obj/machinery/door/airlock/maintenance{name = "Bar Maintenance"; req_access_txt = "25"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/bar) "bru" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/maintcentral{name = "Central Maintenance"}) "brv" = (/turf/simulated/floor/carpet,/area/crew_quarters/heads) @@ -3637,19 +3637,19 @@ "brW" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the escape arm is."; icon_state = "direction_evac"; name = "escape arm"; tag = "icon-direction_evac"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the medical department is."; icon_state = "direction_med"; name = "medical department"; pixel_y = 8; tag = "icon-direction_med"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the research department is."; icon_state = "direction_sci"; name = "research department"; pixel_y = -8; tag = "icon-direction_sci"},/turf/simulated/wall,/area/storage/art) "brX" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the engineering department is."; dir = 4; icon_state = "direction_eng"; pixel_y = 8; tag = "icon-direction_eng (EAST)"},/turf/simulated/wall,/area/maintenance/starboard) "brY" = (/obj/structure/lattice,/obj/structure/transit_tube{tag = "icon-E-W-Pass"; icon_state = "E-W-Pass"},/turf/space,/area/space) -"brZ" = (/obj/structure/cable/yellow{icon_state = "4-8"; step_x = 0; step_y = 0; d1 = 4; d2 = 8},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Foyer"}) +"brZ" = (/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Foyer"}) "bsa" = (/obj/structure/table/wood,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/weapon/gun/projectile/revolver/doublebarrel,/obj/machinery/camera{c_tag = "Bar - Backroom"; dir = 2; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bsb" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/lattice/catwalk,/turf/space,/area/space) -"bsc" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable/yellow{icon_state = "4-8"; step_x = 0; step_y = 0; d1 = 4; d2 = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Foyer"}) -"bsd" = (/obj/structure/cable/yellow{icon_state = "4-8"; step_x = 0; step_y = 0; d1 = 4; d2 = 8},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{icon_state = "door_closed"; name = "MiniSat Antechamber"; req_one_access_txt = "32;19"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"bsc" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Foyer"}) +"bsd" = (/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{icon_state = "door_closed"; name = "MiniSat Antechamber"; req_one_access_txt = "32;19"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) "bse" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/lattice/catwalk,/turf/space,/area/space) -"bsf" = (/obj/structure/cable/yellow{icon_state = "4-8"; step_x = 0; step_y = 0; d1 = 4; d2 = 8},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Foyer"}) -"bsg" = (/obj/structure/cable/yellow{icon_state = "4-8"; step_x = 0; step_y = 0; d1 = 4; d2 = 8},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) -"bsh" = (/obj/structure/cable/yellow{icon_state = "4-8"; step_x = 0; step_y = 0; d1 = 4; d2 = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) -"bsi" = (/obj/structure/cable/yellow{icon_state = "4-8"; step_x = 0; step_y = 0; d1 = 4; d2 = 8},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) -"bsj" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{icon_state = "4-8"; step_x = 0; step_y = 0; d1 = 4; d2 = 8},/obj/machinery/bot/secbot/pingsky,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) -"bsk" = (/obj/structure/cable/yellow{icon_state = "4-8"; step_x = 0; step_y = 0; d1 = 4; d2 = 8},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Maintenance"; req_access_txt = "32"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) -"bsl" = (/obj/structure/cable/yellow{icon_state = "4-8"; step_x = 0; step_y = 0; d1 = 4; d2 = 8},/obj/structure/cable/yellow{icon_state = "1-4"; step_x = 0; step_y = 0; d1 = 1; d2 = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"bsf" = (/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Foyer"}) +"bsg" = (/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"bsh" = (/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"bsi" = (/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"bsj" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/bot/secbot/pingsky,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"bsk" = (/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Maintenance"; req_access_txt = "32"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"bsl" = (/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/structure/cable/yellow{icon_state = "1-4"; d1 = 1; d2 = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) "bsm" = (/obj/structure/stool/bed/chair,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure{name = "MiniSat Maintenance"}) "bsn" = (/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{icon_state = "dark"},/area/ai_monitored/storage/secure{name = "MiniSat Maintenance"}) "bso" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure{name = "MiniSat Maintenance"}) @@ -3876,7 +3876,7 @@ "bwB" = (/obj/machinery/power/apc{cell_type = 10000; dir = 8; name = "Bridge APC"; pixel_x = -27; pixel_y = 0},/obj/structure/cable/yellow,/obj/machinery/camera{c_tag = "Bridge - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkblue"; tag = "icon-darkbluecorners (WEST)"},/area/bridge) "bwC" = (/obj/machinery/computer/arcade,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bwD" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) -"bwE" = (/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) +"bwE" = (/obj/machinery/disposal/bin,/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) "bwF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/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{icon_state = "neutral"; dir = 8},/area/hallway/primary/port) "bwG" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/hallway/primary/port) "bwH" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/port) @@ -3914,7 +3914,7 @@ "bxn" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the escape arm is."; icon_state = "direction_evac"; name = "escape arm"; tag = "icon-direction_evac"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the medical department is."; icon_state = "direction_med"; name = "medical department"; pixel_y = 8; tag = "icon-direction_med"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the research department is."; icon_state = "direction_sci"; name = "research department"; pixel_y = -8; tag = "icon-direction_sci"},/turf/simulated/wall,/area/library) "bxo" = (/obj/structure/window/reinforced{dir = 1; layer = 2.9},/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "MiniSat Exterior - Starboard Aft"; dir = 4; network = list("MiniSat")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bxp" = (/obj/machinery/vending/boozeomat,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"bxq" = (/obj/machinery/disposal{pixel_x = 2; pixel_y = 2},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/wood,/area/crew_quarters/bar) +"bxq" = (/obj/machinery/disposal/bin{pixel_x = 2; pixel_y = 2},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bxr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bxs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "bxt" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{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"}) @@ -4000,7 +4000,7 @@ "byV" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/simulated/floor/plating,/area/hydroponics) "byW" = (/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) "byX" = (/obj/machinery/reagentgrinder,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) -"byY" = (/obj/structure/sign/securearea{desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; pixel_x = 0; pixel_y = 28},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/obj/machinery/light_switch{pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) +"byY" = (/obj/structure/sign/securearea{desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; pixel_x = 0; pixel_y = 28},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal/bin,/obj/machinery/light_switch{pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "byZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bza" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/simulated/floor/plating,/area/hallway/primary/central) "bzb" = (/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/weapon/hand_labeler,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "greenfull"},/area/hydroponics) @@ -4494,7 +4494,7 @@ "bIv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "blackcorner"},/area/atmos) "bIw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/atmos) "bIx" = (/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor/engine,/area/toxins/explab) -"bIy" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/door_control{id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = 26; pixel_y = -26; req_access_txt = "24"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "caution"},/area/atmos) +"bIy" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/door_control{id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = 26; pixel_y = -26; req_access_txt = "24"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "caution"},/area/atmos) "bIz" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/yellow/visible{dir = 4},/obj/structure/grille,/turf/simulated/wall/r_wall,/area/atmos) "bIA" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet,/area/security/vacantoffice) "bIB" = (/obj/machinery/light_switch{pixel_y = -28},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/machinery/light,/turf/simulated/floor/carpet,/area/crew_quarters/theatre) @@ -4918,7 +4918,7 @@ "bQD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"}) "bQE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bQF" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) -"bQG" = (/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) +"bQG" = (/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/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/explab) "bQH" = (/obj/structure/rack,/obj/item/weapon/book/manual/chef_recipes{pixel_x = 2; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/stack/packageWrap,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bQI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bQJ" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) @@ -5097,7 +5097,7 @@ "bUa" = (/obj/item/weapon/cartridge/medical{pixel_x = -2; pixel_y = 6},/obj/item/weapon/cartridge/medical{pixel_x = 6; pixel_y = 3},/obj/item/weapon/cartridge/medical,/obj/item/weapon/cartridge/chemistry{pixel_y = 2},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "bUb" = (/obj/item/weapon/folder/white,/obj/item/weapon/stamp/cmo,/obj/item/clothing/glasses/hud/health,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "bUc" = (/obj/item/weapon/folder/blue,/obj/structure/table/glass,/obj/item/weapon/stamp/cmo,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) -"bUd" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/theatre) +"bUd" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "bUe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/maintenance/starboard) "bUf" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 1},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/maintenance/starboard) "bUg" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) @@ -5193,7 +5193,7 @@ "bVS" = (/obj/structure/table/wood,/obj/item/weapon/folder,/obj/item/weapon/folder,/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/library) "bVT" = (/obj/structure/grille,/obj/structure/window/fulltile,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/surgery) "bVU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/library) -"bVV" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/wood,/area/library) +"bVV" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/wood,/area/library) "bVW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bVX" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{id = "evashutter"; name = "E.V.A. Storage Shutter"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bVY" = (/obj/machinery/door/poddoor/shutters{id = "teleshutter"; name = "Teleporter Access Shutter"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"}) @@ -5221,7 +5221,7 @@ "bWu" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 2},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/starboard) "bWv" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboard) "bWw" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Kitchen"},/obj/structure/plasticflaps{opacity = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/crew_quarters/kitchen) -"bWx" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/atmos) +"bWx" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/atmos) "bWy" = (/obj/machinery/door/poddoor/shutters{id = "teleshutter"; name = "Teleporter Access Shutter"},/obj/machinery/door_control{id = "teleshutter"; name = "Teleporter Shutter Control"; pixel_x = 30; pixel_y = 5; req_access_txt = "19"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"}) "bWz" = (/obj/machinery/pipedispenser,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/atmos) "bWA" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/obj/machinery/pipedispenser/disposal/transit_tube,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/atmos) @@ -5312,7 +5312,7 @@ "bYh" = (/obj/machinery/recharge_station,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bYi" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "bYj" = (/obj/structure/closet,/obj/item/clothing/shoes/jackboots,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bYk" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/central) +"bYk" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/central) "bYl" = (/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/components/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "bYm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "bYn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/hallway/primary/central) @@ -5451,7 +5451,7 @@ "caQ" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "caR" = (/obj/structure/girder,/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "caS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"caT" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) +"caT" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "caU" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/rack_parts,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "caV" = (/obj/machinery/atmospherics/components/unary/outlet_injector/on{dir = 8; frequency = 1441; id = "co2_in"; pixel_y = 1},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) "caW" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) @@ -5467,7 +5467,7 @@ "cbg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) "cbh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) "cbi" = (/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) -"cbj" = (/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) +"cbj" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/bin,/obj/machinery/newscaster{pixel_y = -29},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "cbk" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;7;35;8;47"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cbl" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor/preopen{id = "cmoprivacy"; name = "privacy shutter"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/cmo) "cbm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Hydroponics Storage"},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hallway/primary/central) @@ -5494,7 +5494,7 @@ "cbH" = (/obj/machinery/atmospherics/components/binary/pump{dir = 8; name = "Pure to Fuel Pipe"; on = 0},/turf/simulated/floor/plasteel,/area/atmos) "cbI" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/starboard) "cbJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/starboard) -"cbK" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"},/area/medical/virology) +"cbK" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"},/area/medical/virology) "cbL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Quiet Room"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/library) "cbM" = (/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) "cbN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) @@ -5516,7 +5516,7 @@ "ccd" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; freq = 1400; 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"}) "cce" = (/obj/machinery/computer/med_data,/obj/machinery/light{dir = 1},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) "ccf" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab) -"ccg" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) +"ccg" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "cch" = (/turf/simulated/wall,/area/security/checkpoint/medical) "cci" = (/obj/machinery/power/apc{dir = 8; name = "Medical Security Checkpoint APC"; pixel_x = -24; pixel_y = 0},/obj/machinery/alarm{pixel_y = 28},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/closet/secure_closet/security/med,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/checkpoint/medical) "ccj" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/reinforced,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Security Post - Medbay"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/checkpoint/medical) @@ -5624,7 +5624,7 @@ "ceh" = (/obj/structure/closet,/obj/item/stack/cable_coil/random,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "cei" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/maintenance/incinerator) "cej" = (/obj/machinery/power/smes{capacity = 9e+006; charge = 10000},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"cek" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) +"cek" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "cel" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northleft{dir = 1; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/obj/machinery/atmospherics/pipe/simple/green/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/atmos) "cem" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/components/binary/pump{dir = 1; name = "O2 to Airmix"; on = 1},/obj/machinery/atmospherics/pipe/simple/green/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bluefull"},/area/atmos) "cen" = (/obj/structure/window/reinforced,/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "o2_in"; name = "Oxygen Supply Control"; output_tag = "o2_out"; sensors = list("o2_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple/green/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bluefull"},/area/atmos) @@ -5691,7 +5691,7 @@ "cfw" = (/obj/machinery/vending/hydroseeds{slogan_delay = 700},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "cfx" = (/obj/structure/table,/obj/item/weapon/book/manual/hydroponics_pod_people,/obj/machinery/light,/obj/item/weapon/paper/hydroponics,/obj/machinery/camera{c_tag = "Hydroponics - Foyer"; dir = 1; network = list("SS13")},/obj/item/device/radio/intercom{pixel_y = -25},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "cfy" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) -"cfz" = (/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) +"cfz" = (/obj/machinery/disposal/bin{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) "cfA" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/hydroponics) "cfB" = (/obj/machinery/hydroponics/constructable,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hydroponics) "cfC" = (/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hydroponics) @@ -5821,7 +5821,7 @@ "chW" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "chX" = (/obj/structure/table,/obj/item/device/paicard,/obj/machinery/newscaster{pixel_x = -1; pixel_y = -29},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "chY" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell/potato,/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"chZ" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) +"chZ" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cia" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cib" = (/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = 30},/obj/structure/closet/wardrobe/white/medical,/obj/item/clothing/suit/hooded/wintercoat/medical,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "cic" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) @@ -5906,7 +5906,7 @@ "cjD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cjE" = (/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/aft{name = "Aft Maintenance"}) "cjF" = (/obj/machinery/light,/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) -"cjG" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/firealarm{dir = 1; pixel_x = 26; pixel_y = -26},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteyellow"},/area/medical/medbay{name = "Medbay Central"}) +"cjG" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/firealarm{dir = 1; pixel_x = 26; pixel_y = -26},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteyellow"},/area/medical/medbay{name = "Medbay Central"}) "cjH" = (/obj/machinery/light/small,/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/obj/machinery/door_control{id = "chapel_shutters_parlour"; name = "chapel shutters control"; pixel_x = 0; pixel_y = -25; req_access_txt = "0"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cjI" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/general/visible,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "cjJ" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) @@ -6012,7 +6012,7 @@ "clF" = (/obj/machinery/computer/turbine_computer{id = "incineratorturbine"},/obj/machinery/alarm{desc = "This particular atmos control unit appears to have no access restrictions."; dir = 8; icon_state = "alarm0"; locked = 0; name = "all-access air alarm"; pixel_x = 24; req_access = "0"; req_one_access = "0"},/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "clG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "clH" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/medical/virology) -"clI" = (/obj/machinery/disposal{pixel_x = 0},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) +"clI" = (/obj/machinery/disposal/bin{pixel_x = 0},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "clJ" = (/obj/machinery/chem_heater,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whiteyellow"},/area/medical/chemistry) "clK" = (/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper,/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "clL" = (/obj/structure/closet,/obj/item/stack/sheet/glass{amount = 12},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6021,7 +6021,7 @@ "clO" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/meter,/obj/structure/grille,/turf/simulated/wall/r_wall,/area/atmos) "clP" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/meter{frequency = 1443; id = "mair_in_meter"; name = "Mixed Air Tank In"},/obj/structure/grille,/turf/simulated/wall/r_wall,/area/atmos) "clQ" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/meter{frequency = 1443; id = "mair_out_meter"; name = "Mixed Air Tank Out"},/obj/structure/grille,/turf/simulated/wall/r_wall,/area/atmos) -"clR" = (/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) +"clR" = (/obj/machinery/disposal/bin{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) "clS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/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"}) "clT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/components/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"}) "clU" = (/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/scrubbers/hidden{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"}) @@ -6184,7 +6184,7 @@ "coY" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "coZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "cpa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/noticeboard{pixel_y = -32},/obj/machinery/light,/obj/machinery/camera{c_tag = "Research Division - Break Room"; dir = 1; network = list("SS13","RD")},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) -"cpb" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) +"cpb" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "cpc" = (/obj/structure/grille,/obj/structure/window/fulltile,/obj/structure/cable/yellow,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/virology) "cpd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_virology{name = "Isolation A"; req_access_txt = "39"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology) "cpe" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/scalpel{pixel_y = 12},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/item/weapon/razor{pixel_y = 5},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitehall"},/area/assembly/robotics) @@ -6483,7 +6483,7 @@ "cuL" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "cuM" = (/obj/structure/table/glass,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/weapon/storage/secure/briefcase,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "cuN" = (/obj/machinery/atmospherics/components/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 = 8; icon_state = "barber"},/area/medical/cmo) -"cuO" = (/obj/machinery/disposal{pixel_x = 5},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) +"cuO" = (/obj/machinery/disposal/bin{pixel_x = 5},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) "cuP" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cuQ" = (/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/turf/simulated/floor/plating,/area/medical/cryo) "cuR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft) @@ -6745,7 +6745,7 @@ "czS" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/shutters/preopen{id = "chemistry_shutters_2"; name = "chemistry shutters"},/turf/simulated/floor/plating,/area/medical/chemistry) "czT" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/shutters/preopen{id = "research_shutters_2"; name = "research shutters"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/toxins/lab) "czU" = (/obj/structure/closet/secure_closet/RD,/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) -"czV" = (/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) +"czV" = (/obj/machinery/disposal/bin,/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) "czW" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/item/device/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) "czX" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/toxins/storage) "czY" = (/obj/item/weapon/cigbutt,/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/storage) @@ -6773,7 +6773,7 @@ "cAu" = (/obj/machinery/atmospherics/components/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) "cAv" = (/obj/item/weapon/cigbutt,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cAw" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "bluecorner"},/area/medical/genetics) -"cAx" = (/obj/structure/sign/nosmoking_2{pixel_x = 28},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 5; icon_state = "blue"},/area/medical/genetics) +"cAx" = (/obj/structure/sign/nosmoking_2{pixel_x = 28},/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 5; icon_state = "blue"},/area/medical/genetics) "cAy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cAz" = (/obj/machinery/chem_master/condimaster{desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; name = "BrewMaster 2199"; pixel_x = -4},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics) "cAA" = (/obj/machinery/door/poddoor/shutters{id = "Skynet_launch"; name = "Mech Bay"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/chargebay) @@ -6838,7 +6838,7 @@ "cBI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cBJ" = (/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"}) "cBK" = (/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen/red,/obj/machinery/requests_console{department = "Virology"; name = "Virology Requests Console"; pixel_x = 29; pixel_y = 0},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/medical/virology) -"cBL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) +"cBL" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) "cBM" = (/obj/machinery/vending/coffee,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) "cBN" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) "cBO" = (/obj/machinery/vending/cigarette,/obj/structure/noticeboard{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) @@ -7014,7 +7014,7 @@ "cFe" = (/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 5},/obj/item/device/transfer_valve{pixel_x = 5},/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = -30},/obj/structure/table/reinforced,/obj/machinery/light,/turf/simulated/floor/plasteel,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cFf" = (/obj/item/device/assembly/timer{pixel_x = 5; pixel_y = 4},/obj/item/device/assembly/timer{pixel_x = -4; pixel_y = 2},/obj/item/device/assembly/timer{pixel_x = 6; pixel_y = -4},/obj/item/device/assembly/timer{pixel_x = 0; pixel_y = 0},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cFg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/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"}) -"cFh" = (/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"}) +"cFh" = (/obj/machinery/disposal/bin{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"}) "cFi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{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"}) "cFj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{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"}) "cFk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{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"}) @@ -7132,7 +7132,7 @@ "cHx" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) "cHy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "cHz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"}) -"cHA" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"}) +"cHA" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"}) "cHB" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4; initialize_directions = 11},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9.1-Escape-1"; location = "8.1-Aft-to-Escape"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cHC" = (/obj/machinery/vending/medical,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"}) "cHD" = (/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/supply/hidden{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"}) @@ -7186,7 +7186,7 @@ "cIE" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cIF" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cIG" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cIH" = (/obj/machinery/disposal,/obj/machinery/light_switch{pixel_x = 23; pixel_y = 0},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cIH" = (/obj/machinery/disposal/bin,/obj/machinery/light_switch{pixel_x = 23; pixel_y = 0},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cII" = (/obj/structure/closet,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/aft) "cIJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cIK" = (/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) @@ -7268,7 +7268,7 @@ "cKl" = (/obj/structure/closet/l3closet,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology) "cKm" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 1; name = "virology air connector port"},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "cKn" = (/obj/machinery/camera{c_tag = "Virology - Entrance"; dir = 8; network = list("SS13","Medbay")},/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/medical/medbay3{name = "Medbay Aft"}) -"cKo" = (/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) +"cKo" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal/bin,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/robotics) "cKp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/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) "cKr" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cKs" = (/obj/effect/landmark/start{name = "Roboticist"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/robotics) @@ -7363,7 +7363,7 @@ "cMf" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cMg" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cMh" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cMi" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cMi" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cMj" = (/obj/machinery/vending/coffee,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cMk" = (/obj/machinery/vending/snack,/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security in red at the top, you see engineering in yellow, science in purple, escape in checkered red-and-white, medbay in green, arrivals in checkered red-and-blue, and then cargo in brown."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cMl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Departure Lounge"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -7628,7 +7628,7 @@ "cRl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboardsolar) "cRm" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) "cRn" = (/obj/structure/closet/wardrobe/chaplain_black,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) -"cRo" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) +"cRo" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "cRp" = (/obj/machinery/power/apc{dir = 2; lighting = 3; name = "Chapel Office APC"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "cRq" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "cRr" = (/obj/machinery/door/morgue{name = "Confession Booth (Chaplain)"; req_access_txt = "22"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) @@ -7674,7 +7674,7 @@ "cSf" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/extinguisher{pixel_x = 4; pixel_y = 3},/obj/item/weapon/extinguisher,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cSg" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 1; name = "xenobiology air connector port"},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel{tag = "icon-whitepurple (SOUTHWEST)"; icon_state = "whitepurple"; dir = 10},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cSh" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cSi" = (/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"}) +"cSi" = (/obj/machinery/disposal/bin,/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"}) "cSj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cSk" = (/obj/structure/closet/coffin,/obj/machinery/light/small{dir = 1},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/chapel/main) "cSl" = (/obj/structure/closet/coffin,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/chapel/main) @@ -7723,7 +7723,7 @@ "cTc" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet,/turf/simulated/floor/engine,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cTd" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cTe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cTf" = (/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"}) +"cTf" = (/obj/machinery/disposal/bin,/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"}) "cTg" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cTh" = (/obj/machinery/door/window/eastleft{dir = 4; name = "Coffin Storage"; req_access_txt = "22"},/turf/simulated/floor/plating,/area/chapel/main) "cTi" = (/obj/structure/stool/bed/chair{pixel_y = -2},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) @@ -7766,7 +7766,7 @@ "cTT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/components/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"}) "cTU" = (/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/scrubbers/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cTV" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow,/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) -"cTW" = (/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"}) +"cTW" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/disposal/bin,/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"}) "cTX" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/engine,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cTY" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cTZ" = (/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"}) @@ -7803,7 +7803,7 @@ "cUG" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cUH" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cUI" = (/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"}) -"cUJ" = (/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"}) +"cUJ" = (/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/bin,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cUK" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/engine,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cUL" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio6"; name = "containment blast door"},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cUM" = (/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"}) @@ -7835,7 +7835,7 @@ "cVm" = (/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.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"}) "cVn" = (/obj/machinery/atmospherics/pipe/simple/general/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"}) "cVo" = (/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"}) -"cVp" = (/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"}) +"cVp" = (/obj/machinery/disposal/bin,/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"}) "cVq" = (/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"}) "cVr" = (/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"}) "cVs" = (/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"}) @@ -7909,7 +7909,7 @@ "cWI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9.3-Escape-3"; location = "9.2-Escape-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cWJ" = (/obj/machinery/computer/security/telescreen{desc = "Used for monitoring medbay to ensure patient safety."; dir = 8; name = "Medbay Monitor"; network = list("Medbay"); pixel_x = 29; pixel_y = 0},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/computer/card/minor/cmo,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "cWK" = (/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/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) -"cWM" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) +"cWM" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo) "cWN" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/shutters/preopen{id = "genetics_shutters"; name = "genetics shutters"},/turf/simulated/floor/plating,/area/medical/genetics) "cWO" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/door/firedoor,/obj/machinery/door/window/eastright{dir = 8; name = "Genetics Desk"; req_access_txt = "5;9"},/obj/machinery/door/window/southleft{dir = 4; name = "Outer Window"},/obj/machinery/door/poddoor/shutters/preopen{id = "genetics_shutters"; name = "genetics shutters"},/turf/simulated/floor/plating,/area/medical/genetics) "cWP" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) diff --git a/_maps/map_files/MetaStation/z2.dmm b/_maps/map_files/MetaStation/z2.dmm index 6c46061bcc1..f9b11de35c9 100644 --- a/_maps/map_files/MetaStation/z2.dmm +++ b/_maps/map_files/MetaStation/z2.dmm @@ -653,7 +653,7 @@ "mE" = (/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage"},/area/wizard_station) "mF" = (/obj/structure/showcase{desc = "A historical figure of great importance to the wizard federation. He spent his long life learning magic, stealing artifacts, and harassing idiots with swords. May he rest forever, Rodney."; icon = 'icons/mob/mob.dmi'; icon_state = "nim"; name = "wizard of yendor showcase"},/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage4"},/area/wizard_station) "mG" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel/cult,/area/wizard_station) -"mH" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = 5; pixel_y = -2; step_x = 0},/obj/item/toy/cards/deck/syndicate{icon_state = "deck_syndicate_full"; pixel_x = -6; pixel_y = 6},/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) +"mH" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = 5; pixel_y = -2},/obj/item/toy/cards/deck/syndicate{icon_state = "deck_syndicate_full"; pixel_x = -6; pixel_y = 6},/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) "mI" = (/turf/indestructible/fakedoor{name = "Thunderdome"},/area/tdome/tdomeobserve) "mJ" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/mushroom,/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) "mK" = (/turf/simulated/wall/shuttle{icon_state = "swall12"; dir = 2},/area/wizard_station) diff --git a/_maps/map_files/MetaStation/z3.dmm b/_maps/map_files/MetaStation/z3.dmm index 7c366863a3d..eeefbc9fdec 100644 --- a/_maps/map_files/MetaStation/z3.dmm +++ b/_maps/map_files/MetaStation/z3.dmm @@ -136,7 +136,7 @@ "cF" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel/airless,/area/tcommsat/chamber) "cG" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel/airless,/area/tcommsat/chamber) "cH" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel/airless,/area/tcommsat/chamber) -"cI" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel/airless,/area/tcommsat/chamber) +"cI" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel/airless,/area/tcommsat/chamber) "cJ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/tcommsat/chamber) "cK" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/space) "cL" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating/airless,/area/space) @@ -243,7 +243,7 @@ "eI" = (/obj/structure/rack,/obj/item/clothing/gloves/color/yellow,/turf/simulated/floor/plating/airless,/area/AIsattele) "eJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/AIsattele) "eK" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/AIsattele) -"eL" = (/obj/item/weapon/stock_parts/cell{step_x = 0},/turf/simulated/floor/plating/airless,/area/AIsattele) +"eL" = (/obj/item/weapon/stock_parts/cell,/turf/simulated/floor/plating/airless,/area/AIsattele) "eM" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating/airless,/area/AIsattele) "eN" = (/obj/effect/decal/cleanable/robot_debris/old,/turf/simulated/floor/plating/airless,/area/AIsattele) "eO" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating/airless,/area/AIsattele) diff --git a/_maps/map_files/MetaStation/z4.dmm b/_maps/map_files/MetaStation/z4.dmm index 1c22bc230ef..25055ff8d75 100644 --- a/_maps/map_files/MetaStation/z4.dmm +++ b/_maps/map_files/MetaStation/z4.dmm @@ -35,7 +35,7 @@ "aI" = (/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/djstation) "aJ" = (/obj/machinery/door/airlock/glass{name = "Rest Room"},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/djstation) "aK" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/djstation) -"aL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/djstation) +"aL" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/djstation) "aM" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/djstation) "aN" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/djstation) "aO" = (/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/djstation) diff --git a/_maps/map_files/MetaStation/z5.dmm b/_maps/map_files/MetaStation/z5.dmm index c5e9d254bb6..cdf705c78b4 100644 --- a/_maps/map_files/MetaStation/z5.dmm +++ b/_maps/map_files/MetaStation/z5.dmm @@ -393,14 +393,14 @@ "hC" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/obj/machinery/light,/turf/space,/area/mine/west_outpost) "hD" = (/turf/simulated/floor/carpet,/area/mine/living_quarters) "hE" = (/obj/structure/table,/turf/simulated/floor/carpet,/area/mine/living_quarters) -"hF" = (/obj/machinery/door/airlock{id_tag = "miningdorm1"; name = "Room 1"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) +"hF" = (/obj/machinery/door/airlock{id_tag = "miningdorm1"; name = "Room 1"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) "hG" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "hH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel,/area/mine/living_quarters) "hI" = (/obj/structure/disposalpipe/segment,/turf/simulated/mineral/random,/area/mine/unexplored) "hJ" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm2"; 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) "hK" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/living_quarters) "hL" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/west_outpost) -"hM" = (/obj/machinery/door/airlock{id_tag = "miningdorm2"; name = "Room 2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) +"hM" = (/obj/machinery/door/airlock{id_tag = "miningdorm2"; name = "Room 2"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) "hN" = (/turf/space,/area/mine/explored) "hO" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) "hP" = (/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/mine/west_outpost) @@ -410,7 +410,7 @@ "hT" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/west_outpost) "hU" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/asteroid/airless,/area/mine/west_outpost) "hV" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"hW" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"hW" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) "hX" = (/obj/machinery/vending/cigarette,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) "hY" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) "hZ" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm3"; 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) @@ -430,7 +430,7 @@ "in" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) "io" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) "ip" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"iq" = (/obj/machinery/door/airlock{id_tag = "miningdorm3"; name = "Room 3"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) +"iq" = (/obj/machinery/door/airlock{id_tag = "miningdorm3"; name = "Room 3"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) "ir" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel,/area/mine/living_quarters) "is" = (/obj/machinery/recharge_station,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) "it" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/plasteel,/area/mine/living_quarters) @@ -712,6 +712,7 @@ "nJ" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/mine/production) "nK" = (/obj/machinery/mineral/unloading_machine{dir = 1; icon_state = "unloader-corner"; input_dir = 1; output_dir = 2},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production) "nL" = (/obj/machinery/atmospherics/pipe/simple,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/mine/living_quarters) +"nM" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -887,9 +888,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacacacacadac aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababacacacacacacacacacacacacacacacababaeaeaeaeaehnhnhnhndggVdgbFbFbFbFbFbFbFaeaeababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacachGacachvhvhvhvhHhvbFbFaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeahahaeaeaeaeaebFevevbFbFbFbFbFbFaeaeaeaeahahahahahahahahahahahahahahahahaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacacacacacacacacacacacabababababababaehnbFbFdgbFdgbFbFbFbFbFbFbFbFaeababacacacacacacacacacacacacacadacacacacacacacacacacacacacacababababababacacacacacacacacacacacacacacacacacacacachIacachvhAhJhvhBhKbFbFbFbFbFbFaeaeaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaeaeaeaeaeaeaebFevevbFbFbFbFbFbFbFaeaeaeaeaeahahahahahahahahahahahahahahaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababacacacacacacacacacacacacacacababababababaebFbFbFbFbFbFbFbFhLhLhLbFbFbFaeababacacacacacacacacacacacacacacacacacacacacacacacacacacababababababababababababacacacacacacacacacacacacacacacachIacachvhEhDhMhBhKbFbFbFbFbFbFbFbFbFaaaaaaaaaaaaaaaaaahNaeaeaeaeaeaeaeaeaeaeaebFbFevevbFbFbFbFbFbFbFbFbFaeaeaeaeahahahahahahahahahahahahaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababacacacacacacacacacacacacacababaeaeaeaeaeaebFbFbFbFbFbFbFbFhOhPhQbFbFbFaeababababacacacacacacacacacacacacacacacacacacacacacabababababaeaeaeaeaeaeaeabababababababacacacacacacacacacachvhvhRhvhvhvhvhvhvhBhKbFbFbFbFbFbFbFbFbFbFbFaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaebFbFbFbFgMdXdXdYbFbFbFbFbFbFbFbFbFaeaeaeaeaeahahahahahahahahahaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababacacacacacacacacacacacacabaeaebFbFhShShShShShShThThThThShShShShUbFbFaeababababacacacacacacacacacacacacacacacacacacacacacababababaeaebFbFbFbFbFaeaeaeaeaeabababababababacacacachvhvhvhVhWhXhYhvhAhZhvhHhvhvhvhKhKhKhvbFbFbFbFbFbFaaaaaaaaaaaaaaaaaaaeaeaeaeaebFbFbFbFbFdTekekdVbFbFbFbFbFbFbFbFbFaeaeaeaeaeahahahahahahahahaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababacacacacacacacababaebFbFbFhSiaibichTidieifigihhTiiijikdYbFbFaeaeaeaeababababababacacacacacacacacacacacacacacabababababaeaebFbFbFbFbFbFbFbFbFbFaeaeaeaeaeabababababacachviliminioiniphvhEhDiqhBhvirisititithKbFbFbFbFbFbFbFaaaaaaaaaaaaaaaaaaaeaeaebFbFbFbFbFbFbFeviuiviwiwixixbFbFbFbFbFbFaeaeaeaeaeahahahahahahahaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababacacacacacacacacacacacacacababaeaeaeaeaeaebFbFbFbFbFbFbFbFhOhPhQbFbFbFaeababababacacacacacacacacacacacacacacacacacacacacacabababababaeaeaeaeaeaeaeabababababababacacacacacacacachvhvhvhvhRhvhvhvhvhvhvhBhKbFbFbFbFbFbFbFbFbFbFbFaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaebFbFbFbFgMdXdXdYbFbFbFbFbFbFbFbFbFaeaeaeaeaeahahahahahahahahahaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababacacacacacacacacacacacacabaeaebFbFhShShShShShShThThThThShShShShUbFbFaeababababacacacacacacacacacacacacacacacacacacacacacababababaeaebFbFbFbFbFaeaeaeaeaeabababababababacacacachvilimhVhWhXhYhvhAhZhvhHhvhvhvhKhKhKhvbFbFbFbFbFbFaaaaaaaaaaaaaaaaaaaeaeaeaeaebFbFbFbFbFdTekekdVbFbFbFbFbFbFbFbFbFaeaeaeaeaeahahahahahahahahaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababacacacacacacacababaebFbFbFhSiaibichTidieifigihhTiiijikdYbFbFaeaeaeaeababababababacacacacacacacacacacacacacacabababababaeaebFbFbFbFbFbFbFbFbFbFaeaeaeaeaeabababababacachvnMininioiniphvhEhDiqhBhvirisititithKbFbFbFbFbFbFbFaaaaaaaaaaaaaaaaaaaeaeaebFbFbFbFbFbFbFeviuiviwiwixixbFbFbFbFbFbFaeaeaeaeaeahahahahahahahaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababacacacacacacababaebFbFbFhSiyiiizhTiAiAiAiAiBiCiiijiDiEbFbFbFbFbFaeaeaeabababababababacacacacacacacacacacacabababaeaeaebFbFbFbFbFbFbFbFbFbFbFbFbFbFbFaeaeabababababachviFiniGiHiIiJhvhvhvhvhBhviriKiKiKiLhKbFbFbFbFbFbFbFaaaaaaaaaaaaaaaaaabFbFbFbFbFbFbFbFgNgqgOixiMiNiOiOixbFiPbFbFbFbFaeaeaeaeaeahahahahahahahaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaababababababababacacacababaebFbFbFhSiQiiiiiRiiiiiiiiiShTiTiUhTdVbFbFbFbFbFbFbFaeaeaeaeabababababacacacacacacacacababababaeaebFbFbFbFbFbFbFbFbFbFgMdYbFbFbFbFbFbFaeaeaeaeababachviViniWiniXiniYiLiZjajbhvjciKjdiKjehKbFbFbFbFbFbFaaaaaaaaaaaaaaaaaaaaakaabFbFbFbFbFjfjgjhjhixjijjjkjlixixixixbFbFbFbFaeaeaeaeahahahahahahahaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababaeaebFbFhSjmiijnjojpjqjriijshShShShShSgMdYbFbFbFbFbFbFbFbFaeaeaeabababacacacacacacacacabababaeaebFbFgNgqgqgqgqgqgqgqgqgTgUgqgqgqgqfjbFbFbFbFaeaeababhvhvhvhvhvhvhvhKjtjuhKjthvhvhvhvhvjvhvhvhKhKbFbFaaaaaaaaaaaaaaaaaaaaaaakaaaaaabFbFjhjhjwjxjyjzjAjBjCjDiwjEjFiwdYbFbFbFcraeaeaeaeaeahahahahahaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/MiniStation/MiniStation.dmm b/_maps/map_files/MiniStation/MiniStation.dmm index 81ebc1d56ca..726e2e7e595 100644 --- a/_maps/map_files/MiniStation/MiniStation.dmm +++ b/_maps/map_files/MiniStation/MiniStation.dmm @@ -116,7 +116,7 @@ "cl" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet,/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) "cm" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) "cn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) -"co" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/obj/machinery/camera/autoname,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/medical/research{name = "Research Division"}) +"co" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/obj/machinery/camera/autoname,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/medical/research{name = "Research Division"}) "cp" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cq" = (/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) "cr" = (/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/medical/research{name = "Research Division"}) @@ -166,7 +166,7 @@ "dj" = (/obj/structure/rack,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "dk" = (/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},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/medical/research{name = "Research Division"}) "dl" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) -"dm" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/medical/research{name = "Research Division"}) +"dm" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/medical/research{name = "Research Division"}) "dn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/brig) "do" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) "dp" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) @@ -219,7 +219,7 @@ "ek" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/security/brig) "el" = (/obj/effect/spawner/structure/window,/turf/simulated/floor/plating,/area/hallway/primary/central) "em" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/brig) -"en" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/medical/research{name = "Research Division"}) +"en" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/medical/research{name = "Research Division"}) "eo" = (/obj/machinery/monkey_recycler,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "ep" = (/obj/machinery/processor{desc = "A machine used to process slimes and retrieve their extract."; name = "Slime Processor"},/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; listening = 1; name = "Common Channel"; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "eq" = (/obj/machinery/smartfridge/extract,/obj/machinery/camera/autoname,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) diff --git a/_maps/map_files/MiniStation/z2.dmm b/_maps/map_files/MiniStation/z2.dmm index 0a3179db0fc..4506885f1e0 100644 --- a/_maps/map_files/MiniStation/z2.dmm +++ b/_maps/map_files/MiniStation/z2.dmm @@ -496,7 +496,7 @@ "jB" = (/turf/indestructible/fakeglass{icon_state = "fakewindows"; dir = 9},/area/syndicate_mothership) "jC" = (/turf/indestructible/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/syndicate_mothership) "jD" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/mushroom,/turf/simulated/floor/plasteel/bar,/area/syndicate_mothership) -"jE" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = 5; pixel_y = -2; step_x = 0},/obj/item/toy/cards/deck/syndicate{icon_state = "deck_syndicate_full"; pixel_x = -6; pixel_y = 6},/turf/simulated/floor/plasteel/bar,/area/syndicate_mothership) +"jE" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = 5; pixel_y = -2},/obj/item/toy/cards/deck/syndicate{icon_state = "deck_syndicate_full"; pixel_x = -6; pixel_y = 6},/turf/simulated/floor/plasteel/bar,/area/syndicate_mothership) "jF" = (/obj/machinery/computer/telecrystals/uplinker,/turf/simulated/floor/plasteel/cult{tag = "icon-podhatch (WEST)"; icon_state = "podhatch"; dir = 8},/area/syndicate_mothership) "jG" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 2},/area/tdome/tdomeobserve) "jH" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/tdome/tdomeobserve) diff --git a/_maps/map_files/MiniStation/z4.dmm b/_maps/map_files/MiniStation/z4.dmm index 306521eda4e..ead27b2d67f 100644 --- a/_maps/map_files/MiniStation/z4.dmm +++ b/_maps/map_files/MiniStation/z4.dmm @@ -59,7 +59,7 @@ "bg" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/djstation) "bh" = (/turf/simulated/wall/shuttle{icon_state = "swall_s5"; dir = 2},/area/space) "bi" = (/turf/simulated/wall/shuttle{icon_state = "swall_s9"; dir = 2},/area/space) -"bj" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/djstation) +"bj" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/djstation) "bk" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/djstation) "bl" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/djstation) "bm" = (/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 5},/area/djstation) diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index e5eb356d0c2..9762346d3b4 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -109,7 +109,7 @@ "ace" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/lattice/catwalk,/turf/space,/area/solar/auxstarboard) "acf" = (/obj/structure/lattice,/obj/item/stack/cable_coil/random,/turf/space,/area/space) "acg" = (/turf/simulated/floor/plasteel{tag = "icon-warndark"; icon_state = "warndark"; dir = 2},/area/security/transfer) -"ach" = (/turf/simulated/wall/r_wall,/area/space) +"ach" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/pandemic{pixel_x = -3; pixel_y = 3},/obj/item/weapon/circuitboard/rdconsole,/obj/item/weapon/circuitboard/rdserver{pixel_x = 3; pixel_y = -3},/obj/item/weapon/circuitboard/destructive_analyzer,/obj/item/weapon/circuitboard/protolathe,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/circuitboard/aifixer,/obj/item/weapon/circuitboard/teleporter,/obj/item/weapon/circuitboard/circuit_imprinter,/obj/item/weapon/circuitboard/mechfab,/turf/simulated/floor/plating,/area/storage/tech) "aci" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/poddoor/preopen{id = "executionfireblast"; layer = 2.9; name = "blast door"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/security/transfer) "acj" = (/obj/machinery/door/airlock/external{name = "Security External Airlock"; req_access_txt = "63"},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "ack" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 3"; network = list("SS13","Prison")},/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24; prison_radio = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) @@ -197,7 +197,7 @@ "adO" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/security/prison) "adP" = (/obj/machinery/door_control{id = "permacell1"; name = "Cell 1 Lockdown"; pixel_x = -4; pixel_y = 25; req_access_txt = "2"},/obj/machinery/flasher_button{id = "PCell 1"; pixel_x = 6; pixel_y = 24},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/prison) "adQ" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/light{dir = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/prison) -"adR" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/power/apc{dir = 4; name = "Prison Wing APC"; pixel_x = 24; pixel_y = 0; step_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/prison) +"adR" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/power/apc{dir = 4; name = "Prison Wing APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/prison) "adS" = (/obj/structure/closet/secure_closet{name = "contraband locker"; req_access_txt = "3"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory) "adT" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/security/armory) "adU" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Prison Hallway"; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/prison) @@ -210,10 +210,10 @@ "aeb" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) "aec" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main) "aed" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/security/hos) -"aee" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/carpet,/area/security/hos) +"aee" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/carpet,/area/security/hos) "aef" = (/obj/structure/grille,/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/security/hos) "aeg" = (/obj/structure/table,/obj/item/stack/packageWrap,/obj/item/weapon/pen,/turf/simulated/floor/plasteel,/area/security/main) -"aeh" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/security/main) +"aeh" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/security/main) "aei" = (/obj/machinery/camera{c_tag = "Security Escape Pod"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "aej" = (/turf/space,/turf/simulated/wall/shuttle{dir = 2; icon_state = "swall_f10"; layer = 2},/area/shuttle/labor) "aek" = (/obj/structure/grille,/obj/structure/window/shuttle,/turf/simulated/floor/plating,/area/shuttle/labor) @@ -399,7 +399,7 @@ "ahI" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/pen,/obj/item/weapon/hand_labeler,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) "ahJ" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/book/manual/wiki/security_space_law,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) "ahK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) -"ahL" = (/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) +"ahL" = (/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/warden) "ahM" = (/obj/structure/grille,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/security/warden) "ahN" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/main) "ahO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (NORTH)"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) @@ -883,7 +883,7 @@ "aqY" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep) "aqZ" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/closet/secure_closet/personal/cabinet,/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/crew_quarters/sleep) "ara" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 9},/area/crew_quarters/fitness) -"arb" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) +"arb" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal/bin,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) "arc" = (/obj/structure/closet/athletic_mixed,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) "ard" = (/obj/structure/closet/boxinggloves,/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/clothing/shoes/jackboots,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) "are" = (/obj/machinery/camera{c_tag = "Fitness Room"},/obj/structure/closet/masks,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) @@ -1554,7 +1554,7 @@ "aDT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/crew_quarters/toilet) "aDU" = (/obj/machinery/light/small{dir = 8},/obj/structure/dresser,/turf/simulated/floor/plasteel{tag = "icon-redblue"; icon_state = "redblue"},/area/crew_quarters/theatre) "aDV" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{tag = "icon-redblue"; icon_state = "redblue"},/area/crew_quarters/theatre) -"aDW" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{tag = "icon-redblue"; icon_state = "redblue"},/area/crew_quarters/theatre) +"aDW" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{tag = "icon-redblue"; icon_state = "redblue"},/area/crew_quarters/theatre) "aDX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aDY" = (/obj/effect/spawner/lootdrop/maintenance,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aDZ" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) @@ -1647,7 +1647,7 @@ "aFI" = (/obj/machinery/door/airlock/maintenance{name = "Library Maintenance"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/library) "aFJ" = (/obj/structure/table/wood,/obj/item/weapon/storage/pill_bottle/dice,/turf/simulated/floor/wood,/area/library) "aFK" = (/obj/structure/table/wood,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/stack/packageWrap,/turf/simulated/floor/wood,/area/library) -"aFL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/wood,/area/library) +"aFL" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/wood,/area/library) "aFM" = (/obj/machinery/door/airlock/maintenance{name = "Crematorium Maintenance"; req_access_txt = "27"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/chapel/office) "aFN" = (/obj/structure/closet/wardrobe/chaplain_black,/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "aFO" = (/obj/machinery/light/small{dir = 1},/obj/machinery/requests_console{department = "Chapel"; departmentType = 2; pixel_y = 30},/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) @@ -1720,7 +1720,7 @@ "aHd" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/library) "aHe" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/machinery/camera{c_tag = "Prison Sanitatium"; dir = 4; network = list("SS13","Prison"); pixel_x = 0; pixel_y = 0},/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison) "aHf" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) -"aHg" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) +"aHg" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "aHh" = (/obj/effect/landmark/start{name = "Chaplain"},/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "aHi" = (/obj/structure/table/wood,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/storage/crayons,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "aHj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) @@ -1749,7 +1749,7 @@ "aHG" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/storage/primary) "aHH" = (/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/storage/primary) "aHI" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Tool Storage"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/storage/primary) -"aHJ" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor/plasteel,/area/storage/primary) +"aHJ" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal/bin,/turf/simulated/floor/plasteel,/area/storage/primary) "aHK" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/hallway/primary/port) "aHL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/hallway/primary/port) "aHM" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/obj/machinery/door_control{id = "stationawaygate"; name = "Gateway Access Shutter Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "31"},/turf/simulated/floor/plasteel,/area/gateway) @@ -1838,7 +1838,7 @@ "aJr" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "aJs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "aJt" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) -"aJu" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) +"aJu" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "aJv" = (/obj/machinery/reagentgrinder,/obj/structure/table/wood,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aJw" = (/turf/simulated/floor/wood,/area/crew_quarters/bar) "aJx" = (/obj/machinery/camera{c_tag = "Bar Storage"},/turf/simulated/floor/wood,/area/crew_quarters/bar) @@ -2052,7 +2052,7 @@ "aNx" = (/obj/machinery/hydroponics/constructable,/obj/machinery/camera{c_tag = "Hydroponics North"; dir = 2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics) "aNy" = (/obj/machinery/hydroponics/constructable,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics) "aNz" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics) -"aNA" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics) +"aNA" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics) "aNB" = (/obj/structure/bookcase{name = "bookcase (Religious)"},/turf/simulated/floor/wood,/area/library) "aNC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/carpet,/area/library) "aND" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/carpet,/area/library) @@ -2523,7 +2523,7 @@ "aWA" = (/turf/simulated/wall,/area/crew_quarters/locker/locker_toilet) "aWB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/crew_quarters/locker/locker_toilet) "aWC" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) -"aWD" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (WEST)"; dir = 8},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) +"aWD" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (WEST)"; dir = 8},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "aWE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "aWF" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "aWG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 2},/area/crew_quarters/locker) @@ -2569,7 +2569,7 @@ "aXu" = (/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen) "aXv" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen) "aXw" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/door_control{id = "kitchen"; name = "Kitchen Shutters Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "28"},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen) -"aXx" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen) +"aXx" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen) "aXy" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plasteel,/area/hydroponics) "aXz" = (/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel,/area/hydroponics) "aXA" = (/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel{dir = 1; icon_state = "green"},/area/hydroponics) @@ -2697,14 +2697,14 @@ "aZS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/wood,/area/bridge/meeting_room) "aZT" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (EAST)"; dir = 4},/turf/simulated/floor/wood,/area/bridge/meeting_room) "aZU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/bridge/meeting_room) -"aZV" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/wood,/area/bridge/meeting_room) +"aZV" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/wood,/area/bridge/meeting_room) "aZW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) "aZX" = (/obj/structure/table,/obj/item/weapon/aiModule/reset,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aZY" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aZZ" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/wall/shuttle{icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_1) "baa" = (/obj/structure/table,/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "bab" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) -"bac" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bac" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bad" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bae" = (/obj/machinery/light_switch{pixel_y = 28},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/crew_quarters/captain) "baf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/carpet,/area/crew_quarters/captain) @@ -3129,7 +3129,7 @@ "bii" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bij" = (/obj/machinery/door_control{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; pixel_y = 24; req_access_txt = "31"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bik" = (/obj/machinery/photocopier,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor/plasteel,/area/quartermaster/office) -"bil" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plasteel,/area/quartermaster/office) +"bil" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plasteel,/area/quartermaster/office) "bim" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (NORTH)"; dir = 1},/turf/simulated/wall,/area/quartermaster/office) "bin" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/quartermaster/office) "bio" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/quartermaster/office) @@ -3149,7 +3149,7 @@ "biC" = (/obj/structure/table/glass,/obj/machinery/reagentgrinder,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) "biD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) "biE" = (/obj/structure/table,/obj/item/weapon/restraints/handcuffs,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/prison) -"biF" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) +"biF" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) "biG" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/security/armory) "biH" = (/obj/machinery/smartfridge/chemistry,/turf/simulated/floor/plating,/area/medical/chemistry) "biI" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) @@ -3183,7 +3183,7 @@ "bjk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "bjl" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "bjm" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) -"bjn" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) +"bjn" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "bjo" = (/turf/simulated/wall,/area/maintenance/asmaint2) "bjp" = (/obj/machinery/conveyor{dir = 1; id = "garbage"; layer = 2.5},/obj/machinery/door/poddoor/preopen{id = "Disposal Exit"; layer = 3; name = "disposal exit vent"},/turf/simulated/floor/plating,/area/maintenance/disposal) "bjq" = (/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/machinery/driver_button{id = "trash"; pixel_x = -26; pixel_y = -6},/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/disposal) @@ -3356,7 +3356,7 @@ "bmB" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/hallway/primary/central) "bmC" = (/obj/machinery/flasher_button{id = "hopflash"; pixel_x = 6; pixel_y = 36},/obj/machinery/door_control{id = "hop"; name = "Privacy Shutters Control"; pixel_x = 6; pixel_y = 25; req_access_txt = "28"},/obj/machinery/door_control{id = "hopqueue"; name = "Queue Shutters Control"; pixel_x = -4; pixel_y = 25; req_access_txt = "28"},/obj/machinery/light_switch{pixel_x = -4; pixel_y = 36},/obj/machinery/pdapainter,/turf/simulated/floor/plasteel{dir = 9; icon_state = "blue"},/area/crew_quarters/heads) "bmD" = (/obj/structure/table,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 32},/obj/item/weapon/hand_labeler,/obj/item/stack/packageWrap,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) -"bmE" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"bmE" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "bmF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/stool/bed/dogbed{anchored = 1; desc = "Ian's bed! Looks comfy."; name = "Ian's bed"},/mob/living/simple_animal/pet/dog/corgi/Ian{dir = 8},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "bmG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "bmH" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = -32; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/engine/gravity_generator) @@ -3385,7 +3385,7 @@ "bne" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/assembly/chargebay) "bnf" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/assembly/chargebay) "bng" = (/obj/structure/grille,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/assembly/robotics) -"bnh" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel,/area/assembly/robotics) +"bnh" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel,/area/assembly/robotics) "bni" = (/turf/simulated/floor/plasteel,/area/assembly/robotics) "bnj" = (/obj/structure/table,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000; pixel_x = 5; pixel_y = -5},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/weapon/crowbar,/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) "bnk" = (/turf/simulated/wall,/area/assembly/robotics) @@ -3807,7 +3807,7 @@ "bvk" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bvl" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bvm" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) -"bvn" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) +"bvn" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bvo" = (/obj/machinery/computer/med_data,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper) "bvp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper) "bvq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/medical/sleeper) @@ -3907,12 +3907,12 @@ "bxg" = (/obj/structure/lamarr,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"},/area/crew_quarters/hor) "bxh" = (/turf/simulated/wall/r_wall,/area/crew_quarters/hor) "bxi" = (/turf/simulated/wall,/area/toxins/explab) -"bxj" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/explab) +"bxj" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/explab) "bxk" = (/obj/machinery/doorButtons/airlock_controller{idExterior = "virology_airlock_exterior"; idInterior = "virology_airlock_interior"; idSelf = "virology_airlock_control"; name = "Virology Access Console"; pixel_x = 8; pixel_y = 22; req_access_txt = "39"},/obj/machinery/light_switch{pixel_x = -4; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "bxl" = (/obj/machinery/power/apc{dir = 1; name = "Quartermaster APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/qm) "bxm" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/qm) "bxn" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/qm) -"bxo" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/qm) +"bxo" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/qm) "bxp" = (/obj/structure/closet/secure_closet/quartermaster,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plasteel{dir = 5; icon_state = "brown"},/area/quartermaster/qm) "bxq" = (/obj/machinery/power/apc{dir = 1; name = "Mining Dock APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "bxr" = (/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) @@ -3950,7 +3950,7 @@ "bxX" = (/obj/machinery/dna_scannernew,/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/genetics) "bxY" = (/obj/machinery/computer/cloning,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/genetics) "bxZ" = (/obj/machinery/clonepod,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/genetics) -"bya" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics) +"bya" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics) "byb" = (/obj/structure/closet/secure_closet/medical1,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics) "byc" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics) "byd" = (/obj/structure/closet/wardrobe/genetics_white,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/genetics) @@ -4075,12 +4075,12 @@ "bAs" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bAt" = (/obj/structure/table,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/weapon/pen,/obj/machinery/requests_console{announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay RC"; pixel_x = 0; pixel_y = 30; pixel_z = 0},/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bAu" = (/obj/machinery/vending/medical{pixel_x = -2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) -"bAv" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) +"bAv" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bAw" = (/turf/simulated/wall,/area/medical/cmo) "bAx" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor/plasteel{icon_state = "barber"},/area/medical/cmo) "bAy" = (/obj/machinery/computer/crew,/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer RC"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "barber"},/area/medical/cmo) "bAz" = (/obj/machinery/computer/med_data,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel{icon_state = "barber"},/area/medical/cmo) -"bAA" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "barber"},/area/medical/cmo) +"bAA" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "barber"},/area/medical/cmo) "bAB" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/asmaint) "bAC" = (/obj/machinery/r_n_d/server/core,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) "bAD" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; external_pressure_bound = 120; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) @@ -4099,7 +4099,7 @@ "bAQ" = (/obj/machinery/computer/card/minor/cmo,/turf/simulated/floor/plasteel{icon_state = "barber"},/area/medical/cmo) "bAR" = (/obj/structure/table,/obj/item/weapon/cartridge/signal/toxins,/obj/item/weapon/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("SS13","RD")},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/hor) "bAS" = (/obj/structure/closet/secure_closet/RD,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/hor) -"bAT" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/hor) +"bAT" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/hor) "bAU" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/hor) "bAV" = (/obj/machinery/door_control{id = "telelab"; name = "Test Chamber Blast Doors"; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"},/area/toxins/explab) "bAW" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 5},/turf/simulated/floor/plating,/area/maintenance/asmaint2) @@ -4131,7 +4131,7 @@ "bBw" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper) "bBx" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/camera{c_tag = "Medbay Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper) "bBy" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/rxglasses,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper) -"bBz" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper) +"bBz" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal/bin,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper) "bBA" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/medical/sleeper) "bBB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay) "bBC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) @@ -4319,14 +4319,14 @@ "bFc" = (/obj/machinery/camera{c_tag = "Secure Tech Storage"; dir = 2},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/storage/tech) "bFd" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/storage/tech) "bFe" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 5},/obj/item/device/multitool,/turf/simulated/floor/plating,/area/storage/tech) -"bFf" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/pandemic{pixel_x = -3; pixel_y = 3},/obj/item/weapon/circuitboard/rdconsole,/obj/item/weapon/circuitboard/rdserver{pixel_x = 3; pixel_y = -3},/obj/item/weapon/circuitboard/destructive_analyzer,/obj/item/weapon/circuitboard/protolathe,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/circuitboard/aifixer,/obj/item/weapon/circuitboard/teleporter,/turf/simulated/floor/plating,/area/storage/tech) +"bFf" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/wood,/area/maintenance/aft) "bFg" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/mining,/obj/item/weapon/circuitboard/autolathe{pixel_x = 3; pixel_y = -3},/obj/item/weapon/circuitboard/arcade/battle,/turf/simulated/floor/plating,/area/storage/tech) "bFh" = (/obj/structure/rack,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/receiver,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/broadcaster,/obj/item/weapon/circuitboard/message_monitor{pixel_y = -5},/turf/simulated/floor/plating,/area/storage/tech) "bFi" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (WEST)"; dir = 8},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "bFj" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) "bFk" = (/obj/machinery/atmospherics/components/binary/pump{dir = 2; on = 1},/obj/machinery/doorButtons/access_button{idDoor = "incinerator_airlock_exterior"; idSelf = "incinerator_access_control"; layer = 3.1; name = "Incinerator airlock control"; pixel_x = 8; pixel_y = -24},/obj/machinery/light/small{dir = 8},/obj/structure/sign/fire{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/engine,/area/maintenance/incinerator) "bFl" = (/obj/structure/table,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/machinery/requests_console{department = "Janitorial"; departmentType = 1; pixel_y = -29},/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor/plasteel,/area/janitor) -"bFm" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light,/turf/simulated/floor/plasteel,/area/janitor) +"bFm" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light,/turf/simulated/floor/plasteel,/area/janitor) "bFn" = (/obj/structure/janitorialcart,/turf/simulated/floor/plasteel,/area/janitor) "bFo" = (/obj/item/weapon/restraints/legcuffs/beartrap,/obj/item/weapon/restraints/legcuffs/beartrap,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/box/mousetraps,/turf/simulated/floor/plasteel,/area/janitor) "bFp" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel,/area/janitor) @@ -4552,7 +4552,7 @@ "bJB" = (/obj/machinery/computer/security/telescreen{name = "Test Chamber Moniter"; 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) "bJC" = (/obj/machinery/door_control{id = "misclab"; name = "Test Chamber Blast Doors"; pixel_x = 0; pixel_y = -2; req_access_txt = "55"},/obj/structure/table/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/xenobiology) "bJD" = (/obj/machinery/door/window/southleft{name = "Test Chamber"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology) -"bJE" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology) +"bJE" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology) "bJF" = (/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) "bJG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology) "bJH" = (/obj/structure/sign/biohazard,/turf/simulated/wall,/area/toxins/xenobiology) @@ -4699,7 +4699,7 @@ "bMs" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/turf/simulated/floor/plasteel,/area/atmos) "bMt" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/atmos) "bMu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/atmos) -"bMv" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/alarm{pixel_y = 23},/obj/machinery/camera{c_tag = "Atmospherics Monitoring"; dir = 2; network = list("SS13")},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "caution"; dir = 5},/area/atmos) +"bMv" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/alarm{pixel_y = 23},/obj/machinery/camera{c_tag = "Atmospherics Monitoring"; dir = 2; network = list("SS13")},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "caution"; dir = 5},/area/atmos) "bMw" = (/obj/machinery/camera{c_tag = "Atmospherics North West"; dir = 4; network = list("SS13")},/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel,/area/atmos) "bMx" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 1},/turf/simulated/floor/plasteel,/area/atmos) "bMy" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/atmos) @@ -4781,7 +4781,7 @@ "bNW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/mob/living/carbon/monkey,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "bNX" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (EAST)"; dir = 4},/turf/simulated/wall/r_wall,/area/medical/virology) "bNY" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/asmaint) -"bNZ" = (/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = -32},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) +"bNZ" = (/obj/machinery/disposal/bin,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = -32},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "bOa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/closet,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "bOb" = (/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "bOc" = (/obj/structure/table/glass,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/structure/disposalpipe/segment{dir = 4},/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/xenobiology) @@ -4898,7 +4898,7 @@ "bQj" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet,/turf/simulated/floor/engine,/area/toxins/xenobiology) "bQk" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/engine,/area/toxins/xenobiology) "bQl" = (/obj/structure/grille,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/engine,/area/toxins/xenobiology) -"bQm" = (/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) +"bQm" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/xenobiology) "bQn" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "bQo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "bQp" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/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) @@ -4918,7 +4918,7 @@ "bQD" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/aft) "bQE" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft) "bQF" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft) -"bQG" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating,/area/construction) +"bQG" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating,/area/construction) "bQH" = (/obj/machinery/camera{c_tag = "Construction Area"; dir = 1},/turf/simulated/floor/plating,/area/construction) "bQI" = (/obj/structure/rack{dir = 1},/obj/item/clothing/suit/hazardvest,/turf/simulated/floor/plating,/area/construction) "bQJ" = (/obj/structure/table,/obj/item/stack/cable_coil{amount = 5},/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/construction) @@ -4997,7 +4997,7 @@ "bSe" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/engine,/area/toxins/xenobiology) "bSf" = (/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},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/xenobiology) "bSg" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) -"bSh" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/xenobiology) +"bSh" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/xenobiology) "bSi" = (/obj/structure/grille,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable,/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/engine,/area/toxins/xenobiology) "bSj" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/engine,/area/toxins/xenobiology) "bSk" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/misc_lab) @@ -5017,7 +5017,7 @@ "bSy" = (/obj/structure/grille,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/maintenance/aft) "bSz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft) "bSA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft) -"bSB" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/sign/deathsposal{pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/aft) +"bSB" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/sign/deathsposal{pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/aft) "bSC" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/aft) "bSD" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible,/turf/simulated/floor/plating,/area/maintenance/aft) "bSE" = (/obj/effect/decal/cleanable/cobweb2,/obj/machinery/atmospherics/components/unary/portables_connector/visible,/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/maintenance/aft) @@ -5120,7 +5120,7 @@ "bUx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/misc_lab) "bUy" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (NORTH)"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/misc_lab) "bUz" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel,/area/toxins/misc_lab) -"bUA" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 2},/area/toxins/misc_lab) +"bUA" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 2},/area/toxins/misc_lab) "bUB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/asmaint2) "bUC" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bUD" = (/obj/machinery/door/airlock/external{name = "External Access"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/aft) @@ -5206,7 +5206,7 @@ "bWf" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; frequency = 1439; id_tag = null; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/table/glass,/obj/structure/reagent_dispensers/virusfood{density = 0; pixel_x = -30},/obj/item/weapon/book/manual/wiki/infections{pixel_y = 7},/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"},/area/medical/virology) "bWg" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "bWh" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) -"bWi" = (/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = -32},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/medical/virology) +"bWi" = (/obj/machinery/disposal/bin,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = -32},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "bWj" = (/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "bWk" = (/obj/structure/grille,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/engine,/area/toxins/xenobiology) "bWl" = (/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},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/xenobiology) @@ -5615,7 +5615,7 @@ "cdY" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/yellow/visible{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "cdZ" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "cea" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/incinerator) -"ceb" = (/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = 32},/obj/structure/disposalpipe/trunk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"ceb" = (/obj/machinery/disposal/bin,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = 32},/obj/structure/disposalpipe/trunk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cec" = (/obj/machinery/power/smes{capacity = 9e+006; charge = 10000},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/decal/cleanable/cobweb{tag = "icon-cobweb2"; icon_state = "cobweb2"},/turf/simulated/floor/plating,/area/maintenance/incinerator) "ced" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cee" = (/obj/machinery/atmospherics/pipe/manifold4w/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) @@ -5717,7 +5717,7 @@ "cfW" = (/obj/machinery/light{dir = 1},/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/plasteel{icon_state = "yellow"},/area/engine/engineering) "cfX" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor/plasteel{icon_state = "yellow"},/area/engine/engineering) "cfY" = (/obj/machinery/door/poddoor/preopen{id = "telelab"; name = "test chamber blast door"},/obj/machinery/door/firedoor/heavy,/turf/simulated/floor/engine,/area/toxins/explab) -"cfZ" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/table,/obj/item/weapon/tank/internals/emergency_oxygen/engi,/obj/item/clothing/mask/breath{step_x = 0; step_y = 0},/turf/simulated/floor/plasteel{icon_state = "yellow"},/area/engine/engineering) +"cfZ" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/table,/obj/item/weapon/tank/internals/emergency_oxygen/engi,/obj/item/clothing/mask/breath,/turf/simulated/floor/plasteel{icon_state = "yellow"},/area/engine/engineering) "cga" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "yellow"},/area/engine/engineering) "cgb" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{icon_state = "yellow"},/area/engine/engineering) "cgc" = (/turf/simulated/wall,/area/engine/engineering) @@ -5813,7 +5813,7 @@ "chO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/engine/engineering) "chP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/engine/engineering) "chQ" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/engine/engineering) -"chR" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) +"chR" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "chS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "chT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "chU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) @@ -5828,7 +5828,7 @@ "cid" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; external_pressure_bound = 0; frequency = 1441; id_tag = "o2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/atmos) "cie" = (/obj/machinery/atmospherics/components/unary/outlet_injector/on{dir = 1; frequency = 1443; id = "air_in"},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) "cif" = (/obj/machinery/air_sensor{frequency = 1443; id_tag = "air_sensor"; output = 7},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) -"cig" = (/obj/machinery/atmospherics/components/unary/vent_pump/high_volume{dir = 1; external_pressure_bound = 0; frequency = 1443; icon_state = "in"; id_tag = "air_out"; internal_pressure_bound = 2000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) +"cig" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "cih" = (/obj/structure/grille,/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/maintenance/incinerator) "cii" = (/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "cij" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 8},/obj/machinery/meter,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) @@ -5922,7 +5922,7 @@ "cjT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/storage/secure/safe{pixel_x = 5; pixel_y = 29},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "cjU" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/simulated/wall/r_wall,/area/maintenance/incinerator) "cjV" = (/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/starboard) -"cjW" = (/turf/simulated/floor/plating,/area/space) +"cjW" = (/obj/structure/lattice/catwalk,/turf/space,/area/maintenance/aft) "cjX" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/asmaint2) "cjY" = (/obj/structure/closet/toolcloset,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "cjZ" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2) @@ -5977,7 +5977,7 @@ "ckW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/engine/engineering) "ckX" = (/obj/structure/closet/secure_closet/engineering_personal,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/engine/engineering) "ckY" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,/turf/space,/area/space) -"ckZ" = (/obj/machinery/disposal,/obj/structure/sign/securearea{desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; pixel_x = 4; pixel_y = 28},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) +"ckZ" = (/obj/machinery/disposal/bin,/obj/structure/sign/securearea{desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; pixel_x = 4; pixel_y = 28},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "cla" = (/obj/structure/disposalpipe/segment,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "clb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "clc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/engine_smes) @@ -6116,7 +6116,7 @@ "cnF" = (/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/engine/engineering) "cnG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/engine/engineering) "cnH" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/engine/engineering) -"cnI" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel,/area/engine/engineering) +"cnI" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel,/area/engine/engineering) "cnJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external{name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/engine/engineering) "cnK" = (/obj/machinery/door/poddoor/shutters/preopen{id = "Singularity"; name = "radiation shutters"},/turf/simulated/floor/plating,/area/engine/engineering) "cnL" = (/obj/machinery/door/poddoor/shutters/preopen{id = "Singularity"; name = "radiation shutters"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering) @@ -6262,7 +6262,7 @@ "cqv" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/aisat) "cqw" = (/obj/machinery/door/airlock/hatch{name = "Teleporter Room"; req_access_txt = "17;65"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/aisat) "cqx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"cqy" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/tcommsat/computer) +"cqy" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/announcement_system,/turf/simulated/floor/plasteel,/area/tcommsat/computer) "cqz" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty{pixel_x = -3; pixel_y = -3},/obj/item/weapon/reagent_containers/blood/AMinus,/obj/item/weapon/reagent_containers/blood/BMinus{pixel_x = -4; pixel_y = 4},/obj/item/weapon/reagent_containers/blood/BPlus{pixel_x = 1; pixel_y = 2},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OPlus{pixel_x = -2; pixel_y = -1},/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "cqA" = (/obj/machinery/camera/emp_proof{c_tag = "Singularity West"; dir = 1; network = list("Singularity")},/turf/simulated/floor/plating/airless,/area/engine/engineering) "cqB" = (/obj/machinery/camera/emp_proof{c_tag = "Singularity East"; dir = 1; network = list("Singularity")},/turf/simulated/floor/plating/airless,/area/engine/engineering) @@ -6521,14 +6521,14 @@ "cvu" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating,/area/maintenance/aft) "cvv" = (/turf/simulated/floor/wood{tag = "icon-wood-broken5"; icon_state = "wood-broken5"},/area/maintenance/aft) "cvw" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/wood{tag = "icon-wood-broken6"; icon_state = "wood-broken6"},/area/maintenance/aft) -"cvx" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; external_pressure_bound = 120; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/wood,/area/maintenance/aft) +"cvx" = (/obj/machinery/atmospherics/components/unary/vent_pump/high_volume{dir = 1; external_pressure_bound = 0; frequency = 1443; icon_state = "vent_map"; id_tag = "air_out"; internal_pressure_bound = 2000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) "cvy" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft) "cvz" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/general/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft) "cvA" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{tag = "icon-connector_map (WEST)"; icon_state = "connector_map"; dir = 8},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/aft) "cvB" = (/obj/structure/grille,/obj/structure/window/fulltile,/obj/machinery/atmospherics/pipe/simple/general/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "cvC" = (/obj/structure/door_assembly/door_assembly_mai,/turf/simulated/floor/plating,/area/maintenance/asmaint) "cvD" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/aft) -"cvE" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/space) +"cvE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/aft) "cvF" = (/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/asmaint) "cvG" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cvH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -6562,7 +6562,6 @@ "cwj" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall,/area/maintenance/asmaint) "cwk" = (/obj/structure/disposalpipe/segment,/obj/item/weapon/cigbutt/roach,/turf/simulated/floor/plating,/area/maintenance/asmaint) "cwl" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/general/hidden{tag = "icon-manifold (NORTH)"; icon_state = "manifold"; dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint) -"cwm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/space) "cwn" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint) "cwo" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cwp" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/asmaint2) @@ -6587,7 +6586,7 @@ "cwI" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) "cwJ" = (/obj/machinery/camera{c_tag = "Brig Evidence Storage"; dir = 1},/obj/machinery/light,/obj/structure/table,/obj/item/weapon/hand_labeler,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/brig) "cwK" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/engine/engineering) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -6664,11 +6663,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadbadbadbadbaafaafaaaadcaaaaafaafabfabfabfabfabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgabNabPabOabsabSabTabSabSabSabUabSabSabSabVabSabSabWaaiactactactactactactactactabRacuabEaeIabYabDaboacaabZaccacbacwaboaaaaafacdaagaagaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfabfabfaafaafaaaaceaaaacfaafabfabfabfabfabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaaaaafaaaaafaaaaaaadcaaaaaaaafaaaaafaaaaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgabQacgabXabsackaasaclabSacmacnacoabSacpacqacrabSacsaaiacMacNacOacOacPacQacRacSactacTabEaeIaecabDabpacyacxaczaccacUaboaaaaafacAacjacAaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaafaaaaafaaaaaaaceaaaaaaaafaaaaafaaaaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafaenaenaenaenaenaaaaeoaaaaenaenaenaenaenaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaciacDacBacGacHaasacIabSacJacnacIabSacKacqacIabSacLaaiacMadkadladladladladmadnactadoabEaeIaecabDabpacWacVacXaccadpaboaafaafacAacYacAaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafacZacZacZacZacZaaaadaaaaacZacZacZacZacZaafabfaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaafaafbafbafbafbafcafdafeaffaffaffaffafgaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafhaaHaaHaaHacFaddadDabsadfadgadhabSadfadiadhabSadfadjadhabSabSaaiafnaRFaNFadVaNFadWbhdbiGadFabEabEaeIaecabDaboadradqadtadsaeeaboabnabnadvacjacAacAachaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadwadxadxadxadxadyadzadAadBadBadBadBadCaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaafaafbafbafbafbafcafdafeaffaffaffaffafgaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafhaaHaaHaaHacFaddadDabsadfadgadhabSadfadiadhabSadfadjadhabSabSaaiafnaRFaNFadVaNFadWbhdbiGadFabEabEaeIaecabDaboadradqadtadsaeeaboabnabnadvacjacAacAadvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadwadxadxadxadxadyadzadAadBadBadBadBadCaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafafPafPafPafPafPaaaafdaaaafPafPafPafPafPaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHabhadeadGaeaadIaeradHadKadJadMadLadOadNadUadLaepadPadQadRaaiadSadTaNFboSaNFadXadYadZaetabEabEaebaeTabmaboaedaboahPaboaefaboaegaehacAaeiacAarqanTanTahtaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafaemaemaemaemaemaaaadzaaaaemaemaemaemaemaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaaaaaaaafaaaaaaaaaafdaaaaaaaaaaafaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHadEaeqaeuaeVaewagVaevafiaexavkaifaexaexaexaifaOyaOvaeyaezaaiaeAaeBaeCaeDaeEaeFaeGaeHactahoagSaeJahpabmaeLaeMaeNaeOaePaeQaeNaeRaeSahyaeUahyamoamIamJagPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaaaaaaaafaaaaaaaaaadzaaaaaaaaaaafaaaaaaaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafaenaenaenaenaenaaaafdaaaaenaenaenaenaenaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaesaOzaiKajsajrakibiEafjafkaflafmacEafoafpafpafpabSafqafraaiafsaftafuafvafwafxafyafzactacvabnafBafCabmafDafEafFafGafHafIafJafKafLacAafMacAaptanTanTagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafacZacZacZacZacZaaaadzaaaacZacZacZacZacZaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaafaafbafbafbafbafcafdafeaffaffaffaffafgaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaHaaHbaMbOybkdakiabSadhafQadfafRafRafRafRafRafRafRafSafTafUafVafWafXafYafZagaagbagcafUagdahSageagfaggaghagiafFagjafHagkaglagmabmadvacAacAacAachaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadwadxadxadxadxadyadzadAadBadBadBadBadCaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaafaafbafbafbafbafcafdafeaffaffaffaffafgaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaHaaHbaMbOybkdakiabSadhafQadfafRafRafRafRafRafRafRafSafTafUafVafWafXafYafZagaagbagcafUagdahSageagfaggaghagiafFagjafHagkaglagmabmadvacAacAacAadvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadwadxadxadxadxadyadzadAadBadBadBadBadCaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfacfafPafPafPafPafPaaaafdaaaafPafPafPafPafPaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaHaaHaaHaaHakiaaiagnagoagpafRagqagragsagtaguafRagvagwagxagyagzagAagBagaagCagbagDagEagFafFagGagHagIagJagKaeKafAagNagOagLagMagRanUagUacAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafaemaemaemaemaemaaaadzaaaaemaemaemaemaemaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaaaaaaaafaaaaaaaaaafdaaaaaaaaaaafaaaaaaaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaialVagWagXafRagYagZahaahbahcafRagvahdaheahfahgahhahiahjahjahkahlahmahnaqqaPUaPTahqahrahsahTahVahuahvahWahwabmacAahxacAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaaaaaaaafaaaaaaaaaadzaaaaaaaaaaafaaaaaaaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafaenaenaenaenaenaaaafdaaaaenaenaenaenaenaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaHeagWaRfafRagYagZahzahbahAafRahBahCahDahEahFahGahHahIahJahKahLahMahNahObzKbzJahRcdlankaiaahUbuJahXaLjahYahZaibaicaidaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafacZacZacZacZacZaaaadzaaaacZacZacZacZacZaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -6737,39 +6736,39 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwibwibwkbwkbwkbwkbwibwibAXbAYbAZbBabuQbuQbuQbuQbuQbuQbBbbBcaIcaIcaIcaIcbBdbBdbBdbBdbBdbBdbBdbBdbBdbBdbBebBfbBgbBhbBhbBhbBhbBhbBibBhbBhbBjbBhbyebBkbyeaIdaJlbBlbtXbBmbBnbBobBpbBqbtXbBrbxQbBsbBtbBubBvbBwbBxbBybBzbBAbBBbBCbBDbBDbBEbBFbBGbBHbBIbBJbBKbBLbAwbzibgibBMbBMbBMbBMbBMbBMbBMbBMbBMbBNbBNbBNbBNbBNbBNbBObBPbBQbuybuybuybuybuybuybuybxhbrVbrVbrVbrVbrVbrVbrVbrVbsbbgxbBRbBSbjobjoaafaafaafaagaagaagaagaagaagaagaagaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBTaaaaaaaaaaafaaaaaabwlbBUbBVbBWbBXbBYbBZbCabCbbCcbCdbCebCfaaaaaaaafaaabBdbCgbChbCibCjbCkbClbCmbCnbCobCpbCqbCrbBhbCsbCtcuDbCubCwbCvbCvbCxbCybCzbCAbyebyebyebyebtXbCBbCCbCDbCCbCEbtXbCFbvpbCGbCHbCIbCJbCIbCIbCKbCLbCMbCNbCObCObCObCPbCQbvlbCRbCSbCTbCUbCVbAwbzibgibBMbCWbCWbCWbCXbCWbCWbCWbBMbCYbCYbCZbCYbCYbBNbDabDbbqibDcbDdbDebDfbDgbDhbJqbDjbDkbDlbDmbDnbDobsmbtnbtnbvwbDsbDdbDdbjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaelctjaekctjaejaaaaafaaabwlbwlbDtbxrbDubDvbDwbDxbDybDybDzbDAbDBbDCaafbDDbDEbDFbDGbDHbDIbDJbDIbDKbDIbDIbDIbBdbDLbDMbDNbBhbDObDPbDQbDRbDSbCvbDTbBjbBhbDUbDVbDWbDXbDYbDZbEabEbbCCbEcbCCbxQbEdbEebEfbEgbtXbEhbEibCCbCCbEjbEkbmSbmSbmSbmSbmSbElbEmbpGbEnbEobEpbBKbEqbAwbzibgibBMbCWbCWbCWbCWbCWbCWbCWbBMbErbEsbEtbEubEvbBNbEwbExbEybEzbEAbEBbECbEDbEDbEDbEDbEEbEFbEGbDnbjobvZbEIbEJbEJbEKbELbEMaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbENbEObENaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafNcuCctMcuCafNbERbERbERbwlbESbxrbETbEUbEVbEWbwlbBcbEXbBcbBcbEYbEZaaabFabFbbFcbFdbDIbDIbFebDIbFfbFgbFhbDIbBdbDLbFibFjbBhaGfbFlbFmbFnbFobCvbFpbBjbzibFqbFrbFsbFrbFtbFubtXbFvbCIbFwbCIbFxbtSbFybCJbFAbtXbFCbCCbCCbCCbCCbGNbmSbPIbFEbFFbFGbBEbFHbvlbFIbBKbBKbFJbFKbFLbFMbFNbBMbCWbCWbCWbCWbCWbCWbCWbBMbFObFPbFQbFRbFSbFTbFUbFVbtbbFWbFXbEDbFYbEDbEDbEDbEDbEDbEDbEDbDnbFZbDpbGbbGcbGdbGebGfbEMaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbEObENbGgbENbEOaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafNcuCctMcuCafNbERbERbERbwlbESbxrbETbEUbEVbEWbwlbBcbEXbBcbBcbEYbEZaaabFabFbbFcbFdbDIbDIbFebDIachbFgbFhbDIbBdbDLbFibFjbBhaGfbFlbFmbFnbFobCvbFpbBjbzibFqbFrbFsbFrbFtbFubtXbFvbCIbFwbCIbFxbtSbFybCJbFAbtXbFCbCCbCCbCCbCCbGNbmSbPIbFEbFFbFGbBEbFHbvlbFIbBKbBKbFJbFKbFLbFMbFNbBMbCWbCWbCWbCWbCWbCWbCWbBMbFObFPbFQbFRbFSbFTbFUbFVbtbbFWbFXbEDbFYbEDbEDbEDbEDbEDbEDbEDbDnbFZbDpbGbbGcbGdbGebGfbEMaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbEObENbGgbENbEOaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaekajxctyajxaekbERbGhbGibwlbGjbxrbGkbxrbxrbEWbwlbGlbGmbGnbBcbEYbEZaafbFabGobGpbGqbGrbGsbGrbGrbGtbGubGrbGrbGvbGwbGxbGybBhbGzbBhbBhbBhbBhbGAbGBbGCbGDbGEbGFbGGbGHbGIbGIbtXbGJbGKcltbGMbGQbtXbGObGPbGSbtXbGRbDqbEHbDrbFDbGWbmSbGXbGYbpFbGZbHabHbbHcbCRbHdbAQbBKbHebAwbzibgibBMbBMbHfbCWbCWbHgbHfbBMbBMbHhbHibHjbHkbHlbBNbHmbHnbtbbHobHpbHqbHqbHrbHsbHtbHqbHubHvbHwbHxbHybGabHAbHBbHCbHDbHEbEMaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbHFbEObHGbHHbHIbEObHFaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafNajxajxajxctLbHKbxrbxrbHLbGjbxrbxrbxrbxrbEWbwlbHMbGnbHNbBcbEYbEZaaabFabHObHPbHQbDIbDIbHRbDIbHSbHTbHUbHVbBdbHWbHXbHYbHZbIabIbbIbbIbbIbbIbbIcbIbbIdbIebIfbIgbIhbIibIjbtSbtSbtSbtSbtSbtSbtSbtSbtSbtSbMNbMNbMNbMNbMNbMNbOnbOCbmSbmSbmSbmSbIlbImbhjbAwbAwbAwbAwbAwbAwbzibgibBMbInbIobIpbIqbIrbIsbInbItbHhbHibHjbIubIvbIwbIxbIybuwbIzbDdclFbIAbIBbICbIDbIEbEDbEDbIFbDnbIGbGLbIIbDdbIJbIKbIKbDdaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbEObEObILbIMbIMbIMbINbEObEOaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaekctyctyctyaekbERbIObIPbIQbIRbxrcuQbISbITbIUbwlbBcbBcbBcbBcbEYbDCaafbIVbDEbIWbDGbIXbDIbIYbDIbDIbDIbDIbDIbBdbDLbIZbJabJbbJcbJcbJcbJcbJcbJcbJdbJebJfbJgbJhbJibJjbJkbJlbJmbJnbJmbJmbJmbJmbJmbJmbJmbJmbJmbJmbJmbJmbJmbJobJpbmSbGXcqlbBDbJrbBEbJsbJtbJubJvbJvbJwbJxbJgbJybJzbBMbJAbJBbJCbJDbJEbJFbJGbItbItbItbItbItbItbJHbJIbJJbJKbJLbDdbDnbDnbDnbDnbDnbDnbJMbEDbEDbDnbjobvZbgxbDdbJNbJObJPbJQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabJRbJSbJRbIMbJTbIMctxcdwbENaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafNajZctzctAafNbERbERbERbwlbwlbERbERbERbwlbwlbwlbWBbBcaaabJYbJZbEZaaaaaaaafaaabBdbKabKbbKcbDIbKdbKebKfbKgbKhbKibKjbKkbKlbKmbKnbKobKpbKqbKmbKmbKmbKmbKmbKrbKsbKmbKmbKtbKmbKubKmbKmbKmbKmbKmbyebyebyebyebyebyebyebyebKvbKwbmSbKxbKybKzbKAceebKCcfebKEbKFbKFbKGbKFbKFbKHbKIbBMbKJbKKbKLbKKbKMbKKbKNbKObKPbKQbKRbKSbKTbKUbyqbHnbqibKVaafbKWbKXbKYbKZbLabKZbLbbLcbLdbDnbLebsbbLfbDdbDdbDdbDdbDdaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbEObEObLgbIMbIMbIMbLhbEObEOaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaeYctjcrLctjaeWaaaaaaaaaaafaaIaafaaaaafaaIaafbJYbGnbJYaafbJYbEYbEZaafaafaafaafbBdbBdbBdbBdbBdbBdbBdbBdbBdbBdbLjbLkbLlbLmbKmbKnbKobKpbKqbLnbLnbLobLpbLqbLrbLsbLtbLubLvbLwbLxbLybLzbLAbLBaVQbLDbLDbLDbLDbLDbLDbLEbyebKvbLFbLGbLGbLGbLGbLGcfjbpocgubLGbLGbLGbLGbLGbLGbLFbLKbLLbLMbLNbLObLNbLPbLQbLRbLSbLSbLSbLSbLSbLSbLTbLUbLVbqibKVaafbKWbLWbLWcuEbLYcuFbMabMbbMcbDnbMdbsbbkFbjobMebMfbjoaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaafaafbHFbEObMgbMhbMibMjbHFaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaIaafaaaaafaaIaafbJYbGnbJYbJYbJYbEYbEZaaaaaaaaaaafbMkbMlbMlbMmbMnbMobMobMpbMpbMkbDLbMqbKkbMrbKmbMsbMtbMtbMubMvbLnbMwbMxbMybMzbMAbMBbMCbMDbMEbMFbMGbMFbMHbMIbMJaafbMKbMKbMKbMKbMKbMLbyebKvbMMcqzbMObMPbMQbLGcgxbNScgCbLGbMUbMVbMWbMVbMUbLFbMXbBMbKKbKKbKKbMYbKKbKKbMZbNabNbbNbbNcbNbbNbbNdbNebNfbNgbKVaafbKWbLWbNhbKZbNibKZbNjbNkbNlbDnbsebsbbkFbjobsebsebjoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbEObENbNmbENbMjaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbBcbBcbBcbJYbBcbJYbBcbBcbBcbBcbBcbBcbJYbJYbJYbBcbBcbBcbGnbGncjWcjjbEYbEZaaaaaaaaaaafbMkbNnbMmbMmbMmbMmbMobYnbNpbNqbNrbKjbNsbNtbNubNvbNwbNxbNybNzbNAbNwbNwbNwbNybNBbNCbNDbNEbNFbLBbNGbNHbNIbNJbNKbLDbNLbNMbNNbNObMKbMLbNPbKvbLFbNQbMUbMUcrqbLGbNRbNSbNTbLGbMVbNUbMVbNVbNWbNXbNYbBMbNZbOabObbOcbOdbOebOfbOgbOhbOibOjbOkbOlbItbOmbZlbOobOpbOpbDnbDnbDnbDnbDnbDnbDdbDdbDdbDnbsebsbbOqbsebsebOrbjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbENbEObENaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbBcbBcbBcbJYbBcbJYbBcbBcbBcbBcbBcbBcbJYbJYbJYbBcbBcbBcbGnbGnbGncjjbEYbEZaaaaaaaaaaafbMkbNnbMmbMmbMmbMmbMobYnbNpbNqbNrbKjbNsbNtbNubNvbNwbNxbNybNzbNAbNwbNwbNwbNybNBbNCbNDbNEbNFbLBbNGbNHbNIbNJbNKbLDbNLbNMbNNbNObMKbMLbNPbKvbLFbNQbMUbMUcrqbLGbNRbNSbNTbLGbMVbNUbMVbNVbNWbNXbNYbBMbNZbOabObbOcbOdbOebOfbOgbOhbOibOjbOkbOlbItbOmbZlbOobOpbOpbDnbDnbDnbDnbDnbDnbDdbDdbDdbDnbsebsbbOqbsebsebOrbjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbENbEObENaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBcckCcuRctlcuRcvjcvlcvkcvmbGncvnbOsbOubOtbGnbGncjjbGnbGnbJYbJYbJYbJZbEZaaaaafbJYbJYbMkbMmbMmbOwbOvbMmbOxbMobMobOzbDLbMqbOAbOBbZmbODbOEbOFbOGbOHbOIbOFbOJbOFbOKbOLbOMbLubONbOObOPbOQbORbOSbOTbOUaafbOVbOWbNObOXbMKbMLbNPbKvbLFbOYbOZbMUbPabLGbpCbPcbPdbLGbMUbPebPfbMUbMUbLFbKvbBMbItbItbItbItbJHbPgbPhbPibJHbItbItbItbItbItbPjbPkbPlbPmbPnbPobPpbPqbPpbPrbOpbPsbPtbPubPvbPwbsbbkFbjobjobjobjoabtaafaafaafaagaagaagaagaagaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBcbBccvpcvocvrcvqbBcbGnbBcbGnaoybPxbGnbGnbGnbPybBcbJYbJYbBcaaabJYbEYbEZaaaaafbJYbPzbPAbPBbMmbMmcbdbPDbPDbPDbPEbPFcbebMqbOAbPHccdbPJbPKbMFbPLbPMbPNbPObPPbPQbPRbPSbPSbPTbPUbLBbPVbPWbPXbPYbPZbQabQbbNLbQcbNObNObMKbMLbNPbKvbLFbQdbMUbQebLHbLGbLGbQfbLGbLGbQgbQhbQibQgbQgbLFbKvbBMbQjbQkbQkbQlbQmbKKbQnbQobQpbQqbCWbCWbCWbItbQrbQsbQtbQubQvbPobQwbQxbQybQzbOmbPtbQAbPtbPvbBRbGTbGUbjoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagbJYcvscuRcvtcvtcvtbBccvubBccacbBcbPxbGnbGnbQDbQEbBcaaaaafaaaaaabJYbEYbDCbBcbBcbBcbQFbMkbQGbMmbMmcqmbQHbQIbQJbQKbMkcqnbMqbOAbPHcqobQLbQMbMFbMFbQNbLnbQObQPbQQbQRbMFbMFbLubQSbQTbQUbQVbQWbQXbQWbQYaafbMKbMKbMKbMKbMKbMLbyebKvbLFbQZbRabRabRbbRcbxkbRebRfbRgbMUbPebMUbMUcqpbLFbKvbBMbCWbUobCWbRhbRibKKbRjbKKbRkbRlbCWbUobCWbItbRmbRnbRobRpbRqbRrbRsbRtbRrbRubOpbRvbPtbRwbPvbOpbSsbGVbjoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBcbBccuRcvvcvxcvwcvzcvycvBcvAbBcbBcbBcbRAbBcbBcbBcbJYbJYbJYbRBbRCbRDbREbRFbRGbRCbRHbPFbPFbPFbPFcqrbMkbMkbMkbMkbMkcqtbRKbOAbRLbKmbRMbRNbPNbRObPNbLnbMFbMFbMFbQRbRPbRQbRQbRRbRSbRTbNGbRUbRVbRWbNKbLDbNLbRXbRYbRYbMKbMLbyebKvbRZbSabSabSabSbbScbMUbSdbMUbMUbMUbPebMUbMUbMUbLFbKvbBMbCWbCWbCWbSebSfbQobSgbKKbShbSibQkbQkbSjbItbSkbSlbPlbSmbSnbPobQybSobRrbSpbOpbSqbSqbSqbPvbSrbSsbGVbjoaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBcbBccuRcvvbFfcvwcvzcvycvBcvAbBcbBcbBcbRAbBcbBcbBcbJYbJYbJYbRBbRCbRDbREbRFbRGbRCbRHbPFbPFbPFbPFcqrbMkbMkbMkbMkbMkcqtbRKbOAbRLbKmbRMbRNbPNbRObPNbLnbMFbMFbMFbQRbRPbRQbRQbRRbRSbRTbNGbRUbRVbRWbNKbLDbNLbRXbRYbRYbMKbMLbyebKvbRZbSabSabSabSbbScbMUbSdbMUbMUbMUbPebMUbMUbMUbLFbKvbBMbCWbCWbCWbSebSfbQobSgbKKbShbSibQkbQkbSjbItbSkbSlbPlbSmbSnbPobQybSobRrbSpbOpbSqbSqbSqbPvbSrbSsbGVbjoaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaafbRzaaabBcbBcbBcbBcbBcbBcbBcbBcbBcbBcbGnbGnbGnbGnbGnbGnbGnbSFbSGbSHbSIbSJbSKbSKbSKbSKbSLbSMbSMbSMbSNcqubSObDybDybSPbBccqnbMqbOAbSQbSRbSSbSTbRQbRQbSUbSVbRQbRQbSWbSXbSYbMFbSZbTabTbbTcbMFbTdbTebTfbOUaafbOVbTgbThbTibMKbMLbNPbTjbTkbTkbTkbTlbLFbTmbQZbTnbTobTpbTqbTrbTsbTsbTtbLFbKvbBMbItbItbItbItbTubTvbRjbTwbTubItbItbItbItbItbTxbTybTzbTAbTBbTCbTCbTCbTCbTDbOmbSqbSqbTEbPvbTFbSsbGVbjobjobjoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabStbSubSubSubSubSvbSwbSwbSxbSybSzbSAbSBbSCbSDbSEbBcbTMbJYbJYbJYbJYbJYbJYbJYbJYbDCbTNbTObTObTObTObTObTObTObTObTPbTPcqxbTPbTPbTQbTRbBccqnbMqbOAbSQbTSbTTbTUbTVbPSbTWbTXbPSbPSbTYbTZbUabUbbUcbUdbUebUfbMFbTdbUgbUhbQabQbbNLbUibRYbRYbMKbMLbNPbUjbyebyebyebNYbLFbUkbMUbMUbUlbUmbUnbVibUpbVibUnbLFbKvbBMbQjbQkbQkbUqbQmbKKbQnbQobUrbUsbCWbCWbCWbItbUtbUubUvbUwbRnbRpbUxbUybUzbUAbOpbSqbSqbSqbPvbTFbSsbGVbsebsebjoaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaaaaafaaaaaabJYbJYbJYbGnbTHbTIbTJbTKbTLbBcbGnbJYaaaaaaaafaaaaaaaafaaabDCbTNbTObUGbUHbUIbUJbUKbULbUGbUMbUNcqCcqybTPbTPbTRbBccqDbMqbOAbURbUSbUTbUTbUUbKmbKmbKmbKmbKmbUVbUWbLnbLnbLnbUXbMFbTbbMFbTdbTebUYbOUaafbMKbMKbMKbMKbMKbMLbNPbUjcvCbzibzibNYbMMbVabVbbVcbVdbVebVfbVgbUpbVgbVhbLFbKvbBMbCWcqUbCWbVjbRibKKbRjbKKbRkbVkbCWcqUbCWbItbVlbVmbVnbVobVpbVqbVrbVsbVtbVubOmbVvbVwbVxbPvbSqbSsbHzbjobsebjobjobjoaagaagaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaagaagaagaagbUDbGnbUDbGnbUEcvDbTIbUFbGnbBcbGnbJYaaaaaaaafaaaaaaaafaaabDCbTNbTObUGbVFbVGbVHbVIbVJbUGbVKbVLcqEbVNbVObTPbTRbBccqnbMqbOAbVPbVQbKmbVRbVSbKmbVTbVUbVVbKmbVWbQRbVXbLnbVYbUfbMFbUdbVZbWabRVbWbbNKbLDbNLbWcbWdbWebMKbMLbyebUjbyebABbUZbNYbLFbWfbWgbWhbWibUmbWgbWjbUpbWjbNVbNXbKvbBMbCWbCWbCWbWkbWlbQobSgbKKbShbWmbQkbQkbSjbBMbPvbWnbWobWobPvbPvbWpbWqbWrbWsbWtbWubTCbWvbSqbSqbSsbGVbjobWwbjobWxbjoaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbJYbJYbJYbVzbVAbVBbVCbVDbGnbVEbGnbJYaaaaaaaaaaaaaaaaaaaaabDCbTNbTObWCbWDbWEbVHbWFbWCbWCbVKbWGcqGcqFbWIbTPbTRbBccqnbMqbWJbWKbWKbWLbWMbWNbWObWPbWQbWRbKmbMFbQRbWSbWTbVYbWUbMFbUdbVZbTdbTebWVbOUaafbOVbWWbWXbWYbMKbMLbyebUjbyebGHbGHbNYbLFbLGbWZbXabLGbXbbLGbLGbLGbLGbLGbLFbKvbBMbItbItbItbItbTubXcbRjbXdbTubItbItbItbItbBMbRrbXebRrbRrbRrbPvbWpbWqbXfbXgbXhbXibUwbXjbPvbSqbSsbGVbjobsebsebsebXkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaafaafaafbJYbWybWzbWzbWAbTLbWBbBccvEcvEaaabXlaaaaaaaaaaaaaaabEZbTNbTObWCbWCbXmbXnbXobWCbXpbXqbXrcqIcqHbXsbTPbTRbBccqJbXwbCrbWKbXxbXybXybXzbXAbXBbXCbXDbKmbXEbXFbVXbLnbVYbXGbMFbXHbVZbTdbXIbXJbQabQbbNLbXKbWdbWdbMKbMLbNPbUjcvFbyebXLbNYbXMbSabSabXNbLGbIHbIkbQBbyebXRbXSbKwbKvbBMbQjbQkbQkbXTbQmbKKbQnbQobXUbXVbCWbCWbCWbBMbXWbRrbRrbRrbRrbPvbXXbXXbXYbXZbOpbOpbUwbOpbPvbOpbSsbGVbjobYabYbbYcbXkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaafaafaafbJYbWybWzbWzbWAbTLbWBbBcbJYbJYaaabXlaaaaaaaaaaaaaaabEZbTNbTObWCbWCbXmbXnbXobWCbXpbXqbXrcqIcqHbXsbTPbTRbBccqJbXwbCrbWKbXxbXybXybXzbXAbXBbXCbXDbKmbXEbXFbVXbLnbVYbXGbMFbXHbVZbTdbXIbXJbQabQbbNLbXKbWdbWdbMKbMLbNPbUjcvFbyebXLbNYbXMbSabSabXNbLGbIHbIkbQBbyebXRbXSbKwbKvbBMbQjbQkbQkbXTbQmbKKbQnbQobXUbXVbCWbCWbCWbBMbXWbRrbRrbRrbRrbPvbXXbXXbXYbXZbOpbOpbUwbOpbPvbOpbSsbGVbjobYabYbbYcbXkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfabfabfabfabfabfabfabqabfabfabfabfabfaaaaaabBcbBcbBcbBcbBcbBcbVEbBcbBcbBcbBcaafaaaaaaaafaaIbYdaaaaaaaaabEZbTNbTObYebYfbYgbYhbYibYjbYkbYlbYmcqMcqKbYobTPbYpbYqbYrbYsbGybWKbYtbXybYubYvbYwbYxbYybYzbYAbNFbYBbLnbLnbLnbYCbMFbYDbYEbTdbTebMFbOUaafbMKbMKbMKbMKbMKbMLbNPcbxcvGbyebYFbYGbYHbTkbYIbYJbyebRybQCbTGbyebYNbKFbYObYPbBMbCWbUobCWbYQbRibKKbRjbKKbRkbYRbCWbUobCWbBMbYSbRrbYTbRrbRrbYUbYVbYWbYXbYYbOpbUwbUwbYZbPvbBRbZabUBbjobZcbZdbsebXkaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaafaaaaafaaaaafaaaacfaaaaafaaaaafaaaabfaafaafbBcbGnbGnbGnbGnbGnbGnbGnbGnbWBbJYaaaaaaaaaaaIbZfbZgaaIaaIaafbEZbTNbTObZhbWCbUGbUGbUGbWCbZibZjbZkcqGcqNcqPbTPbBcbBcbZnbZobZpbWKbWKbZqbXybZrbZsbZtbZsbZubKmbMFbZvbZwbZxbZybONbZzbZAbZBbWabRVbZCbNKbLDbNLbZDbZEbZEbMKbMLbNPbyecvHbyebyebZFbZGbyebZHbZIbyebyebZJbyebyebZIbDZcgzcvIbBMbCWbCWbCWbZNbZObQobZPbKKbShbZQbQkbQkbSjbBMbRrbRrbZRbRrbRrbPvbXXbXXbZSbZTbOpbZUbZVbZWbPvboUbZabGVbjobjobjobsebjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaabZXbZYbZZaaabZXbZYbZZaaabZXbZYbZZaaaabfaaaaaabJYbZebGnbBcbBcbBcbRAbBcbBcbBcbBcaaaaaaaaacafaaIaaIaafaaaaaabEZbTNbTObWCcagcahbUGcaibWCbWCbVKcajcqGcqKcakbTPcalcamcancaocapcaqcarcascatcascatcaucatcavbKmcawcaxcaybPSbPSbPUbRPcazbRUbPVbTecaAbOUaafbOVcaBcaCcaDbMKbMLbyebzibUjcaEcaFbZFcaGbyebZHcaHcaIcaJcaKcaLcaIcaMccBbgxcaNbBMbBMbBMbBMbBMbBMcaOcaPcaObBMbBMbBMbBMbBMbBMbPvbPvbPvbPvbPvbPvcaQcaQcaRcaSbPvbPvbPvbPvbPvbjobRxbGVbjocaTcaUbsebjoaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafbZXcaVbZZaaabBccaVbZZaaabZXcaVbZZaafaafaaaaaabJYcaacabbBccacbGnbGncadbOucaebBcaaaaaaaaaaaaaafaaaaaaaaaaaabDCbTNbTObUGcaYcaZbUGcbacbbbUGbVKcbccqEcqQcqVcuPcqXcqWbOAaZDcbgcbhcbicbjcbkcblcbmcbnbXycbobKmcbpbMFbZvbRPbRQcbqcbrcbscbtbLAcbucbvbQabQbbNLcbwbZEbZEbMKbMLbyebzicvJcbzcbAcbBcbCbyecbDcbEcvKccBcvLccBbDZbFMcfibgxcbKbjoaaaaaaaaaaafaaaaaacbLaaaaafaaaaaaaaaaaabjocbMbMfbkGcbNcbNbPvcbOcbOcaRbQtcbPcbQbsebsebsebBRbRxbHzbjocbRbsebsebjobjobjoaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafbZXcaVbZZaaabZXcaVbZZaaabZXcaVbZZaafaafaaaaaabJYcaacabbBccacbGnbGncadbOucaebBcaaaaaaaaaaaaaafaaaaaaaaaaaabDCbTNbTObUGcaYcaZbUGcbacbbbUGbVKcbccqEcqQcqVcuPcqXcqWbOAaZDcbgcbhcbicbjcbkcblcbmcbnbXycbobKmcbpbMFbZvbRPbRQcbqcbrcbscbtbLAcbucbvbQabQbbNLcbwbZEbZEbMKbMLbyebzicvJcbzcbAcbBcbCbyecbDcbEcvKccBcvLccBbDZbFMcfibgxcbKbjoaaaaaaaaaaafaaaaaacbLaaaaafaaaaaaaaaaaabjocbMbMfbkGcbNcbNbPvcbOcbOcaRbQtcbPcbQbsebsebsebBRbRxbHzbjocbRbsebsebjobjobjoaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaabZXcaVbZZaafbZXcaVbZZaafbZXcaVbZZaaaaafaafaafbBcbJYbBcbBcbBccvMcvOcvNbGnbQDbBcaaaaaaaaaaaaaafaaaaaaaafaaabDCbTNbTObUGcbScbTcbUcbVcbWbUGcbXcbYcbZccaccbbTPccccqYcceccfccgcchcciccjcckcclccmccnccoccpccqccrbMFbZvcctbMFbMFbMFcctcctcctbTeaVSaVRaafbMKbMKbMKbMKbMKbMLbyebYFccuccvccwccxccybyebyecczcvPcdnbKwccCccDbyebyebgxcbKbjoaaaaaaaaaaafaaaaaacbLaaaaafaaaaaaaaaaaabjobseccEbqvccFccGbPvccHccHccIbQtbPvbOpbjoccJccKbBRbRxbGVbsebsebsebUCbkHbVybkHaagaagaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZXcaVbZZaaabZXcaVbZZaaabZXcaVbZZaafaafaaaaaaaafaafbBcccRbBccaWcaXcvQbRAbBcbBcaaaaafaaaaaaaafaaaaaaaafaaabDCbTNbTObTObTObTObTObTObTObTObTPbTPbTPbTPbTPbTPbBcccSbBcccTccUccUccUccVccWccXccUccYccZcdabKmbMFbOQccscctbMFbMFbMFbMHbSYcctbTecctbKmaafaafaafaafaafaafbMLcdjcdjcdjcdkcvdcdjcdjcdjcvRcvTcvScdncvUcdncdnbyecvVbZGcbKbjobXkbXkbXkbjobXkbXkcdpbXkbjobXkbXkbXkbXkbjobjobRxcdqbjobjobPvbPvbPvcdrcdsbPvbBRbjobYcbseboTbRxbUBbjobjocdtbjobjobjobjoaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfaafaaabZXcaVbZZaaabZXcaVbZZaaabZXcaVbZZaaaaafaaaaaacducdvcdvcdvcdvbBcbBccvWbGnbBcbJYbJYbJYbJYbJYbJYbJYbJYbJYbBcbDCbTNbBccdxcdycdzcdzcdzcdzcdzcdzcdzcdzcdzcdAcdAcdzcdBcaWccTcdCcdDcdEcdFcdGcdHccUcdIcdJcdKbKmcdbcdcbPXcddcdecdfcdecddcdgcddcdhcctbKmbKmbKmaaaaaaaafaaacdVcdWcdXcdYcdZceacebceccdjcvXbzicvYcwacvZcwbcbGbJxbJxcwdcwcceiceiceiceiceiceiceicejcekcekcekcekcekcekcelcekcemcekcekcenceocepceqbXOcesbjobjocetceoceuceocevbGVbjocewbsebsebjoaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaafaaaaaaaaacexaaaaaaaaacexaaaaaaaaacexaaaaaaaafcducducduceycezceAceBceCbGnceDceEceFceEceEceEceEceEceEceEceEceEceEceGceHbRGceIceJceKceKceKceKceKceKceKceKceKceKceKceKceKceKccTccUceLceMceNceOcePceQceRceSceTceKcdbcdLcdMcdNcdOcdPcdQcdRbMFcdScdTcdUbLCcdibLCaaaaaaaafaaacdjceXceYceZcfacfbcfccfdcdjbzibzicdncdnbZGcdnccBbDZbFMcfkcflcflcflcflcflcflcflcfmcfncflcflcflcflcflcflcfocfpcfqbmicfrcfscftcftcftbXPbYKbXkbYMbYLcbfbZbbZbccLccMbjocaUbsecfCbjoaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaafaaaaaaaaacexaaaaaaaaacexaaaaaaaaacexaaaaaaaafcducducduceycezceAceBceCbGnceDceEceFceEceEceEceEceEceEceEceEceEceEceGceHbRGceIceJceKceKceKceKceKceKceKceKceKceKceKceKceKceKccTccUceLceMceNceOcePceQceRceSceTceKcdbcdLcdMcdNcdOcdPcdQcdRbMFcdScdTcdUbLCcdibLCaaaaaaaafaaacdjceXceYceZcfacfbcfccfdcdjbzibzicdncdnbZGcdnccBbDZbFMcfkcflcflcflcflcflcflcflcfmcfncflcflcflcflcflcflcfocfpcfqbmicfrcfscftcftcftbXPbYKcigbYMbYLcbfbZbbZbccLccMbjocaUbsecfCbjoaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafalkcfEcfEcfFcfGcfGcfGcfGcfGcfGcfGcfGcfGcfGcfGcfHcfIcfJcfIcfKcfLcfMcfNceEcfOcfPbOubBcbJYbJYbJYbJYbJYbJYbJYbJYbJYbBcbBccfQbSKcfRcfSceKcfTcfTcfUceKcfVcfWcfXctHcfZcgacgbcgccgdcgeccUcgfcggcghcgicgjcgkcglcgmcgnceKbKmcsKbLuceVbLuceUbLuceVbLuceWbLucsNbKmbKmbKmaafaafaafaaacdjcgqcgrcgscgtcwecgvcgwcdjcwfbziccBccBcwgcdnccBccBcwhbyebjobXkbXkbXkbXkbjobXkbXkbXkbXkbjobXkbXkbXkbXkbjocgEbsebjocgFcgGbjobjobXkbXkbjobjocgHbZacgIbjocgJcgKboRbjobjobjobjobjoaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaafaaaaaaaaacgLaaaaaaaaacgLaaaaaaaaacgLaaaaaaaafcducducducgMcgNcgOcdvbGnbGnbGnbGnbBcaaaaaaaafaaaaaaaafaaaaaaaafaaabBccgPbBccgQcgRceKcgScgTcgUcgVcgWcgXceRceRceRcgYcgZchachbcgXccUchcchdchecgictIccUchgchhchiceKaafcgoaafbMLaafcgoaafbMLaafcgpaafcgpaafaafaaaaaaaaaaafaafcdjchmchnchochpchqchrchschtchucwjcwiccBbKwccBcwkcdnbyebyeaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaabjochybLebjochzbZabjoaaaaaaaaaaaabjobsebZachAchBchBchCchDchBaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfaafaaabZXchEbZZaaabZXchEbZZaaabZXchEbZZaaaaafaaaaaacducdvcdvcdvcdvchFbWBbGnbGnbBcbBcbJYchGchGchGchGchGchGchGaafbBcbBcbBcchHchIceKchJcgUcgUcgVchKchLchLchMchNchOchPchPchQceRccUchRchSchTchUchVccUchWcdJchXceKbMKchjbOVchjbMKchjbOVchjbMKchkbOVchlbMKaaaaaaaaaaaaaaaaafcihciichncijcikcilcimcincdjcdmcdncdncdncdocdncdncdnbABabtcvEcvEaagaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaabjocipbjobjociqbZabjobjobXkbXkbjobjobsecircischBcitciucivchBaaaaaaaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZXchEbZZaaabZXchEbZZaaabZXchEbZZaafaafaafaaaaaaaaaaaaaagbBcbBcbBcciwbGnbBcciwbHNchGcixciycizciyciAchGaaabBcbQDbGnciBchIceKciCciCciDceKciEciFciGciHceSciIciJciKciLciLccUciMciNciOciPciQciRciSciTciUceKbMKchYchZciabMKcibciccidbMKciecifcigbMKaaaaaaaaaaaaaaaaaacdjcjccjdcjecjfcvecjhcjicdjcedcwlcefcegcehccBccBccBbzicwmcjWcwmaagaaaaaaaafaaabXkbXkbXkbjobjobjobjobjobjocjkbBRbjocjlcjmcjnceocjncjncjncjncjocjpcjqchBcjrcjscjtchBaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaabZXchEbZZaafbZXchEbZZaafbZXchEbZZaaaaafaafaafaaaaaaaaaaagcjucjvcjubGnbGnceFbGnbZechGcjwcjxcjycjzcjAchGaaabBccaXbGnciBchIceKciCciCciDceKcjBcgccjCcjDcjEcjFcjCcgccjCcjCcgccjGcjHcjIciIcjJcjKcjLceScjMceKbMKciVciWciVbMKciXciYciXbMKciZcjacjbbMKaafaafaafaafcnDaafcdjcdjcdjcjQcjRcjScvfcjUcjRcedcwnccBcffcfgcfhcficcBcwoabtcvEcvEaagaafaafaafaaabXkckFcwpbjobsecwqcwrclKbjocjXbsebjocjYbmhbmhcjZbmhbmibmibmickackackbchBckcckdckechBaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafbZXchEbZZaaabZXchEbZZaaabZXchEbZZaafaafaaaaafaafaaaaaaaagbBcbBcbBcbBcbGnbBcbBcbBcchGckfckgckhckickfchGaafbBcceKckjckkcklceKciCciDciDceKckmcknckockpceSckqckrcksckrckrcktckuckvckwckxckyckyckyckzckAceKbMKciVcjNciVbMKciXcjOciXbMKcjbcjPcjbbMKaaaaaaaafaafaaaaaaaaaaaaaaackBcjRbFkckDcuScjRbzicwscgycgzcgAcgBbDZcwtcgDabtaaaaaaaaaaaaaaaaafaaabXkcwucwvbWwbseccKbsebsebWwcgEbsebjobjobjobjobjobsebjoaafaaaaaaaaaaafckGckGckHckGckGaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaabZXckIbZZaaabZXckIbZZaaabZXckIbZZaaaabfaaaaaaaafaafaaaaaaaaaaaaaaabJYbGnbJYaaaaaachGccNckKckLckMckNchGchGchGceKckOckkckPceKceKceKceKceKckQceRckRciHceSceRceRceRckSckTckUceSceSciHceRckVceRceRckWckXceKbMKbMKbMKbMKbMKbMKbMKbMKbMKbMKbMKbMKbMKaaaaafaafaaaaaaaaaaaaaaaaaackYcjRcjScvgcjUcjRbyecwwbFMchvchwbFMchxbyebyeabtaaaaaaaaaaaaaaaaafaaabXkckFcwxbjoclKbsebsecwybjoclabsebsebsebsebsebsebsebjoaafaaaaaaaaaaafaaackGclbckGaaaaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfaafaaabZXchEbZZaaabZXchEbZZaaabZXchEbZZaaaaafaaaaaacducdvcdvcdvcdvchFbWBbGnbGnbBcbBcbJYchGchGchGchGchGchGchGaafbBcbBcbBcchHchIceKchJcgUcgUcgVchKchLchLchMchNchOchPchPchQceRccUchRchSchTchUchVccUchWcdJchXceKbMKchjbOVchjbMKchjbOVchjbMKchkbOVchlbMKaaaaaaaaaaaaaaaaafcihciichncijcikcilcimcincdjcdmcdncdncdncdocdncdncdnbABbBcbJYbJYcjWaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaabjocipbjobjociqbZabjobjobXkbXkbjobjobsecircischBcitciucivchBaaaaaaaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZXchEbZZaaabZXchEbZZaaabZXchEbZZaafaafaafaaaaaaaaaaaaaagbBcbBcbBcciwbGnbBcciwbHNchGcixciycizciyciAchGaaabBcbQDbGnciBchIceKciCciCciDceKciEciFciGciHceSciIciJciKciLciLccUciMciNciOciPciQciRciSciTciUceKbMKchYchZciabMKcibciccidbMKciecifcvxbMKaaaaaaaaaaaaaaaaaacdjcjccjdcjecjfcvecjhcjicdjcedcwlcefcegcehccBccBccBbzicvEbGncvEcjWaaaaaaaafaaabXkbXkbXkbjobjobjobjobjobjocjkbBRbjocjlcjmcjnceocjncjncjncjncjocjpcjqchBcjrcjscjtchBaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaabZXchEbZZaafbZXchEbZZaafbZXchEbZZaaaaafaafaafaaaaaaaaaaagcjucjvcjubGnbGnceFbGnbZechGcjwcjxcjycjzcjAchGaaabBccaXbGnciBchIceKciCciCciDceKcjBcgccjCcjDcjEcjFcjCcgccjCcjCcgccjGcjHcjIciIcjJcjKcjLceScjMceKbMKciVciWciVbMKciXciYciXbMKciZcjacjbbMKaafaafaafaafcnDaafcdjcdjcdjcjQcjRcjScvfcjUcjRcedcwnccBcffcfgcfhcficcBcwobBcbJYbJYcjWaafaafaafaaabXkckFcwpbjobsecwqcwrclKbjocjXbsebjocjYbmhbmhcjZbmhbmibmibmickackackbchBckcckdckechBaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafbZXchEbZZaaabZXchEbZZaaabZXchEbZZaafaafaaaaafaafaaaaaaaagbBcbBcbBcbBcbGnbBcbBcbBcchGckfckgckhckickfchGaafbBcceKckjckkcklceKciCciDciDceKckmcknckockpceSckqckrcksckrckrcktckuckvckwckxckyckyckyckzckAceKbMKciVcjNciVbMKciXcjOciXbMKcjbcjPcjbbMKaaaaaaaafaafaaaaaaaaaaaaaaackBcjRbFkckDcuScjRbzicwscgycgzcgAcgBbDZcwtcgDbBcaaaaaaaaaaaaaaaaafaaabXkcwucwvbWwbseccKbsebsebWwcgEbsebjobjobjobjobjobsebjoaafaaaaaaaaaaafckGckGckHckGckGaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaabZXckIbZZaaabZXckIbZZaaabZXckIbZZaaaabfaaaaaaaafaafaaaaaaaaaaaaaaabJYbGnbJYaaaaaachGccNckKckLckMckNchGchGchGceKckOckkckPceKceKceKceKceKckQceRckRciHceSceRceRceRckSckTckUceSceSciHceRckVceRceRckWckXceKbMKbMKbMKbMKbMKbMKbMKbMKbMKbMKbMKbMKbMKaaaaafaafaaaaaaaaaaaaaaaaaackYcjRcjScvgcjUcjRbyecwwbFMchvchwbFMchxbyebyebBcaaaaaaaaaaaaaaaaafaaabXkckFcwxbjoclKbsebsecwybjoclabsebsebsebsebsebsebsebjoaafaaaaaaaaaaafaaackGclbckGaaaaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaafaaaaafaaaaafaaaaafaaaaafaaaaafaaaabfaaaaaaaaaaafaafaaaaaaaaaaaabJYbGnbJYaaaaaachGclccldcleclfclgclhclicljclhclkcllclmclncloclpclqclrclschLcqqcluclvclwclxclyclzclyclzclAclBclCchLchLclDchLclEcviceKceKceKceKceKcgccgccgccgcceKaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaackYcjRclGclHclIclJaafbyecczciobNPbNPbyebyeaaaaafaaaaaaaaaaaaaaaaafaafbXkbXkbXkbjobjobjobsebjobjocipbjobjoclKclLbLebMdbjobjoaafaaaaaaaaaaafaaackGckHckGaaaaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfabfabfabqabfabfabfabfabfabfabfabfabfaaaaaaaaaaaaaafaafaaaaaaaafbJYbGnbJYaafaafchGclMclNclOclPclQclRclSclTclRclUclVclWclXclYclZcmaclZcmbcmccmdcmecmfcmgcmhcmicmjcmkcmjcmlcmmcmnchPcmecmochPcmpcmqchPcmrceRcmsceKcmtcgccuOcuLcuLcuNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackYcjRcjRcmvcjRcjRaaaaafaaackYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaabjocwvcwzbjocmwaafbjobjobXkbXkbjobjoaaaaafaaaaaaaaaaafaaaaaacmxaaaaaaaafaaaaafaaaaaaaafaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaabJYbGnbJYaaaaaachGcmycmzcmAcmBcmCchGcmDcmEchGcmFceRcmGciHceScmHcjCcmIciIcmJcmKcmLcmLcmLcmMcmNcmOcmPcmQcmRcmMcmScmSckUceRckVciIcmTcmUcmVchLcmWcmXcgUcmXcuGcuJcuIcuHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackYaagcjRcmZcjRcnaaafaafaaacwAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaeaaaaaabjocwvcwqbjocnbaafaaaaafaaaaaaaafaaaaaaaafaaaaaaaaaaafaaaaaacmxaaaaaaaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/generic/z2.dmm b/_maps/map_files/generic/z2.dmm index 3586a180854..568c2daf3c5 100644 --- a/_maps/map_files/generic/z2.dmm +++ b/_maps/map_files/generic/z2.dmm @@ -593,7 +593,7 @@ "lu" = (/turf/indestructible/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/tdome/tdomeobserve) "lv" = (/obj/machinery/computer/telecrystals/uplinker,/turf/simulated/floor/plasteel/podhatch{dir = 8},/area/syndicate_mothership) "lw" = (/obj/structure/stool,/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) -"lx" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = 5; pixel_y = -2; step_x = 0},/obj/item/toy/cards/deck/syndicate{icon_state = "deck_syndicate_full"; pixel_x = -6; pixel_y = 6},/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) +"lx" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = 5; pixel_y = -2},/obj/item/toy/cards/deck/syndicate{icon_state = "deck_syndicate_full"; pixel_x = -6; pixel_y = 6},/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) "ly" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/mushroom,/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) "lz" = (/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) "lA" = (/obj/structure/stool,/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) diff --git a/_maps/map_files/generic/z3.dmm b/_maps/map_files/generic/z3.dmm index 5fb57b8c8c2..de3d265f3ac 100644 --- a/_maps/map_files/generic/z3.dmm +++ b/_maps/map_files/generic/z3.dmm @@ -125,7 +125,7 @@ "cR" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel/airless,/area/tcommsat/chamber) "cS" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel/airless,/area/tcommsat/chamber) "cT" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel/airless,/area/tcommsat/chamber) -"cU" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel/airless,/area/tcommsat/chamber) +"cU" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel/airless,/area/tcommsat/chamber) "cV" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/tcommsat/chamber) "cW" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/space) "cX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating/airless,/area/space) @@ -231,7 +231,7 @@ "eU" = (/obj/structure/rack,/obj/item/clothing/gloves/color/yellow,/turf/simulated/floor/plating/airless,/area/AIsattele) "eV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/AIsattele) "eW" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/AIsattele) -"eX" = (/obj/item/weapon/stock_parts/cell{step_x = 0},/turf/simulated/floor/plating/airless,/area/AIsattele) +"eX" = (/obj/item/weapon/stock_parts/cell,/turf/simulated/floor/plating/airless,/area/AIsattele) "eY" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating/airless,/area/AIsattele) "eZ" = (/obj/effect/decal/cleanable/robot_debris/old,/turf/simulated/floor/plating/airless,/area/AIsattele) "fa" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating/airless,/area/AIsattele) diff --git a/_maps/map_files/generic/z4.dmm b/_maps/map_files/generic/z4.dmm index 606bafc050c..e420d816869 100644 --- a/_maps/map_files/generic/z4.dmm +++ b/_maps/map_files/generic/z4.dmm @@ -35,10 +35,10 @@ "aI" = (/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/djstation) "aJ" = (/obj/machinery/door/airlock/glass{name = "Rest Room"},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/djstation) "aK" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/djstation) -"aL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/djstation) +"aL" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/djstation) "aM" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/djstation) "aN" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/djstation) -"aO" = (/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/djstation) +"aO" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/djstation) "aP" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; freerange = 1; listening = 0; name = "Pirate Radio Broadcast Channel"; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/djstation) "aQ" = (/obj/structure/table,/obj/item/weapon/paper/djstation,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/djstation) "aR" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/djstation) @@ -111,9 +111,9 @@ "cg" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/derelict/solar_control) "ch" = (/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "ci" = (/obj/structure/rack,/obj/item/weapon/melee/classic_baton,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) -"cj" = (/obj/structure/rack,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"cj" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel,/area/derelict/solar_control) "ck" = (/obj/structure/rack,/obj/item/clothing/head/helmet/swat,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) -"cl" = (/obj/structure/rack,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"cl" = (/obj/item/weapon/stock_parts/matter_bin,/turf/simulated/floor/plasteel{tag = "icon-damaged4"; icon_state = "damaged4"},/area/derelict/solar_control) "cm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "cn" = (/obj/machinery/door/window,/turf/simulated/floor/plasteel,/area/derelict/solar_control) "co" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) @@ -214,7 +214,7 @@ "ef" = (/obj/structure/table,/obj/item/weapon/rack_parts,/turf/simulated/floor/plasteel,/area/derelict/bridge) "eg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "eh" = (/obj/structure/window/fulltile,/turf/simulated/floor/plasteel,/area/derelict/bridge) -"ei" = (/obj/structure/table,/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor/plasteel,/area/derelict/bridge) +"ei" = (/obj/structure/table,/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/obj/structure/cable,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel,/area/derelict/bridge) "ej" = (/obj/structure/table,/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/derelict/bridge) "ek" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) "el" = (/obj/item/clothing/head/helmet/space/syndicate/black/engie,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) @@ -232,7 +232,7 @@ "ex" = (/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) "ey" = (/obj/machinery/porta_turret_cover,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) "ez" = (/obj/machinery/door/airlock/command{name = "E.V.A."; req_access = null; req_access_txt = "18"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) -"eA" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) +"eA" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/simulated/floor/plasteel,/area/derelict/solar_control) "eB" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) "eC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) "eD" = (/obj/structure/girder,/turf/simulated/floor/plating/airless,/area/space) @@ -248,7 +248,7 @@ "eN" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) "eO" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) "eP" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/derelict/solar_control) -"eQ" = (/obj/structure/table,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"eQ" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plasteel,/area/derelict/solar_control) "eR" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "eS" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) "eT" = (/obj/structure/grille,/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) @@ -260,7 +260,7 @@ "eZ" = (/obj/item/weapon/screwdriver,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "fa" = (/obj/item/stack/rods,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) "fb" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/item/stack/cable_coil/cut,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) -"fc" = (/obj/structure/table,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"fc" = (/obj/item/weapon/stock_parts/console_screen,/turf/space,/area/derelict/bridge/ai_upload) "fd" = (/turf/simulated/wall,/area/derelict/hallway/primary) "fe" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/derelict/bridge/access) "ff" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) @@ -359,7 +359,7 @@ "gU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) "gV" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel,/area/derelict/arrival) "gW" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/obj/item/weapon/airlock_electronics,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) -"gX" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) +"gX" = (/obj/structure/rack,/obj/item/weapon/circuitboard/autolathe,/obj/item/weapon/circuitboard/protolathe{pixel_x = -5; pixel_y = -3},/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) "gY" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) "gZ" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) "ha" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) @@ -368,7 +368,7 @@ "hd" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/medical) "he" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/space) "hf" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/space,/area/space) -"hg" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/derelict/medical/chapel) +"hg" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/derelict/medical/chapel) "hh" = (/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/derelict/medical/chapel) "hi" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/derelict/medical/chapel) "hj" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) @@ -378,7 +378,7 @@ "hn" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/derelict/arrival) "ho" = (/obj/structure/window/reinforced,/turf/space,/area/space) "hp" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/hallway/primary) -"hq" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) +"hq" = (/obj/structure/rack,/obj/item/weapon/circuitboard/circuit_imprinter,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) "hr" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) "hs" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) "ht" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) @@ -389,7 +389,7 @@ "hy" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) "hz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) "hA" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) -"hB" = (/obj/structure/closet/wardrobe/genetics_white,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"hB" = (/obj/structure/computerframe,/obj/item/weapon/circuitboard/rdconsole,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) "hC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/space) "hD" = (/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/space) "hE" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/space) @@ -418,7 +418,7 @@ "ib" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/derelict/arrival) "ic" = (/obj/structure/window/reinforced{dir = 1},/turf/space,/area/space) "id" = (/obj/structure/rack,/obj/item/weapon/circuitboard/smes,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) -"ie" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) +"ie" = (/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/space) "if" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) "ig" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) "ih" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/simulated/floor/plating/airless,/area/space) @@ -437,7 +437,7 @@ "iu" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel/airless,/area/space) "iv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel/airless,/area/space) "iw" = (/obj/structure/window/fulltile{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel/airless,/area/space) -"ix" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating/airless,/area/space) +"ix" = (/obj/item/weapon/stock_parts/manipulator,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/gravity_generator) "iy" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel/airless,/area/space) "iz" = (/obj/structure/window/fulltile,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/space) "iA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Toxins Research"; req_access_txt = "7"},/turf/simulated/floor/plasteel/airless,/area/derelict/arrival) @@ -481,17 +481,17 @@ "jm" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) "jn" = (/obj/machinery/vending/sovietsoda,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) "jo" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) -"jp" = (/obj/structure/table,/turf/simulated/floor/plasteel/airless,/area/space) +"jp" = (/obj/structure/rack,/obj/machinery/light/small{dir = 1},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "jq" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless,/area/space) "jr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel/airless,/area/space) "js" = (/obj/structure/lattice,/obj/item/stack/cable_coil/cut,/turf/space,/area/space) "jt" = (/obj/structure/girder,/turf/simulated/floor/plating,/area/derelict/arrival) "ju" = (/obj/structure/stool,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) "jv" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Access"; req_access_txt = "24"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) -"jw" = (/obj/structure/closet/wardrobe/orange,/turf/simulated/floor/plasteel/airless,/area/space) +"jw" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "jx" = (/obj/structure/window/fulltile{dir = 4},/turf/space,/area/space) "jy" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/derelict/arrival) -"jz" = (/obj/structure/closet/wardrobe,/turf/simulated/floor/plasteel,/area/derelict/arrival) +"jz" = (/obj/structure/rack,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/manipulator,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "jA" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/derelict/hallway/primary) "jB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel/airless,/area/space) "jC" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel/airless,/area/space) @@ -502,7 +502,7 @@ "jH" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/hallway/primary) "jI" = (/obj/structure/table,/obj/item/device/healthanalyzer,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) "jJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/space) -"jK" = (/obj/structure/closet/wardrobe/mixed,/turf/simulated/floor/plasteel,/area/derelict/arrival) +"jK" = (/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/space) "jL" = (/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) "jM" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/derelict/arrival) "jN" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"},/turf/simulated/floor/plating,/area/derelict/arrival) @@ -536,7 +536,7 @@ "kp" = (/obj/item/stack/rods,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/secondary) "kq" = (/obj/structure/door_assembly/door_assembly_mai{name = "airlock assembly"},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/secondary) "kr" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/derelict/bridge/ai_upload) -"ks" = (/obj/structure/closet,/turf/simulated/floor/plasteel,/area/derelict/solar_control) +"ks" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/constructable_frame/machine_frame,/obj/item/weapon/stock_parts/console_screen,/turf/simulated/floor/plating/airless,/area/derelict/gravity_generator) "kt" = (/obj/item/weapon/wirecutters,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/secondary) "ku" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) "kv" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/item/drone_shell,/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) @@ -558,7 +558,7 @@ "kL" = (/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload) "kM" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) "kN" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) -"kO" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) +"kO" = (/obj/machinery/light/small{dir = 4},/obj/item/weapon/stock_parts/matter_bin{pixel_x = -10; pixel_y = 5},/obj/item/weapon/stock_parts/matter_bin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/stock_parts/matter_bin,/turf/simulated/floor/plating/airless,/area/derelict/gravity_generator) "kP" = (/obj/structure/window/fulltile{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "kQ" = (/obj/structure/window/fulltile{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "kR" = (/turf/simulated/wall,/area/derelict/bridge/ai_upload) @@ -588,14 +588,14 @@ "lp" = (/obj/machinery/door/window,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) "lq" = (/obj/item/weapon/ore/slag,/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/gravity_generator) "lr" = (/obj/structure/rack,/obj/item/weapon/circuitboard/smes,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) -"ls" = (/turf/simulated/floor/plasteel{tag = "icon-damaged4"; icon_state = "damaged4"},/area/derelict/solar_control) +"ls" = (/obj/item/weapon/stock_parts/matter_bin,/turf/space,/area/space) "lt" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/turf/simulated/floor/plasteel/airless,/area/solar/derelict_aft) -"lu" = (/obj/structure/rack,/obj/item/weapon/stock_parts/capacitor,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"lu" = (/obj/effect/spawner/lootdrop/maintenance,/turf/space,/area/space) "lv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/derelict/gravity_generator) "lw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/derelict/gravity_generator) "lx" = (/obj/machinery/gravity_generator/main/station{on = 0},/turf/simulated/floor/plasteel/airless,/area/derelict/gravity_generator) "ly" = (/obj/item/weapon/screwdriver,/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/gravity_generator) -"lz" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/constructable_frame/machine_frame,/turf/simulated/floor/plating/airless,/area/derelict/gravity_generator) +"lz" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plasteel,/area/derelict/bridge) "lA" = (/obj/item/weapon/ore/slag,/turf/space,/area/space) "lB" = (/obj/structure/cable,/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/turf/simulated/floor/plasteel/airless,/area/solar/derelict_aft) "lC" = (/turf/simulated/floor/plasteel/airless,/area/derelict/gravity_generator) @@ -620,7 +620,7 @@ "lV" = (/turf/simulated/floor/mineral/bananium/airless,/area/space) "lW" = (/obj/structure/closet/crate,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/turf/simulated/floor/mineral/bananium/airless,/area/space) "lX" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/ore/bananium,/turf/simulated/floor/mineral/bananium/airless,/area/space) -"lY" = (/obj/structure/closet/secure_closet{name = "clown locker"; req_access_txt = "46"},/obj/item/clothing/shoes/clown_shoes/banana_shoes,/turf/simulated/floor/mineral/bananium/airless,/area/space) +"lY" = (/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) "lZ" = (/obj/structure/shuttle/engine/heater{color = "#FFFF00"; dir = 4; icon_state = "heater"},/obj/structure/window/reinforced{color = "#FFFF00"; dir = 8},/turf/simulated/floor/plating/airless{color = "#FFFF00"},/area/space) "ma" = (/obj/structure/shuttle/engine/propulsion{color = "#FFFF00"; dir = 8; icon_state = "propulsion_l"},/turf/space,/area/space) "mb" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/asteroid/airless,/area/space) @@ -642,7 +642,7 @@ "mr" = (/obj/machinery/light/small{dir = 4},/obj/structure/rack,/obj/item/stack/cable_coil/cut,/obj/item/stack/cable_coil/cut,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "ms" = (/obj/machinery/door/airlock/engineering{name = "Engineering Secure Storage"; req_access_txt = "10"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "mt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/derelict/gravity_generator) -"mu" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/gravity_generator) +"mu" = (/obj/structure/window/reinforced,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) "mv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) "mw" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) "mx" = (/turf/simulated/floor/plasteel,/area/derelict/gravity_generator) @@ -709,36 +709,43 @@ "nG" = (/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) "nH" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged1"},/area/derelict/atmospherics) "nI" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) -"nJ" = (/obj/structure/table,/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) +"nJ" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel,/area/derelict/bridge) "nK" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel/airless,/area/derelict/atmospherics) +"nL" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel,/area/derelict/bridge) "nM" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "nN" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "nO" = (/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"nP" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/stock_parts/matter_bin,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) +"nQ" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"nR" = (/obj/structure/table,/obj/machinery/light/small{dir = 4},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) "nS" = (/obj/structure/window/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"nT" = (/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating/airless,/area/space) "nU" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating,/area/derelict/bridge) "nV" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel,/area/derelict/bridge) "nW" = (/turf/space,/area/derelict/bridge/access) "nX" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) "nY" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) +"nZ" = (/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel/airless,/area/space) "oa" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "ob" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "oc" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) -"od" = (/obj/structure/closet,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/medical) +"od" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel,/area/derelict/arrival) "oe" = (/obj/machinery/light{dir = 1},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/derelict/medical) "of" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/space,/area/space) "og" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) "oh" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/medical) -"oi" = (/obj/structure/table,/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/derelict/medical/chapel) +"oi" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/derelict/medical/chapel) "oj" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/derelict/medical/chapel) "ok" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/derelict/medical/chapel) -"om" = (/obj/structure/table,/turf/simulated/floor/plating/airless,/area/derelict/medical) +"ol" = (/obj/structure/closet,/obj/structure/window/reinforced{dir = 8},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/medical) +"om" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) "on" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) "oo" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/space,/area/space) "op" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) "oq" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) "or" = (/obj/machinery/sleeper{tag = "icon-sleeper-open (EAST)"; icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) "os" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"ot" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"ot" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating/airless,/area/derelict/medical) "ou" = (/obj/machinery/door/poddoor{id = "derelict_gun"; name = "Derelict Mass Driver"},/turf/simulated/floor/plating,/area/space) "ov" = (/obj/structure/closet/l3closet,/turf/simulated/floor/plating/airless,/area/space) "ow" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/space,/area/space) @@ -748,34 +755,63 @@ "oA" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) "oB" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/stool/bed,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) "oC" = (/obj/structure/stool/bed,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"oD" = (/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "oE" = (/obj/machinery/door/airlock/medical{name = "Medical"},/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) "oF" = (/turf/simulated/wall/r_wall,/area/derelict/medical/chapel) -"oI" = (/obj/structure/closet,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) +"oG" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) +"oH" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/reagent_containers/glass/beaker,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"oI" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) "oJ" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) +"oK" = (/obj/item/weapon/reagent_containers/glass/beaker,/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) +"oL" = (/obj/structure/closet/wardrobe/genetics_white,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) "oM" = (/obj/machinery/door/airlock/command{name = "Teleporter Room"},/turf/simulated/floor/plasteel/airless,/area/derelict/medical/chapel) "oN" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) "oO" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) "oP" = (/obj/structure/girder,/turf/simulated/floor/plasteel/airless,/area/space) -"oQ" = (/obj/machinery/door/window,/turf/simulated/floor/plasteel/airless,/area/space) -"oR" = (/obj/structure/closet,/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) +"oQ" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) +"oR" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) +"oS" = (/obj/effect/decal/cleanable/dirt,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating/airless,/area/space) +"oT" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) +"oU" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel/airless,/area/space) +"oV" = (/obj/machinery/vending/hydroseeds,/turf/simulated/floor/plasteel/airless,/area/hallway/primary/port) "oW" = (/turf/simulated/wall,/area/derelict/atmospherics) "oX" = (/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) "oY" = (/turf/simulated/wall/r_wall,/area/derelict/atmospherics) +"oZ" = (/obj/structure/closet/wardrobe,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/simulated/floor/plasteel,/area/derelict/arrival) "pa" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) +"pb" = (/obj/item/weapon/stock_parts/manipulator{pixel_x = -15; pixel_y = 10},/obj/item/weapon/stock_parts/manipulator,/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) "pc" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Access"; req_access_txt = "24"},/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) +"pd" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) +"pe" = (/obj/structure/closet/wardrobe/mixed,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plasteel,/area/derelict/arrival) +"pf" = (/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/space) "pg" = (/turf/simulated/floor/plasteel/airless,/area/derelict/atmospherics) +"ph" = (/obj/machinery/door/window,/turf/simulated/floor/plasteel/airless,/area/hallway/primary/port) "pi" = (/obj/machinery/door/window{dir = 8},/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plasteel/airless,/area/space) +"pj" = (/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) "pk" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/derelict/atmospherics) +"pl" = (/obj/machinery/door/firedoor,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) +"pm" = (/obj/structure/closet/secure_closet{name = "clown locker"; req_access_txt = "46"},/obj/item/clothing/shoes/clown_shoes/banana_shoes,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/mineral/bananium/airless,/area/space) +"pn" = (/obj/effect/decal/cleanable/blood/gibs/old,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) +"po" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) +"pp" = (/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) "pq" = (/obj/structure/window/fulltile,/turf/space,/area/derelict/atmospherics) +"pr" = (/obj/structure/closet/wardrobe/orange,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/obj/item/weapon/shovel/spade,/obj/item/weapon/cultivator,/turf/simulated/floor/plasteel/airless,/area/space) "ps" = (/obj/structure/computerframe,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel/airless,/area/derelict/atmospherics) "pt" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/atmospherics) "pu" = (/obj/structure/lattice,/turf/space,/area/derelict/atmospherics) "pv" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) +"pw" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker{list_reagents = list("sacid" = 50)},/obj/item/weapon/paper/crumpled/bloody{desc = "Looks like someone started shakily writing a will in space common, but were interrupted by something bloody..."; info = "I, Victor Belyakov, do hereby leave my _- "; name = "unifinished paper scrap"},/obj/item/weapon/pen,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) "px" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/atmospherics) "py" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) +"pz" = (/obj/structure/stool,/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood/old,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) +"pA" = (/obj/machinery/atmospherics/components/unary/tank/air,/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) +"pB" = (/obj/item/ammo_casing/a357,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) "pC" = (/obj/structure/window/fulltile{dir = 8},/turf/space,/area/derelict/atmospherics) +"pD" = (/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,/obj/machinery/meter,/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) +"pE" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/cyan/visible{dir = 6},/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) "pF" = (/obj/structure/window/fulltile{dir = 5},/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) "pG" = (/turf/space,/area/derelict/atmospherics) +"pH" = (/obj/machinery/atmospherics/pipe/simple/cyan/hidden{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) "pI" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/secondary) "pJ" = (/obj/machinery/power/apc{dir = 1; name = "Worn-out APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel/airless,/area/derelict/atmospherics) "pK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel/airless{icon_state = "derelict9"},/area/derelict/hallway/secondary) @@ -800,6 +836,7 @@ "qd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) "qe" = (/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) "qf" = (/turf/simulated/floor/plating/airless,/area/derelict/se_solar) +"qg" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/components/binary/valve,/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) "qh" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) "qi" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) "qj" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/power/solar_control{id = "derelictsolar"; name = "Primary Solar Control"; track = 0},/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) @@ -817,9 +854,12 @@ "qv" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/space,/area/solar/derelict_aft) "qw" = (/obj/item/device/aicard,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/bridge/ai_upload) "qx" = (/obj/structure/rack,/obj/item/weapon/circuitboard/solar_control,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) -"qy" = (/obj/structure/rack,/obj/item/weapon/circuitboard/autolathe,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) +"qy" = (/obj/item/ammo_casing/a357{pixel_x = -5},/obj/item/ammo_casing/a357{pixel_x = 5; pixel_y = 6},/obj/item/ammo_casing/a357,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) "qz" = (/obj/machinery/porta_turret_cover,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) "qA" = (/obj/structure/table,/obj/item/device/flash/handheld,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) +"qB" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance{lootcount = 8; name = "8maintenance loot spawner"},/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) +"qC" = (/obj/item/weapon/storage/bag/ore,/turf/simulated/floor/mineral/bananium/airless,/area/space) +"qD" = (/obj/item/weapon/shovel,/turf/simulated/floor/mineral/bananium/airless,/area/space) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -875,84 +915,84 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLcpkLkLkLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbncqbPbqbqbqbqbvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLeFkLeOkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLbjbjbjbjbjbjblbjbjbjbjbjbjblbjbjbjbjbjbjbnfwePbObObPbqbFgxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLcpcphTeFcphUeykLkLkLeykLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLbnbpbpbpbpjabpbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLkLkLkLkLcpkLcpcpcpkLcpcpcpkLkLkLkLkLkLkLkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrbpksbHbqbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLkLkLkLkLcpkLcpcpcpkLcpcpcpkLkLkLkLkLkLkLkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrbpcjbHbqbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLkLeykLeykLkLkLkLkLkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrbpbpkUbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLcpcplacplfldeFcpkLkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrbpbplgcxlhbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLcpcpcpcpcpkLkLlpkLkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrbpksbqczlsbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLidcpnbcpmIkLkLlckrkrkLkLkLkLkLkLkLkLkLkLkLkLkLkrkrkrkrbpksbqcLcHbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLmIcpnpcpmIkLkLlckrkrkLkLlclclclblclcnamZlckLkLkrkrkrkrbpksbqcxlhbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcplfcpkLcplfcpkLcpldldcphTcplpeykLkLkXlclclckZlcnclblbndndnclclikLkLkrkrkrkrbpbqbqbHbqbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLcpcpcpcpcpkLkLlpkLkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrbpcjbqczclbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLidcpnbcpmIkLkLlckrkrkLkLkLkLkLkLkLkLkLkLkLkLkLkrkrkrkrbpeAbqcLcHbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLmIcpnpcpmIkLkLlckrkrkLkLlclclclblclcnamZlckLkLkrkrkrkrbpeQbqcxlhbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcplfcpkLcplfcpkLcpldldcphTcplpeykLkLkXlclclckZlcnclblbndfcnclclikLkLkrkrkrkrbpbqbqbHbqbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRlekReykLkLkLeykLkLkLeycpkLcpkLkLeFkLkLkLqzkrkrkLkLlilincqwnhndnclilikLkLkrkrkrkrbpbqbqbHbxbpbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRlekRkLkLkLkLkLkLkLkLkLkLkLqxkLqyhTmIkLkLkrkrkrkLkLnkljnlncnalbnllilckLkLkrkrkrkrbpbqbqbHbqbqbqnmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRgMaeaeaaaaaaaaaaaaaaaakLkLkLkLkLkLkLkLkLkrkrkrkLkLqzlmnqlilblilclilckLkLkrkrkrkrbpksbqbHbqbpbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRlekRkLkLkLkLkLkLkLkLkLkLkLqxkLgXhThqkLkLkrkrkrkLkLnkljhBncnalbnllilckLkLkrkrkrkrbpbqbqbHbqbqbqnmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRieaeaeaaaaaaaaaaaaaaaakLkLkLkLkLkLkLkLkLkrkrkrkLkLqzlmnqlilblilclilckLkLkrkrkrkrbpeQbqbHbqbpbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRaaaaaeaeaaaaaaaabjabababaebjaaaaaaaaaakLkLkLkLkLkLkLnrnsnsnsnsntkLkLkLkLkrkrkrkrbpbqbqbHbqbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaeaebwbwbwaeaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaanwkrkrkrkrkrkrkrkrbpbqbqbVbPbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaanwkrkrkrkrkrkrkrkrbpksbqbqbHbpbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaanwkrkrkrkrkrkrkrkrbpeQbqbqbHbpbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaecdcdcdcdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaanwkrkrkrkrkrkrkrkrbpbpbqnxbHbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaacvcQcPcQcQcdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaanycecececececececececececenzceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaedelqdAdedeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanychchcicjckclcenAlrlucechcmceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaacvcQcPcQixcdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaanycecececececececececececenzceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaedelqdAdedeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanychchcijpckjwcenAlrjzcechcmceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaedelylxdelAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanBcococRcoegnDcechchchcecenzceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacddAlClClDcQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacechchchchcmctcemqchmrcechcmceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaacdlClClClCdeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacecwcwcwcyezcececwmscwcecenEceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeblaaaacdmllnmmmpmocdaeaablaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaacechchchchcmcececuchchchchcmceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeblcCaeaecdlolwlvlwlzcdaeaecCblaeaeaeaaaaaaaaaaaaaacDcDblblblcecEchfecoftnNnMcococococonOceabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaecIcIcIcImnlCmtlCmucIcIcIcIaeaeaeaeaeaaaaaaaaaaaaaaaacDblblcecJcKnScJcJcecececececececececMbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIcIcNcIcOcdmzcdmAcIcIcIcIcIcIaeaeaaaaaaaaaacDaaaaaablblblcechchcmchchcScTcUcVcWcXcYcVcZdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIcIdbdcddmCmBmEmDmycddfdbdddbcIcIcIaeaaaaaaaaaaaaaacDaaaaaaaacecEchcFchchcSdhdidjdididididkdlabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdmdndodododbdpmmmxmGmFdqdbdbdbdrdscIblaaaaaaaaaaaaaaaaaaaaaaaacecJcKdtcJcJdudidinUnVdididjdidvdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaebljKaeaecdlolwlvlwkscdaeaecCblaeaeaeaaaaaaaaaaaaaacDcDblblblcecEchfecoftnNnMcococococonOceabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaecIcIcIcImnlCmtlCkOcIcIcIcIaeaeaeaeaeaaaaaaaaaaaaaalscDblblcecJcKnScJcJcecececececececececMbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIcIcNcIcOcdmzcdmAcIcIcIcIcIcIaeaeaaaaaaaaaacDaaluaablblblcechchcmchchcScTcUlzcWcXcYlzcZdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIcIdbdclYmCmBmEmDmycddfdbdddbcIcIcIaeaaaaaaaaaaaaaacDaaaaaaaacecEchcFchchcSdhdidjdididididkdlabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdmdnmudododbdpmmmxmGmFdqdbdbdbdrdscIblaaaaaaaaaaaaaaaaaaaaaaaacecJcKdtcJcJdudidinUnVdididjdidvdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdxdxdxdxdydfdzcIcImHcIdfdBdddBdBdfcIblaaaaaaaaaaaaaaaaaaaaaaaacechcudCchchdDdididididEdididFdGabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdfdBdBdBdHdcdbdIdBdfdBdBdbdcdcdBdBcIblaaaaaaaaaaaaaaaaaaaaaaaecechchdJdKdLdMdNdNdOdPdjdidididvabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIdBdcdddbdQdbdddbdfdfdBdbdbdbdbdddbcIblaaaaaaaaaaaaaaaaaaaaaeaecechchdCchchdRcVcVdidSdTdidTdUdVbjdWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIdbdddbdXdYdZeadfebdfdfecedeedBdcddcIblaeaaaaaaaaaacDaaaaaeaeaececececmcechcSefcVeheiejcTcTcVdldwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIdBdcdddbdQdbdddbdfdfdBdbdbdbdbdddbcIblaaaaaaaaaaaaaaaaaaaaaeaecechchdCchchdRcVnJdidSdTdidTdUdVbjdWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIdbdddbdXdYdZeadfebdfdfecedeedBdcddcIblaeaaaaaaaaaacDaaaaaeaeaececececmcechcSefcVeheiejcTcTnJnLdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIdBdbdXekelemdfdfdfdfdfeneneoeedbdccIblaeaeaablcecececececececececechcmcececeeqeqereqeqeqcMcMcMabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIdBdBesetdcdfdfdfdfdfdfdfdfeuevdBewcIblblaeaeblcekMgRexqAgWeAeBcecechcmcenWnWblaebjbjaableDbjbwabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIdBdBesetdcdfdfdfdfdfdfdfdfeuevdBewcIblblaeaeblcekMgRexqAgWnPeBcecechcmcenWnWblaebjbjaableDbjbwabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIcIcIcIdBdBesekdcdfdfdfdfdfdfdfdfeEevdfdBcIcIcIcIcIaacenXexexexexexexcecechcmcenWnWaeaaaaaaaaaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIdBeKeLdBdBeMeNdfeaaaaaaaaaaadfdfeEdydfdBdbdBdfcIcIaeceexexexexexexexcececeepcececeaeaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIeQdbeEeedBdcdBnYdfdfaaaaaaaaaadfdfeRnYdBeSeTeUdbdBcIcIceceeVceeWeWeWeWceexexeCexexcecDaaaaaaaaaaaaaaaabjbjblbwbjbwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdqddeYevdcdcdcdddfdfaaaaaaaaaadfdfeZdfdBfafbeUdbfccIcIfdhpimimilililileHeGeGeIexeJceaeaeaaaaaaaaaaaaaabjbjblbwbjeDbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcInQdbeEeedBdcdBnYdfdfaaaaaaaaaadfdfeRnYdBeSeTeUdbdBcIcIceceeVceeWeWeWeWceexexeCexexcecDaaaaaaaaaaaaaaaabjbjblbwbjbwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdqddeYevdcdcdcdddfdfaaaaaaaaaadfdfeZdfdBfafbeUdbnRcIcIfdhpimimilililileHeGeGeIexeJceaeaeaaaaaaaaaaaaaabjbjblbwbjeDbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdBdBeYevdBddeafhdfdfaaaaaaaaaadfdfdffidfdBdbfjdddBfkfkfdflfmfffgfgfgfncekVexeCexexceaaaaaaaaaaaaaabjbjbjbkblbwbjbwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIdBfodydbdcfpoadfdfaaaaaaaaaadfdfobfqdBdBeceNdBcIfkfrfshpfufffgfvfgfnceexexeXexexceaaaaaaaaaaaabjbjbjbjfxblbwfybwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIcIcIdBdBesdfdfdbdfdfdfdfdfdfdfdffzdcdccIcIcIcIfkflfdfdfdfAfdfdfdfdfdfdfdcecececeaaaabjbjbwbjbjfybjfBbkblbwbkeDbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIcIdbfCfDdfdbdddfdfdfdcdbdfdffEfzdddBcIcIcIaeaeflfdfffFfFfdfgfGfHfdjZfFceceaaaeaebjbjfxbwbjblbkfxfyfIblbwbkbwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIcIcIdBdBesdfdfdbdfdfdfdfdfdfdfdffzdcdccIcIcIcIfkflfdfdfdfAfdfdfdfdfdfdfdcecececeaaaabjbjbwbjbjfynTfBbkblbwbkeDbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIcIdbfCfDdfdbdddfdfdfdcdbdfdffEfzdddBcIcIcIaeaeflfdfffFfFfdfgfGfHfdjZfFceceaaaeaebjbjfxbwbjblbkfxfyfIblbwnZbwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIdddcfJdfdfdbfKdbdcdddodpdofKfLdcdccIcIaaaafrhtfdfffFfffffgfgfgfdfdaaaeaebjaafRbjbkbkbwbjfNfNfNfNfNfNfOfOfObjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYfYfYfYfYfYfYfYfYfYfYfYfYaaaaaaaaaaaaaaaaaaaaaaaadgdfdgaeaefDecevdBdBdBfPdxdxdydbdbdBcIcIaafFfMfmfdfgfgfgfffQfgfdfdfdgcgcbwbwbwfRfOfOfOfOfOfOfSfTfUfVfUfWfXfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYgigigigiggggggggggghgifYaaaaaaaaaaaaaaaaaaaafZaadfdfgaaeaedfgbdBdbdbfadBdBdbdcdddBdBcIcIaafFfFfmfdfdfdfgfdfdfdfdfdfdbwfxbjbjfxfxgdgdgegegffOfSfSfSfUfUfXfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYgigigigiggggggggggghgifYaaaaaaaaaaaaaaaaaaaafZaadfdfgaaeaedfgbdBdbdbfadBdBdbdcdddBdBcIcIaafFfFfmfdfdfdfgfdfdfdfdfdfdbwfxbjbjfxfxgdgdgegegffOodfSodfUfUfXfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYfYfYgigKggggggfYfYgEfYfYfYfYfYgjgkgkgkgjglgmgngogjgpaegqaedBdBdbdcdcdcdbdBdBdbdccIcIcIcIaaflfmfffdfgfufffufdfufugrfubjfxfxfxbjfxgegdgfgfgegsfUfUfUfUfUfUfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagqfYiPfYfYfYfYfYgPfYgQggghggggggfYgtgtgtgugtodocgngnoeaeaeaeaecIcIdBgydddbdBcIcIcIcIcIcIaeaefFgzfmfffgfgfffFfufugrfufFgAbwbwgBgBgCgBfNfNfNfNfNfNfUfUgDfUfUfUfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofgXgYgZgYoggYgZgYfYgQgggQgggQggfYgFgtgtgtgtgGgvgwgnohgngnaeaecIcIcIcIdfcIcIcIcIcIcIaeaabjfdhtfmfffffdfgfffffFfkfkfkfkfkaeaeaeaaaaaagHfygHbjcBfNfSfSfUfSgIfUgJfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofhgojoiokhihhhihhfYgQgggQgggQgggEgtgtgtgtgtgtgvonomgngngnaaaeaecIcIgLhudfcIcIaeaeaeaaaabjfdfmfmhvfffdfdfdfdfufkfIfxfIgMaaaeaaaaaaaaaaaagHaegMfNgNgNfUgNgOfUfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahooohqhrhshrgZgYgZgYfYgQopgQoqgQggfYorgtgtgtgtotosgvgwgngngnaaaaaeaecIcIcIcIcIaeaeaaaagSgSgTfdffgUfffgfdfgfufffufkfxgMfxfxaaaeaaaacDaaaaaaaagMaefNfUfUfUfUgVfSfSfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagqfYiPfYfYfYfYfYgPfYgQggghggggggfYgtgtgtgugtolocgngnoeaeaeaeaecIcIdBgydddbdBcIcIcIcIcIcIaeaefFgzfmfffgfgfffFfufugrfufFgAbwbwgBgBgCgBfNfNfNfNfNfNfUfUgDfUfUfUfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofomgYgZgYoggYgZgYfYgQgggQgggQggfYgFgtgtgtgtgGgvgwgnohgngnaeaecIcIcIcIdfcIcIcIcIcIcIaeaabjfdhtfmfffffdfgfffffFfkfkfkfkfkaeaeaeaaaaaagHfygHbjcBfNfSfSfUfSgIfUgJfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofhgojoiokhihhhihhfYgQgggQgggQgggEgtgtgtgtgtgtgvonotgngngnaaaeaecIcIgLhuoDcIcIaeaeaeaaaabjfdfmfmhvfffdfdfdfdfufkfIfxfIgMaaaeaaaaaaaaaaaagHaegMfNgNgNfUgNgOfUfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahooooGhrhshrgZgYgZgYfYgQopgQoqgQggfYorgtgtgtgtoHosgvgwgngngnaaaaaeaecIcIcIcIcIaeaeaaaagSgSgTfdffgUfffgfdfgfufffufkfxgMfxfxaaaeaaaacDaaaaaaaagMaefNfUfUfUfUgVfSodfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoubUhKhKhKhLhihhhihhfYgQgggQgggQgggEgtgtgtgtgthagthbgvhcgwgngnhdgjgjgjgjovheaeaaaeaahfaaaabjfdfdhvfffdfdfFfgfFfufkfxgHaaaaaaaeaaaaaaaaaaaaaaaafIfNfOfUfUfOfOfOfOfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicowieifigifgZoxoggYfYgQgggggggKggfYgtgtgtgtgthjgthkgtgvgvgwgngnhlgnhlgSbjbjbjaaaeaeaeaeaaoyfdfghmfgfgfdfgfgfgfgfkgMfxaaaaaaaeaaaaaaaaaaaaaaaafNfNfNfUfUfOhnhnhnfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofhghhhiozhihhhihhfYfYfYfYfYfYfYfYgFgtgtgthxhzhwhyhwhygvgwhAgwgjhBgjfIbjbjbjhChDbjbjbjhEhFfdfghGfgfgfdfgoAfghHfkfkfkbjaeaebjaebjaeaeaebjaeaebjbjfNfUfUfUfUfUhIfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofgXgYgZiEgZgYgZgYhMhNhNhNhOhNhJfYorgtgtgthRoBhSoCgtgjhPoEgjgjgjgjgjgthFfIfyhVbjfybjbjfIhFfdfghGfghHfdfgfgfgfFfgfgfkfdhWhWbwhXaaaaaaaaaeaaaaaaaefNhYfUfUfUfUhZfOiaibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicowoIifigifgZoxoggYfYgQgggggggKggfYgtgtgtgtgthjgthkgtgvgvgwgngnhlgnhlgSbjbjbjaaaeaeaeaeaaoyfdfghmfgfgfdfgfgfgfgfkgMfxaaaaaaaeaaaaaaaaaaaaaaaafNfNfNfUfUfOhnhnhnfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofhghhhiozhihhhihhfYfYfYfYfYfYfYfYgFgtgtgthxhzhwhyhwhygvgwhAoKgjoLgjfIbjbjbjhChDbjbjbjhEhFfdfghGfgfgfdfgoAfghHfkfkfkbjaeaebjaebjaeaeaebjaeaebjbjfNfUfUfUfUfUhIfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofomgYgZiEgZgYgZgYhMhNhNhNhOhNhJfYorgtgtgthRoBhSoCgtgjhPoEgjgjgjgjgjgthFfIfyhVbjfybjbjfIhFfdfghGfghHfdfgfgfgfFfgfgfkfdhWhWbwhXaaaaaaaaaeaaaaaaaefNhYfUfUfUfUhZfOiaibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagqoFoFoFoFoFoFoFoFoFoFoFoFfYfYhQfYfdfdfdfdfdfdfdfdfdfdiiijfdfdfdfdfdfdfdfdfdfdfyhFhFhFfyoyfdfgikilililililimilililinilihioihiqhWaabwbwirbwbwbwgcfNfOfUfUfUfUfUisgDisaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablfIbjaeaaaaaaaeaeaakWoFfdoIipjAfgfgitfgoIfgfgfdoJfghGfgfgfgfdfgfgfgfgfgfdfdfdfdfdfdfdfdfdfghGfgfgfdfgfffgfgfFfgfkfdgBbwiubjiviwixiyizivihiviviAiBiCiDgDfUfUfOiaibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablfBaaaaaaaaaaaaaebjfIoMfgfFfFiGoNfgfgfgfgoOfgfdiFfghGfgfghHfdiFoNfgoOfgfdfdfdfdfgfgfgfgfgfghGfgfgfdfgoOfffffgiIfkeDaeaaiJiJiJiKeDbwaaiLiLiJiMfNfOfUiNfUfUiOfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjaaaaaaaaaaaabjaebjoFfdhtffiZiHjhjhjhjhjhjhjOjhjhjTfgfgfgfdfgfgfgfgfgfgfgitfgiRilililililjUjVfgfdfgfgfgfgfgfgfkeDaeaaaaaaaaaaaaaaaaaaaaaaaagefOfUfOfUfUiUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabloFfdfffFfdfdfdfgfdfdfdiVfdfgfgiWilililiXililiYililililililiSfgfgfgfgfgfghGfkfkfkfkiTfffdoPbwaeaaaaaaaaaaaaaaaaaaaaaaaajbjcfOfUfOfOfOfOfOfNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdfFfmfdjditfgfdjditfgfdjejejejfiVjgfdiFfghGfgfgfgfgfgfgfgfkfkfkfkfkfkjWfkoQbkfkfdfdfdiJaaaaaaaaaaaaaajiaaaaaeaaaeaefOjjjkfUfUhIjkfUfNfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffdjloNjmfdjloNjlfdjnfgfgfgfgfgfdfgfgjofgfgfgfgfgfgfgfkbkbkjpbkbkkabkbkblblbwbwbwfyaaaadWaaaaaaaaaaaaaejsjsaeaefOjtfUfUgDfUfUfUfUfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaefdfdfdfdfdfdfdfdfdfgfgoNjufgfgfdfdfdfdfdfdfdfdfdjvfdfkbjbjbjbjbkjqkdbkbljpbkjwbwbjaeaaaeaeaeaaaaaaaeaeaeaaaeaajxjyfUfUfUfUgDfUjzfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefFfFfFfFoJjAoRjAfdfgjujljljufgfdpgoXmvoXmwoXoXoWoXoWoYaaaaaedwbjbkjBjCjDbkbkjEbwaebwaeaecDaeaeaeaeaeaaaeaaaaaajxjyjtfUfUfUfUfUfUfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaefFfFjAjGfgjHfdiFfgjIjlfghHfdpamSoXmWmwoXoXoWpcoWoYaaaeaeaeaebjjrbkjJbkjEjEbwaeaaaaaaaaaeaeaeaaaeaaaaaeaaaajxjyfUfUfUfUfUfUjKfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaefFfFfFjAfgfdfgfgjljlfgfgfdmYmXnemWmwoXpgoWpgoWoYaaaeaaaaaabjkdbkjLbkjEjEbwaeaeaaaaaeaeaaaaaaaaaaaaaaaaaajxjMjNjMiaiaiaiaiafNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablfIbjaeaaaaaaaeaelukWoFfdoRipjAfgfgitfgoRfgfgfdoJfghGfgfgfgfdfgfgfgfgfgfdfdfdfdfdfdfdfdfdfghGfgfgfdfgfffgfgfFfgfkfdgBbwiubjiviwoSiyizivihiviviAiBiCiDgDfUfUfOiaibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablfBluaaaaaaaaaaaebjfIoMfgfFfFiGoNfgfgfgfgoOfgfdiFfghGfgfghHfdiFoNfgoOfgfdfdfdfdfgfgfgfgfgfghGfgfgfdfgoOfffffgiIfkeDaeaaiJiJiJiKeDbwaaiLiLiJiMfNfOfUiNfUfUiOfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjaaaaaaaaaaaabjaebjoFfdhtffiZiHjhjhjhjhjhjhjOjhjhjTfgfgfgfdfgfgfgfgfgfgfgitfgiRilililililjUjVfkfkfkfgfgfgfgfgfkeDaeaaaaaaaaaaaaaaaaaaaaaaaagefOfUfOfUfUiUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabloFfdfffFfdfdfdfgfdfdfdiVfdfgfgiWilililiXililiYililililililiSfgfgfgfgfgfghGfkoQfkfkiTfffdoPbwaeaaaaaaaaaaaaaaaaaaaaaaaajbjcfOfUfOfOfOfOfOfNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdfFfmfdjditfgfdjditfgfdjejejejfiVjgfdiFfghGfgfgfgfgfgfgfgfkfkfkfkfkfkjWfkphoVfkfdfdfdiJaaaaaaaaaaaaaajiaaaaaeaaaeaefOjjjkfUfUhIjkfUfNfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffdoToNjmfdoToNoTfdjnpnpnfgfgfgfdfgfgjofgfgfgfgfgfgfgfkbkbkoUbkbkkabkbkblblbwbwbwfyaaaadWaaaaaaaaaaaaaejsjsaeaefOjtfUfUgDfUfUfUfUfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaefdfdfdfdfdfdfdfdfdfgpppojufgfgfdfdfdfdfdfdfdfdfdjvfdfkbjbjbjbjbkjqkdbkbloUbkprbwbjaeaaaeaeaeaaaaaaaeaeaeaaaeaajxjyfUfUfUfUgDfUoZfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefFfFfFpboJjApdjAfdfgpzpwjljufgfdpgoXmvoXmwpApAoWoXoWoYaaaaaedwbjbkjBjCjDbkbkjEbwaebwaeaecDaeaeaeaeaeaaaeaaaaaajxjyjtfUfUfUfUfUfUfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaefFfFjAjGfgjHfdiFpBjIjlfghHfdpamSoXmWpEpDpHoWpcoWoYaaaeaeaeaebjjrbkjJbkjEjEbwaeaaaaaaaaaeaeaeaaaeaaaaaeaaaajxjyfUfUfUfUfUfUpefNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaefFfFfFjAfgfdfgfgjljlfgfgfdmYmXnemWqgoXpgoWpgoWoYaaaeaaaaaabjkdbkjLbkjEjEbwaeaeaaaaaeaeaaaaaaaaaaaaaaaaaajxjMjNjMiaiaiaiaiafNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafFfFfFfdfgfgjujufgfgfdoXpgoXnfnfpgpgoWpcoWoYaaaeaeaejsbjbjbkpibkbkbkjPjQjRblblaeaaaaaaaaaaaaaaaaaaaaaajSgDhVbjbjbjbjaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaefFiQfgfgfgfgfgfgfdngoXoXoXpgoXpkoWpcoWoYblblblblaaaaihblblblblbljRkojRaabjaaaaaaaaaaaaaaaadWaaaaaajXjNjYbwaaaabwaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaefFiQqyfgfgfgfgfgfdngoXoXoXpgoXpkoWpcoWoYblblblblaaaaihblblblblbljRkojRaabjaaaaaaaaaaaaaaaadWaaaaaajXjNjYbwaaaabwaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefdfdfdfdfdfdiVfdjZnioXoXoXoXnjnnpxpxnopqaaaeaaaeaaaaaaaebjbkbkbkjRkpjRaabwaaaaaaaaaaaaaaaaaaaaaaaakbkcaaaaaaaaabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaafFfFgrfffgjHfdpsnuoXoXoXpgptoXoXpqpuaeaefIblcDaaaaaebjihbjkdkqktkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaafFfmpvfgfgfdnvpgoXoXoXpgoXoXpxnCpqaeaeaefyaeaeaeaeaabjbjbkjRkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaafFfmpvfgfgfdnvpgoXoXoXpgoXoXpxnCpqaeaeaepfaeaeaeaeaabjbjbkjRkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafFkgfFffpyfgfdnGnFpgoXpgoXoXoXpxnCoWaaaaaeaeaaaaaaaeaaaabjbkjRkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaeaafFfFfFfgfgfmfdoXpgoXoXnHpgoXoXnCnjoWfIaaaeblblaaaaaeaeaeblbljRkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaeaefdfFfdfdfdfdpgoXpgoXnCnHoXnonHnjpCfIaaaebjbjaaaaaeaaaaaabjjPkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafFfFfFfffmfgfdoXnInfoXoXoXnJoXnjpFpuaaaaaebwaaaaaaaeaaaabjbkjPkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaaaepvfFfFfffdoWoWpgnCoXpgoXoXoWoWpuaeaebwbwaeaeaeaebjbjbkbkjPkfjRjPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaeaefdfFfdfdfdfdpgoXpgoXnCnHoXnonHnjpCfIluaebjbjaaaaaeaaaaaabjjPkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafFfFfFfffmfgfdoXnInfoXoXoXqBoXnjpFpuaaaaaebwaaaaaaaeaaaabjbkjPkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaaaepvfFpjfffdoWoWpgnCoXpgoXoXoWoWpuaeaebwbwaeaeaeaebjbjbkbkjPkfjRjPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaafFfFfFfmfgfdpGpGoWnKnCnCoXoXoWpGpGaaaaaabwaaaaaabjbkbkbkbkjPkfkhkijPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaebwjPjQjPjPjPjPkjjPjPoWjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPkkkhkhkhklaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaekmkhkhkhknpIkhkhkhpJkxpKpMpLpOpNpQpPpRkxkxkxkxkxkxkxkxkxkxkxpSkxkykmkhkhkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaekmkmkmkhkhkhkhkhkhkhkhkzkAkBkCkDkEkFkGkhkhkhkhkhkhkhkhkhkhkhkfkhpTkhkhkhkeaaaaaaaaaakbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaekHkIkJkJkJjPkJkJkJkJkJjPkJkJkJkJkJjPkJkJkJkJkJjPkJkJkJkJjPkfkmkmkhkhkhkKhohohoaaaaaahfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjababababababababababbwabababababdwdwdwabababblababababpUpVpUkmkhkhkmkNkOkPkQkmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjababababababababababbwabababababdwdwdwabababblababababpUpVpUkmkhkhkmkNplkPkQkmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaaaapUpWpUkSkSjRkTjRkTjRicicicaaaaaakbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmbjbjpUpYpXpZpUqaqajRkYjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaebjpUqbpUqdqcqekujRkYjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1035,11 +1075,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlRlRlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlRlRaaaalSlSlSlTlTlSlSlSlSlSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlRlSlSlSlRlUlVlVlWlWlXlYlZmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlRlSlSlSlRlUlVlVlWlWlXpmlZmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlQlQmblVlVlVlVlVmclVlZmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlQlQmdmelVmfmclVmclVmclZmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQmglVmhlVmilVlUlVlVlVmclZmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlSlSlSlVmjlVlVmkmklWlVlZmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlSlSlSqCmjlVlVmkmklWqDlZmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlSlSlSlTlTlSlSlSlSlSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQaalQlQlQlQlQlRlRlQlQlQlQlQlQlQlQlQlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/generic/z5.dmm b/_maps/map_files/generic/z5.dmm index 732313e5b76..09ac6b41d04 100644 --- a/_maps/map_files/generic/z5.dmm +++ b/_maps/map_files/generic/z5.dmm @@ -394,14 +394,14 @@ "hD" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/obj/machinery/light,/turf/space,/area/mine/west_outpost) "hE" = (/obj/structure/table,/turf/simulated/floor/carpet,/area/mine/living_quarters) "hF" = (/turf/simulated/floor/carpet,/area/mine/living_quarters) -"hG" = (/obj/machinery/door/airlock{id_tag = "miningdorm1"; name = "Room 1"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) +"hG" = (/obj/machinery/door/airlock{id_tag = "miningdorm1"; name = "Room 1"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) "hH" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "hI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel,/area/mine/living_quarters) "hJ" = (/obj/structure/disposalpipe/segment,/turf/simulated/mineral/random,/area/mine/unexplored) "hK" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm2"; 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) "hL" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/living_quarters) "hM" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/west_outpost) -"hN" = (/obj/machinery/door/airlock{id_tag = "miningdorm2"; name = "Room 2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) +"hN" = (/obj/machinery/door/airlock{id_tag = "miningdorm2"; name = "Room 2"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) "hO" = (/turf/space,/area/mine/explored) "hP" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) "hQ" = (/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/mine/west_outpost) @@ -411,7 +411,7 @@ "hU" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/west_outpost) "hV" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/asteroid/airless,/area/mine/west_outpost) "hW" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"hX" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"hX" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) "hY" = (/obj/machinery/vending/cigarette,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) "hZ" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) "ia" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm3"; 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) @@ -431,7 +431,7 @@ "io" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) "ip" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) "iq" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"ir" = (/obj/machinery/door/airlock{id_tag = "miningdorm3"; name = "Room 3"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) +"ir" = (/obj/machinery/door/airlock{id_tag = "miningdorm3"; name = "Room 3"},/turf/simulated/floor/plasteel,/area/mine/living_quarters) "is" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel,/area/mine/living_quarters) "it" = (/obj/machinery/recharge_station,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters) "iu" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/plasteel,/area/mine/living_quarters) @@ -711,7 +711,8 @@ "nI" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_z5"; name = "south of asteroid"; turf_type = /turf/space; width = 18},/turf/space,/area/space) "nJ" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/brute{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/mine/living_quarters) "nK" = (/obj/machinery/atmospherics/pipe/simple,/obj/item/weapon/storage/box/lights,/turf/simulated/floor/plating,/area/mine/living_quarters) - +"nL" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -886,9 +887,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacacacacaeac aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababacacacacacacacacacacacacacacacababafafafafafhohohohodhgWdhbGbGbGbGbGbGbGafafababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacachHacachwhwhwhwhIhwbGbGafafafafafaaaaaaaaaaaaaaaaaaaaaaafafafafafafaiaiafafafafafbGewewbGbGbGbGbGbGafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacacacacacacacacacacacabababababababafhobGbGdhbGdhbGbGbGbGbGbGbGbGafababacacacacacacacacacacacacacaeacacacacacacacacacacacacacacababababababacacacacacacacacacacacacacacacacacacacachJacachwhAhKhwhChLbGbGbGbGbGbGafafaaaaaaaaaaaaaaaaaaaaafafafafafafafafafafafafafbGewewbGbGbGbGbGbGbGafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababacacacacacacacacacacacacacacababababababafbGbGbGbGbGbGbGbGhMhMhMbGbGbGafababacacacacacacacacacacacacacacacacacacacacacacacacacacababababababababababababacacacacacacacacacacacacacacacachJacachwhEhFhNhChLbGbGbGbGbGbGbGbGbGaaaaaaaaaaaaaaaaaahOafafafafafafafafafafafbGbGewewbGbGbGbGbGbGbGbGbGafafafafaiaiaiaiaiaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababacacacacacacacacacacacacacababafafafafafafbGbGbGbGbGbGbGbGhPhQhRbGbGbGafababababacacacacacacacacacacacacacacacacacacacacacabababababafafafafafafafabababababababacacacacacacacacacachwhwhShwhwhwhwhwhwhChLbGbGbGbGbGbGbGbGbGbGbGaaaaaaaaaaaaaaaaaaafafafafafafafbGbGbGbGgOdYdYdZbGbGbGbGbGbGbGbGbGafafafafafaiaiaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababacacacacacacacacacacacacabafafbGbGhThThThThThThUhUhUhUhThThThThVbGbGafababababacacacacacacacacacacacacacacacacacacacacacababababafafbGbGbGbGbGafafafafafabababababababacacacachwhwhwhWhXhYhZhwhAiahwhIhwhwhwhLhLhLhwbGbGbGbGbGbGaaaaaaaaaaaaaaaaaaafafafafafbGbGbGbGbGdUeleldWbGbGbGbGbGbGbGbGbGafafafafafaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababacacacacacacacababafbGbGbGhTibicidhUieifigihiihUijikildZbGbGafafafafababababababacacacacacacacacacacacacacacabababababafafbGbGbGbGbGbGbGbGbGbGafafafafafabababababacachwiminioipioiqhwhEhFirhChwisitiuiuiuhLbGbGbGbGbGbGbGaaaaaaaaaaaaaaaaaaafafafbGbGbGbGbGbGbGewiviwixixiyiybGbGbGbGbGbGafafafafafaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababacacacacacacacacacacacacacababafafafafafafbGbGbGbGbGbGbGbGhPhQhRbGbGbGafababababacacacacacacacacacacacacacacacacacacacacacabababababafafafafafafafabababababababacacacacacacacachwhwhwhwhShwhwhwhwhwhwhChLbGbGbGbGbGbGbGbGbGbGbGaaaaaaaaaaaaaaaaaaafafafafafafafbGbGbGbGgOdYdYdZbGbGbGbGbGbGbGbGbGafafafafafaiaiaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababacacacacacacacacacacacacabafafbGbGhThThThThThThUhUhUhUhThThThThVbGbGafababababacacacacacacacacacacacacacacacacacacacacacababababafafbGbGbGbGbGafafafafafabababababababacacacachwiminhWhXhYhZhwhAiahwhIhwhwhwhLhLhLhwbGbGbGbGbGbGaaaaaaaaaaaaaaaaaaafafafafafbGbGbGbGbGdUeleldWbGbGbGbGbGbGbGbGbGafafafafafaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababacacacacacacacababafbGbGbGhTibicidhUieifigihiihUijikildZbGbGafafafafababababababacacacacacacacacacacacacacacabababababafafbGbGbGbGbGbGbGbGbGbGafafafafafabababababacachwnLioioipioiqhwhEhFirhChwisitiuiuiuhLbGbGbGbGbGbGbGaaaaaaaaaaaaaaaaaaafafafbGbGbGbGbGbGbGewiviwixixiyiybGbGbGbGbGbGafafafafafaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababacacacacacacababafbGbGbGhTizijiAhUiBiBiBiBiCiDijikiEiFbGbGbGbGbGafafafabababababababacacacacacacacacacacacabababafafafbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGafafabababababachwiGioiHiIiJiKhwhwhwhwhChwisiLiLiLiMhLbGbGbGbGbGbGbGaaaaaaaaaaaaaaaaaabGbGbGbGbGbGbGbGgPgsgQiyiNiOiPiPiybGiQbGbGbGbGafafafafafaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaababababababababacacacababafbGbGbGhTiRijijiSijijijijiThUiUiVhUdWbGbGbGbGbGbGbGafafafafabababababacacacacacacacacababababafafbGbGbGbGbGbGbGbGbGbGgOdZbGbGbGbGbGbGafafafafababachwiWioiXioiYioiZiMjajbjchwjdiLjeiLjfhLbGbGbGbGbGbGaaaaaaaaaaaaaaaaaaaaalaabGbGbGbGbGjgjhjijiiyjjjkjljmiyiyiyiybGbGbGbGafafafafaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababafafbGbGhTjnijjojpjqjrjsijjthThThThThTgOdZbGbGbGbGbGbGbGbGafafafabababacacacacacacacacabababafafbGbGgPgsgsgsgsgsgsgsgsgUgVgsgsgsgsflbGbGbGbGafafababhwhwhwhwhwhwhwhLjujvhLjuhwhwhwhwhwjwhwhwhLhLbGbGaaaaaaaaaaaaaaaaaaaaaaalaaaaaabGbGjijijxjyjzjAjBjCjDjEixjFjGixdZbGbGbGcsafafafafafaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index 55c3a043756..7ceb4c975c9 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -50,11 +50,6 @@ Pipelines + Other Objects -> Pipe network /obj/machinery/atmospherics/proc/atmosinit() return -//object initializion. done well after air is setup (build_network needs all pipes to be init'ed with atmosinit before hand) -/obj/machinery/atmospherics/initialize() - ..() - build_network() //make sure to build our pipe nets - /obj/machinery/atmospherics/proc/SetInitDirections() return @@ -177,11 +172,9 @@ Pipelines + Other Objects -> Pipe network var/turf/T = loc level = T.intact ? 2 : 1 atmosinit() - initialize() var/list/nodes = pipeline_expansion() for(var/obj/machinery/atmospherics/A in nodes) A.atmosinit() - A.initialize() A.addMember(src) build_network() diff --git a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm index 0064bad9fe5..9cecf78413f 100644 --- a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm @@ -149,9 +149,6 @@ Acts like a normal vent, but has an input AND output. ..() if(frequency) set_frequency(frequency) - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/initialize() - ..() broadcast_status() /obj/machinery/atmospherics/components/binary/dp_vent_pump/receive_signal(datum/signal/signal) diff --git a/code/ATMOSPHERICS/components/components_base.dm b/code/ATMOSPHERICS/components/components_base.dm index 70a46e507e8..78bd351c9f4 100644 --- a/code/ATMOSPHERICS/components/components_base.dm +++ b/code/ATMOSPHERICS/components/components_base.dm @@ -81,7 +81,7 @@ Pipenet stuff; housekeeping var/obj/machinery/atmospherics/N = nodes["n[I]"] if(N) N.disconnect(src) - N = null + nodes["n[I]"] = null nullifyPipenet(parents["p[I]"]) ..() @@ -111,7 +111,7 @@ Pipenet stuff; housekeeping if(reference == nodes["n[I]"]) if(istype(nodes["n[I]"], /obj/machinery/atmospherics/pipe)) qdel(parents["p[I]"]) - parents["p[I]"] = null + nodes["n[I]"] = null break update_icon() @@ -121,8 +121,7 @@ Pipenet stuff; housekeeping if(reference == parents["p[I]"]) var/datum/pipeline/P = parents["p[I]"] P.other_airs -= airs["a[I]"] - P = null - break + parents["p[I]"] = null /obj/machinery/atmospherics/components/returnPipenetAir(datum/pipeline/reference) for(var/I = 1; I <= device_type; I++) @@ -132,15 +131,13 @@ Pipenet stuff; housekeeping /obj/machinery/atmospherics/components/pipeline_expansion(datum/pipeline/reference) if(reference) for(var/I = 1; I <= device_type; I++) - if(nodes["n[I]"]) - if(parents["p[I]"] == reference) - return list("n" = nodes["n[I]"]) - - var/list/obj/machinery/atmospherics/return_nodes = list() - for(var/I = 1; I <= device_type; I++) - return_nodes += nodes["n[I]"] - - return return_nodes + if(parents["p[I]"] == reference) + return list(nodes["n[I]"]) + else + var/list/obj/machinery/atmospherics/return_nodes = list() + for(var/I = 1; I <= device_type; I++) + return_nodes += nodes["n[I]"] + return return_nodes /obj/machinery/atmospherics/components/setPipenet(datum/pipeline/reference, obj/machinery/atmospherics/A) for(var/I = 1; I <= device_type; I++) @@ -154,10 +151,9 @@ Pipenet stuff; housekeeping return parents["p[I]"] /obj/machinery/atmospherics/components/replacePipenet(datum/pipeline/Old, datum/pipeline/New) - for(var/datum/pipeline/P in parents) - if(Old == P) - P = New - break + for(var/I = 1; I <= device_type; I++) + if(parents["p[I]"] == Old) + parents["p[I]"] = New /obj/machinery/atmospherics/components/unsafe_pressure_release(var/mob/user, var/pressures) ..() @@ -199,7 +195,6 @@ Helpers */ /obj/machinery/atmospherics/components/proc/update_parents() - for(var/P in parents) - var/datum/pipeline/parent = parents["[P]"] - if (parent && istype(parent)) - parent.update = 1 \ No newline at end of file + for(var/I = 1; I <= device_type; I++) + var/datum/pipeline/parent = parents["p[I]"] + parent.update = 1 \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/unary_devices/outlet_injector.dm b/code/ATMOSPHERICS/components/unary_devices/outlet_injector.dm index ca0cf4d90ac..10ecdf726d9 100644 --- a/code/ATMOSPHERICS/components/unary_devices/outlet_injector.dm +++ b/code/ATMOSPHERICS/components/unary_devices/outlet_injector.dm @@ -107,12 +107,8 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/atmosinit() set_frequency(frequency) - ..() - -/obj/machinery/atmospherics/components/unary/outlet_injector/initialize() - ..() broadcast_status() - + ..() /obj/machinery/atmospherics/components/unary/outlet_injector/receive_signal(datum/signal/signal) if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command")) diff --git a/code/ATMOSPHERICS/components/unary_devices/unary_base.dm b/code/ATMOSPHERICS/components/unary_devices/unary_base.dm index 1461c1e0c6a..96b99f52fd1 100644 --- a/code/ATMOSPHERICS/components/unary_devices/unary_base.dm +++ b/code/ATMOSPHERICS/components/unary_devices/unary_base.dm @@ -38,10 +38,8 @@ Housekeeping and pipe network stuff below nullifyPipenet(parents[PARENT1]) atmosinit() node = nodes[NODE1] - initialize() if(node) node.atmosinit() - node.initialize() node.addMember(src) build_network() . = 1 \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm index 808ba4416c2..7d574f302d6 100644 --- a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm @@ -55,10 +55,6 @@ if (!id_tag) assign_uid() id_tag = num2text(uid) - if(ticker && ticker.current_state == 3)//if the game is running - src.atmosinit() - src.initialize() - src.broadcast_status() /obj/machinery/atmospherics/components/unary/vent_pump/Destroy() if(radio_controller) @@ -193,10 +189,8 @@ radio_filter_out = frequency==1439?(RADIO_TO_AIRALARM):null if(frequency) set_frequency(frequency) - ..() -/obj/machinery/atmospherics/components/unary/vent_pump/initialize() - ..() broadcast_status() + ..() /obj/machinery/atmospherics/components/unary/vent_pump/receive_signal(datum/signal/signal) if(stat & (NOPOWER|BROKEN)) diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm index d568bd297f7..691835ed4cc 100644 --- a/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm @@ -44,10 +44,6 @@ if (!id_tag) assign_uid() id_tag = num2text(uid) - if(ticker && ticker.current_state == 3)//if the game is running - src.atmosinit() - src.initialize() - src.broadcast_status() /obj/machinery/atmospherics/components/unary/vent_scrubber/Destroy() if(radio_controller) @@ -138,12 +134,9 @@ radio_filter_out = frequency==initial(frequency)?(RADIO_TO_AIRALARM):null if (frequency) set_frequency(frequency) + broadcast_status() check_turfs() ..() -/obj/machinery/atmospherics/components/unary/vent_scrubber/initialize() - ..() - broadcast_status() - /obj/machinery/atmospherics/components/unary/vent_scrubber/process_atmos() ..() diff --git a/code/LINDA/LINDA_fire.dm b/code/LINDA/LINDA_fire.dm index eae97131ec8..21eb6d7e97e 100644 --- a/code/LINDA/LINDA_fire.dm +++ b/code/LINDA/LINDA_fire.dm @@ -142,6 +142,7 @@ // Garbage collect itself by nulling reference to it /obj/effect/hotspot/proc/Kill() + SetLuminosity(0) PlaceInPool(src) /obj/effect/hotspot/Destroy() diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 9f46ab5c791..5bfd6673e93 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -45,16 +45,9 @@ #define GRAB_KILL 5 -//Hostile Mob Stances -#define HOSTILE_STANCE_IDLE 1 -//#define HOSTILE_STANCE_ALERT 2 //Was only used by bears -#define HOSTILE_STANCE_ATTACK 3 -#define HOSTILE_STANCE_ATTACKING 4 -//#define HOSTILE_STANCE_TIRED 5 //Was also only used by bears - //Hostile Mob AI Status #define AI_ON 1 -#define AI_SLEEP 2 +#define AI_IDLE 2 #define AI_OFF 3 diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index 7a8837e1671..e5e190a09ba 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -8,20 +8,6 @@ /proc/gameTimestamp(format = "hh:mm:ss") // Get the game time in text return time2text(world.time - timezoneOffset + 432000, format) -/* Preserving this so future generations can see how fucking retarded some people are -proc/time_stamp() - var/hh = text2num(time2text(world.timeofday, "hh")) // Set the hour - var/mm = text2num(time2text(world.timeofday, "mm")) // Set the minute - var/ss = text2num(time2text(world.timeofday, "ss")) // Set the second - var/ph - var/pm - var/ps - if(hh < 10) ph = "0" - if(mm < 10) pm = "0" - if(ss < 10) ps = "0" - return"[ph][hh]:[pm][mm]:[ps][ss]" -*/ - /* Returns 1 if it is the selected month and day */ /proc/isDay(month, day) if(isnum(month) && isnum(day)) @@ -36,4 +22,4 @@ proc/time_stamp() //returns timestamp in a sql and ISO 8601 friendly format /proc/SQLtime() - return time2text(world.realtime, "YYYY-MM-DD hh:mm:ss") \ No newline at end of file + return time2text(world.realtime, "YYYY-MM-DD hh:mm:ss") diff --git a/code/_compile_options.dm b/code/_compile_options.dm index be37bcb15d6..320b756fdee 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -59,15 +59,9 @@ var/list/del_counter = list() #warn compiling in TESTING mode. testing() debug messages will be visible. #endif -//SYSTEM TOGGLES - these allow you to compile the game without some of the laggier systems if your server cannot cope with demand -/* Not yet coded -#define USE_DYNAMIC_GRAVITY //Enables the dynamic gravity system -#define USE_DYNAMIC_LIGHTING //Enables the dynamic lighting system -#define USE_DYNAMIC_ATMOS //Enables the dynamic atmos system -*/ +#define MIN_COMPILER_VERSION 508 +#if DM_VERSION < MIN_COMPILER_VERSION //Update this whenever you need to take advantage of more recent byond features +#error Your version of BYOND is too out-of-date to compile this project. Go to byond.com/download and update. +#endif #define USE_BYGEX - -#if DM_VERSION < 508 //Update this whenever you need to take advantage of more recent byond features -#error Your version of BYOND is too out-of-date to compile this project. Go to byond.com/download and update. -#endif \ No newline at end of file diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 4fb95455a39..ceed0282a97 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -90,8 +90,8 @@ update_inv_r_hand(0) return - // operate two levels deep here (item in backpack in src; NOT item in box in backpack in src) - if(!isturf(A) && A == loc || (A in contents) || (A.loc in contents)) + // operate three levels deep here (item in backpack in src; item in box in backpack in src, not any deeper) + if(!isturf(A) && A == loc || (A in contents) || (A.loc in contents) || (A.loc && (A.loc.loc in contents))) // No adjacency needed if(W) var/resolved = A.attackby(W,src) @@ -323,4 +323,4 @@ else var/turf/T = screen_loc2turf(modifiers["screen-loc"], get_turf(usr)) T.Click(location, control, params) - return 1 + return 1 diff --git a/code/_onclick/hud/action.dm b/code/_onclick/hud/action.dm index ebf7131e551..f31ac20af2f 100644 --- a/code/_onclick/hud/action.dm +++ b/code/_onclick/hud/action.dm @@ -135,12 +135,12 @@ var/image/img if(owner.action_type == AB_ITEM && owner.target) var/obj/item/I = owner.target - img = image(I.icon, src , I.icon_state) + overlays += I.appearance else if(owner.button_icon && owner.button_icon_state) img = image(owner.button_icon,src,owner.button_icon_state) - img.pixel_x = 0 - img.pixel_y = 0 - overlays += img + img.pixel_x = 0 + img.pixel_y = 0 + overlays += img if(!owner.IsAvailable()) color = rgb(128,0,0,128) diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index 3ad2acefb4c..f565f6235f1 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -61,8 +61,7 @@ calculate the longest number of ticks the MC can wait between each cycle without for(var/datum/subsystem/S in subsystems) S.Initialize(world.timeofday, zlevel) sleep(-1) - for(var/datum/subsystem/S in subsystems) - S.AfterInitialize(zlevel) + world << "Initializations complete" world.log << "Initializations complete" diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 99d0dc22d54..c3d63b689a4 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -2,7 +2,7 @@ var/datum/subsystem/air/SSair /datum/subsystem/air name = "Air" - priority = 20 + priority = -1 wait = 5 dynamic_wait = 1 dwait_upper = 50 @@ -54,11 +54,10 @@ var/datum/subsystem/air/SSair /datum/subsystem/air/Initialize(timeofday, zlevel) - setup_atmos_machinery(zlevel) - ..() - -/datum/subsystem/air/AfterInitialize(zlevel) setup_allturfs(zlevel) + setup_atmos_machinery(zlevel) + setup_pipenets(zlevel) + ..() #define MC_AVERAGE(average, current) (0.8*(average) + 0.2*(current)) /datum/subsystem/air/fire() @@ -167,7 +166,6 @@ var/datum/subsystem/air/SSair EG.dismantle() /datum/subsystem/air/proc/setup_allturfs(z_level) - active_turfs.Cut() var/z_start = 1 var/z_finish = world.maxz if(1 <= z_level && z_level <= world.maxz) @@ -177,6 +175,8 @@ var/datum/subsystem/air/SSair var/list/turfs_to_init = block(locate(1, 1, z_start), locate(world.maxx, world.maxy, z_finish)) for(var/turf/simulated/T in turfs_to_init) T.CalculateAdjacentTurfs() + T.excited = 0 + active_turfs -= T if(!T.blocks_air) T.update_visuals() for(var/direction in cardinal) @@ -204,3 +204,12 @@ var/datum/subsystem/air/SSair if (z_level && AM.z != z_level) continue AM.atmosinit() + +//this can't be done with setup_atmos_machinery() because +// all atmos machinery has to initalize before the first +// pipenet can be built. +/datum/subsystem/air/proc/setup_pipenets(z_level) + for (var/obj/machinery/atmospherics/AM in atmos_machinery) + if (z_level && AM.z != z_level) + continue + AM.build_network() diff --git a/code/controllers/subsystem/jobs.dm b/code/controllers/subsystem/jobs.dm index 5d6c83b8206..e3d1114edbf 100644 --- a/code/controllers/subsystem/jobs.dm +++ b/code/controllers/subsystem/jobs.dm @@ -390,6 +390,7 @@ var/datum/subsystem/job/SSjob else //We ran out of spare locker spawns! break + /datum/subsystem/job/proc/LoadJobs(jobsfile) //ran during round setup, reads info from jobs.txt -- Urist if(!config.load_jobs_from_txt) return 0 diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 8c8583cd28d..98fecb0227c 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -240,6 +240,10 @@ var/datum/subsystem/ticker/ticker world << sound('sound/effects/explosionfar.ogg') flick("station_intact_fade_red",cinematic) cinematic.icon_state = "summary_nukefail" + if("gang war") //Gang Domination (just show the override screen) + cinematic.icon_state = "intro_malf_still" + flick("intro_malf",cinematic) + sleep(70) if("fake") //The round isn't over, we're just freaking people out for fun flick("intro_nuke",cinematic) sleep(35) diff --git a/code/controllers/subsystems.dm b/code/controllers/subsystems.dm index ed81dda8652..f84c0ab8cb8 100644 --- a/code/controllers/subsystems.dm +++ b/code/controllers/subsystems.dm @@ -44,9 +44,6 @@ world << "[msg]" world.log << msg -/datum/subsystem/proc/AfterInitialize() - return - //hook for printing stats to the "MC" statuspanel for admins to see performance and related stats etc. /datum/subsystem/proc/stat_entry(msg) var/dwait = "" diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index c99aa61573a..d5ba85e6c91 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -370,7 +370,7 @@ var/record_id_num = 1001 clothes_s.Blend(icon('icons/mob/mask.dmi', "mime"), ICON_OVERLAY) clothes_s.Blend(icon('icons/mob/suit.dmi', "suspenders"), ICON_OVERLAY) if("Bartender") - clothes_s = icon('icons/mob/uniform.dmi', "ba_suit_s") + clothes_s = icon('icons/mob/uniform.dmi', "barman_s") clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) clothes_s.Blend(icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY) if("Quartermaster") diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index 01b2a738e02..7f1b1755d3b 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -40,7 +40,7 @@ DD.carrier = 1 //Copy properties over. This is so edited diseases persist. - var/list/skipped = list("affected_mob","holder","carrier","stage","type","parent_type","vars") + var/list/skipped = list("affected_mob","holder","carrier","stage","type","parent_type","vars","transformed") for(var/V in DD.vars) if(V in skipped) continue diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 93fd9239761..192aec3da0a 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -217,7 +217,7 @@ stage3 = list("Must... eat... chocolate....", "YAP") stage4 = list("Visions of washing machines assail your mind!") stage5 = list("AUUUUUU!!!") - new_form = /mob/living/simple_animal/pet/corgi + new_form = /mob/living/simple_animal/pet/dog/corgi /datum/disease/transformation/corgi/stage_act() ..() diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 56361bdf5c7..3b38daa05c9 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -1558,7 +1558,7 @@ mind.assigned_role = "Animal" mind.special_role = "Animal" -/mob/living/simple_animal/pet/corgi/mind_initialize() +/mob/living/simple_animal/pet/dog/corgi/mind_initialize() ..() mind.assigned_role = "Corgi" mind.special_role = "Corgi" diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 011373fe5a2..83ed22584e9 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -355,7 +355,7 @@ var/list/uplink_items = list() /datum/uplink_item/stealthy_weapons/foampistol name = "Toy Gun (with Stun Darts)" - desc = "An innocent looking toy pistol designed to fire foam darts. Comes loaded with riot-grade darts, to incapacitate a target." + desc = "An innocent-looking toy pistol designed to fire foam darts. Comes loaded with riot-grade darts, to incapacitate a target." item = /obj/item/weapon/gun/projectile/automatic/toy/pistol/riot cost = 6 surplus = 10 @@ -399,14 +399,14 @@ var/list/uplink_items = list() /datum/uplink_item/stealthy_weapons/pizza_bomb name = "Pizza Bomb" - desc = "A pizza box with a bomb taped inside of it. The timer needs to be set by opening the box; afterwards, opening the box again will trigger the detonation." + desc = "A pizza box with a bomb taped inside it. The timer needs to be set by opening the box; afterwards, opening the box again will trigger the detonation." item = /obj/item/device/pizza_bomb cost = 5 surplus = 8 /datum/uplink_item/stealthy_weapons/dehy_carp name = "Dehydrated Space Carp" - desc = "Just add water to make your very own hostile to everything space carp. It looks just like a plushie." + desc = "Looks like a plush toy carp, but just add water and it becomes a real-life space carp! Activate before use." item = /obj/item/toy/carpplushie/dehy_carp cost = 3 @@ -464,7 +464,7 @@ var/list/uplink_items = list() /datum/uplink_item/stealthy_tools/chameleon_proj name = "Chameleon-Projector" - desc = "Projects an image across a user, disguising them as an object scanned with it, as long as they don't move the projector from their hand. The disguised user cannot run and rojectiles pass over them." + desc = "Projects an image across a user, disguising them as an object scanned with it, as long as they don't move the projector from their hand. Disguised users cannot run, and projectiles pass over them." item = /obj/item/device/chameleon cost = 7 excludefrom = list(/datum/game_mode/gang) @@ -485,7 +485,7 @@ var/list/uplink_items = list() /datum/uplink_item/stealthy_tools/stimpack name = "Stimpack" - desc = "Stimpacks, a tool of many great heroes, make you nearly immune to stuns and knockdowns for about 5 minutes after injection." + desc = "Stimpacks, the tool of many great heroes, make you nearly immune to stuns and knockdowns for about 5 minutes after injection." item = /obj/item/weapon/reagent_containers/syringe/stimulants cost = 5 surplus = 90 @@ -497,7 +497,7 @@ var/list/uplink_items = list() /datum/uplink_item/device_tools/emag name = "Cryptographic Sequencer" - desc = "The emag is a small card that unlocks hidden functions in electronic devices, subverts intended functions and characteristically breaks security mechanisms." + desc = "The cryptographic sequencer, or emag, is a small card that unlocks hidden functions in electronic devices, subverts intended functions and characteristically breaks security mechanisms." item = /obj/item/weapon/card/emag cost = 6 excludefrom = list(/datum/game_mode/gang) @@ -611,7 +611,6 @@ var/list/uplink_items = list() You can wrench the bomb down to prevent removal. The crew may attempt to defuse the bomb." item = /obj/item/device/sbeacondrop/bomb cost = 11 - excludefrom = list(/datum/game_mode/traitor/double_agents) /datum/uplink_item/device_tools/rad_laser name = "Radioactive Microlaser" @@ -659,7 +658,7 @@ var/list/uplink_items = list() /datum/uplink_item/implants/uplink name = "Uplink Implant" desc = "An implant injected into the body, and later activated using a bodily gesture to open an uplink with 10 telecrystals. \ - The ability for an agent to open an uplink after their posessions have been stripped from them makes this implant excellent for escaping confinement." + The ability for an agent to open an uplink after their possessions have been stripped from them makes this implant excellent for escaping confinement." item = /obj/item/weapon/storage/box/syndie_kit/imp_uplink cost = 14 surplus = 0 @@ -704,24 +703,12 @@ var/list/uplink_items = list() item = /obj/item/cybernetic_implant/brain/anti_stun cost = 12 -/datum/uplink_item/cyber_implants/antidrop - name = "Anti-Drop Implant" - desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping." - item = /obj/item/cybernetic_implant/brain/anti_drop - cost = 8 - /datum/uplink_item/cyber_implants/reviver name = "Reviver Implant" desc = "This implant will attempt to revive you if you lose consciousness." item = /obj/item/cybernetic_implant/chest/reviver cost = 8 -/datum/uplink_item/cyber_implants/nutriment - name = "Nutriment Pump Implant PLUS" - desc = "This implant will pump you with nutriments and electrolytes so you don't go hungry in action." - item = /obj/item/cybernetic_implant/chest/nutriment/plus - cost = 5 - /datum/uplink_item/cyber_implants/bundle name = "Cybernetic Implants Bundle" desc = "A random selection of cybernetic implants. Guaranteed 5 high quality implants." diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm index 938c48b5343..4fadf3d662a 100644 --- a/code/game/asteroid.dm +++ b/code/game/asteroid.dm @@ -80,7 +80,7 @@ var/global/max_secret_rooms = 6 walltypes = list(/turf/simulated/wall/mineral/plasma=3,/turf/simulated/mineral/random/high_chance=1) floortypes = list(/turf/simulated/floor/wood) treasureitems = list(/obj/item/weapon/veilrender/vealrender=2, /obj/item/weapon/spellbook/oneuse/blind=1,/obj/item/clothing/head/wizard/red=2, - /obj/item/weapon/spellbook/oneuse/forcewall=1, /obj/item/weapon/spellbook/oneuse/smoke=1, /obj/structure/constructshell = 1, /obj/item/toy/katana=3) + /obj/item/weapon/spellbook/oneuse/forcewall=1, /obj/item/weapon/spellbook/oneuse/smoke=1, /obj/structure/constructshell = 1, /obj/item/toy/katana=3,/obj/item/voodoo=3) fluffitems = list(/obj/structure/safe/floor=1,/obj/structure/dresser=1,/obj/item/weapon/storage/belt/soulstone=1,/obj/item/trash/candle=3, /obj/item/weapon/dice=3,/obj/item/weapon/staff=2,/obj/effect/decal/cleanable/dirt=3,/obj/item/weapon/coin/mythril=3) diff --git a/code/game/dna.dm b/code/game/dna.dm index c35627123ac..c8c0ceb4cd1 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -420,12 +420,6 @@ open_machine() -/obj/machinery/dna_scannernew/Topic(href, href_list) - if(href_list["reenter"]) - var/mob/dead/observer/ghost = usr - if(istype(ghost)) - ghost.reenter_corpse(ghost) - /obj/machinery/dna_scannernew/close_machine() if(!state_open) return 0 @@ -439,10 +433,7 @@ || locate(/obj/machinery/computer/cloning, get_step(src, EAST)) \ || locate(/obj/machinery/computer/cloning, get_step(src, WEST))) - var/mob/dead/observer/ghost = occupant.get_ghost() - if(ghost) - ghost << "Your corpse has been placed into a cloning scanner. Re-enter your corpse if you want to be cloned! (Click to re-enter)" - ghost << sound('sound/effects/genetics.ogg') + occupant.notify_ghost_cloning("Your corpse has been placed into a cloning scanner. Re-enter your corpse if you want to be cloned!") return 1 /obj/machinery/dna_scannernew/open_machine() diff --git a/code/game/gamemodes/abduction/abduction.dm b/code/game/gamemodes/abduction/abduction.dm index fe821790077..35ce34e0792 100644 --- a/code/game/gamemodes/abduction/abduction.dm +++ b/code/game/gamemodes/abduction/abduction.dm @@ -239,7 +239,7 @@ V.flags |= NODROP agent.equip_to_slot_or_del(V, slot_wear_suit) agent.equip_to_slot_or_del(new /obj/item/weapon/abductor_baton(agent), slot_in_backpack) - agent.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/decloner/alien(agent), slot_belt) + agent.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/alien(agent), slot_belt) agent.equip_to_slot_or_del(new /obj/item/device/abductor/silencer(agent), slot_in_backpack) agent.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/abductor(agent), slot_head) diff --git a/code/game/gamemodes/abduction/abduction_gear.dm b/code/game/gamemodes/abduction/abduction_gear.dm index 89c69232a22..24fc829d65b 100644 --- a/code/game/gamemodes/abduction/abduction_gear.dm +++ b/code/game/gamemodes/abduction/abduction_gear.dm @@ -295,11 +295,14 @@ return 0 return 1 -/obj/item/weapon/gun/energy/decloner/alien +/obj/item/weapon/gun/energy/alien + name = "alien pistol" + desc = "A complicated gun that fires bursts of high-intensity radiation." ammo_type = list(/obj/item/ammo_casing/energy/declone) pin = /obj/item/device/firing_pin/alien icon_state = "alienpistol" item_state = "alienpistol" + origin_tech = "combat=5;materials=4;powerstorage=3" /obj/item/weapon/paper/abductor name = "Dissection Guide" diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm index b3e6ab5e0f8..7d64d4ed815 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/game/gamemodes/antag_spawner.dm @@ -175,23 +175,23 @@ /obj/item/weapon/antag_spawner/slaughter_demon/spawn_antag(client/C, turf/T, type = "") - var /obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(T) + var /obj/effect/dummy/slaughter/holder = PoolOrNew(/obj/effect/dummy/slaughter,T) var/mob/living/simple_animal/slaughter/S = new /mob/living/simple_animal/slaughter/(holder) - S.phased = TRUE + S.holder = holder S.key = C.key S.mind.assigned_role = "Slaughter Demon" S.mind.special_role = "Slaughter Demon" ticker.mode.traitors += S.mind var/datum/objective/assassinate/new_objective = new /datum/objective/assassinate - new_objective.owner = S:mind - new_objective:target = usr:mind + new_objective.owner = S.mind + new_objective.target = usr.mind new_objective.explanation_text = "Kill [usr.real_name], the one who summoned you." S.mind.objectives += new_objective var/datum/objective/new_objective2 = new /datum/objective - new_objective2.owner = S:mind + new_objective2.owner = S.mind new_objective2.explanation_text = "Kill everyone else while you're at it." S.mind.objectives += new_objective2 S << S.playstyle_string S << "You are currently not currently in the same plane of existence as the station. Ctrl+Click a blood pool to manifest." S << "Objective #[1]: [new_objective.explanation_text]" - S << "Objective #[2]: [new_objective2.explanation_text]" \ No newline at end of file + S << "Objective #[2]: [new_objective2.explanation_text]" diff --git a/code/game/gamemodes/changeling/powers/absorb.dm b/code/game/gamemodes/changeling/powers/absorb.dm index dd5229b7c2c..2b9e7c3c9d8 100644 --- a/code/game/gamemodes/changeling/powers/absorb.dm +++ b/code/game/gamemodes/changeling/powers/absorb.dm @@ -177,7 +177,7 @@ user.mind.transfer_to(target) if(ghost && ghost.mind) ghost.mind.transfer_to(user) - user.key = ghost.key + user.key = ghost.key user.Paralyse(2) target << "Our genes cry out as we swap our [user] form for [target]." diff --git a/code/game/gamemodes/changeling/powers/headcrab.dm b/code/game/gamemodes/changeling/powers/headcrab.dm index 076dde153ce..79ff7f9b11e 100644 --- a/code/game/gamemodes/changeling/powers/headcrab.dm +++ b/code/game/gamemodes/changeling/powers/headcrab.dm @@ -6,13 +6,14 @@ req_human = 1 /obj/effect/proc_holder/changeling/headcrab/sting_action(mob/user) + var/datum/mind/M = user.mind explosion(get_turf(user),0,0,2,0,silent=1) var/turf = get_turf(user) spawn(5) // So it's not killed in explosion var/mob/living/simple_animal/hostile/headcrab/crab = new(turf) - crab.origin = user.mind - if(user.mind) - user.mind.transfer_to(crab) + crab.origin = M + if(M) + M.transfer_to(crab) crab << "You burst out of the remains of your former body in a shower of gore!" user.gib() feedback_add_details("changeling_powers","LR") diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 6fe3cb03d0b..6d69be02b67 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -635,7 +635,7 @@ var/list/sacrificed = list() if(prob(30)) ticker.mode.grant_runeword(usr) stone_or_gib(M) - for(var/mob/victim in src.loc) //TO-DO: Move the shite above into the mob's own sac_act - see /mob/living/simple_animal/pet/corgi/sac_act for an example + for(var/mob/victim in src.loc) //TO-DO: Move the shite above into the mob's own sac_act - see /mob/living/simple_animal/pet/dog/corgi/sac_act for an example victim.sac_act(src, victim) //Sacrifice procs are now seperate per mob, this allows us to allow sacrifice on as many mob types as we want without making an already clunky system worse /obj/effect/rune/proc/sac_grant_word(mob/living/C) //The proc that which chooses a word rewarded for a successful sacrifice, sacrifices always give a currently unknown word if the normal checks pass diff --git a/code/game/gamemodes/gang/dominator.dm b/code/game/gamemodes/gang/dominator.dm index 6475565527e..12f91ec51f2 100644 --- a/code/game/gamemodes/gang/dominator.dm +++ b/code/game/gamemodes/gang/dominator.dm @@ -172,6 +172,10 @@ if (!tempgang.dom_attempts || !in_range(src, user) || !istype(src.loc, /turf)) return 0 + var/area/A = get_area(loc) + var/locname = initial(A.name) + priority_announce("Network breach detected in [locname]. The [gang.name] Gang is attempting to seize control of the station!","Network Alert") + gang = tempgang gang.dom_attempts -- gang.domination() @@ -179,9 +183,7 @@ healthcheck(0) operating = 1 SSmachine.processing += src - var/area/A = get_area(loc) - var/locname = initial(A.name) - priority_announce("Network breach detected in [locname]. The [gang.name] Gang is attempting to seize control of the station!","Network Alert") + gang.message_gangtools("Hostile takeover in progress: Estimated [time] minutes until victory.[gang.dom_attempts ? "" : " This is your final attempt."]") for(var/datum/gang/G in ticker.mode.gangs) if(G != gang) diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index b9ee7887e88..a0373cc04dc 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -308,4 +308,7 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple" G.domination(0.5) priority_announce("Multiple station takeover attempts have made simultaneously. Conflicting takeover attempts appears to have restarted.","Network Alert") else - ticker.force_ending = pick(winners) + ticker.mode.explosion_in_progress = 1 + ticker.station_explosion_cinematic(1) + ticker.mode.explosion_in_progress = 0 + ticker.force_ending = pick(winners) \ No newline at end of file diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm index 41f4a710e5a..ed9e0a693d1 100644 --- a/code/game/gamemodes/gang/gang_datum.dm +++ b/code/game/gamemodes/gang/gang_datum.dm @@ -133,6 +133,12 @@ var/added_names = "" var/lost_names = "" + //Re-add territories that were reclaimed, so if they got tagged over, they can still earn income if they tag it back before the next status report + var/list/reclaimed_territories = territory_new & territory_lost + territory |= reclaimed_territories + territory_new -= reclaimed_territories + territory_lost -= reclaimed_territories + //Process lost territories for(var/area in territory_lost) if(lost_names != "") @@ -179,10 +185,6 @@ points = points_new message += "Your gang now has [points] influence.
" - - //Remove territories they already own from the buffer, so if they got tagged over, they can still earn income if they tag it back before the next status report - territory_new -= territory - //Process new territories for(var/area in territory_new) if(added_names != "") diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm index dafdb485cd5..c09b45d70cd 100644 --- a/code/game/gamemodes/gang/recaller.dm +++ b/code/game/gamemodes/gang/recaller.dm @@ -43,7 +43,7 @@ if(isnum(gang.dom_timer)) dat += "
Takeover In Progress:
[gang.dom_timer] seconds remain
" - var/isboss = (user.mind in ticker.mode.get_gang_bosses()) + var/isboss = (user.mind == gang.bosses[1]) var/points = gang.points dat += "Registration: [gang.name] Gang [isboss ? "Boss" : "Lieutenant"]
" dat += "Organization Size: [gang.gangsters.len + gang.bosses.len] | Station Control: [round((gang.territory.len/start_state.num_territories)*100, 1)]%
" @@ -57,7 +57,7 @@ dat += "Create Armored Gang Outfit
" else dat += "Create Gang Outfit (Restocking)
" - if(user.mind in ticker.mode.get_gang_bosses()) + if(isboss) dat += "Recall Emergency Shuttle
" dat += "
" @@ -158,7 +158,7 @@ dat += "Recruitment Pen
" var/gangtooltext = "Spare Gangtool" - if((user.mind in ticker.mode.get_gang_bosses()) && gang.bosses.len < 3) + if(isboss && gang.bosses.len < 3) gangtooltext = "Promote a Gangster" dat += "(10 Influence) " if(points >= 10) @@ -258,7 +258,7 @@ pointcost = 10 if("gangtool") if(gang.points >= 10) - if(usr.mind in ticker.mode.get_gang_bosses()) + if(usr.mind == gang.bosses[1]) item_type = /obj/item/device/gangtool/spare/lt if(gang.bosses.len < 3) usr << "Gangtools allow you to promote a gangster to be your Lieutenant, enabling them to recruit and purchase items like you. Simply have them register the gangtool. You may promote up to [3-gang.bosses.len] more Lieutenants" @@ -301,7 +301,7 @@ else if(href_list["choice"]) switch(href_list["choice"]) if("recall") - if(usr.mind in ticker.mode.get_gang_bosses()) + if(usr.mind == gang.bosses[1]) recall(usr) if("outfit") if(outfits > 0) @@ -326,7 +326,19 @@ members += gang.gangsters members += gang.bosses if(members.len) - var/ping = "[gang.name] [(user.mind in ticker.mode.get_gang_bosses()) ? "Gang Boss" : "Lieutenant"]: [message]" + var/gang_rank = gang.bosses.Find(user.mind) + switch(gang_rank) + if(1) + gang_rank = "Gang Boss" + if(2) + gang_rank = "1st Lieutenant" + if(3) + gang_rank = "2nd Lieutenant" + if(4) + gang_rank = "3rd Lieutenant" + else + gang_rank = "[gang_rank - 1]th Lieutenant" + var/ping = "[gang.name] [gang_rank]: [message]" for(var/datum/mind/ganger in members) if(ganger.current && (ganger.current.z <= 2) && (ganger.current.stat == CONSCIOUS)) ganger.current << ping diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index ae618f0be1b..8f90c400ae9 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -371,81 +371,86 @@ src << "Overcurrent applied to the powernet." else src << "Out of uses." -/datum/AI_Module/small/reactivate_camera - module_name = "Reactivate camera" +/datum/AI_Module/small/reactivate_cameras + module_name = "Reactivate Camera Network" mod_pick_name = "recam" - description = "Reactivates a currently disabled camera. 5 uses." - uses = 5 - cost = 5 + description = "Runs a network-wide diagnostic on the camera network, resetting focus and re-routing power to failed cameras. Can be used to repair up to 30 cameras." + uses = 30 + cost = 10 + one_time = 1 - power_type = /mob/living/silicon/ai/proc/reactivate_camera + power_type = /mob/living/silicon/ai/proc/reactivate_cameras -/mob/living/silicon/ai/proc/reactivate_camera(obj/machinery/camera/C in cameranet.cameras) - set name = "Reactivate Camera" +/mob/living/silicon/ai/proc/reactivate_cameras() + set name = "Reactivate Cameranet" set category = "Malfunction" - if(!canUseTopic()) + if(!canUseTopic() || malf_cooldown) return + var/fixedcams = 0 //Tells the AI how many cams it fixed. Stats are fun. - if (istype (C, /obj/machinery/camera)) - for(var/datum/AI_Module/small/reactivate_camera/camera in current_modules) + for(var/datum/AI_Module/small/reactivate_cameras/camera in current_modules) + for(var/obj/machinery/camera/C in cameranet.cameras) + var/initial_range = initial(C.view_range) //To prevent calling the proc twice if(camera.uses > 0) if(!C.status) - C.deactivate(src) - camera.uses -- - src << "Camera reactivated." - else - src << "This camera is either active, or not repairable." - else src << "Out of uses." - else src << "That's not a camera." + C.deactivate(src, 0) //Reactivates the camera based on status. Badly named proc. + fixedcams++ + camera.uses-- + if(C.view_range != initial_range) + C.view_range = initial_range //Fixes cameras with bad focus. + camera.uses-- + fixedcams++ + //If a camera is both deactivated and has bad focus, it will cost two uses to fully fix! + else + src << "Out of uses." + verbs -= /mob/living/silicon/ai/proc/reactivate_cameras //It is useless now, clean it up. + break + src << "Diagnostic complete! Operations completed: [fixedcams]." -/datum/AI_Module/small/upgrade_camera - module_name = "Upgrade Camera" + malf_cooldown = 1 + spawn(30) //Lag protection + malf_cooldown = 0 + +/datum/AI_Module/large/upgrade_cameras + module_name = "Upgrade Camera Network" mod_pick_name = "upgradecam" - description = "Upgrades a camera to have X-ray vision, motion sensing and be EMP-Proof. 5 uses." - uses = 5 - cost = 5 + description = "Install broad-spectrum scanning and electrical redundancy firmware to the camera network, enabling EMP-Proofing and light-amplified X-ray vision." //I <3 pointless technobabble + //This used to have motion sensing as well, but testing quickly revealed that giving it to the whole cameranet is PURE HORROR. + one_time = 1 + cost = 35 //Decent price for omniscience! - power_type = /mob/living/silicon/ai/proc/upgrade_camera + power_type = /mob/living/silicon/ai/proc/upgrade_cameras -/mob/living/silicon/ai/proc/upgrade_camera(obj/machinery/camera/C in cameranet.cameras) - set name = "Upgrade Camera" +/mob/living/silicon/ai/proc/upgrade_cameras() + set name = "Upgrade Cameranet" set category = "Malfunction" if(!canUseTopic()) return - if(istype(C)) - var/datum/AI_Module/small/upgrade_camera/UC = locate(/datum/AI_Module/small/upgrade_camera) in current_modules - if(UC) - if(UC.uses > 0) - if(C.assembly) - var/upgraded = 0 + var/upgradedcams = 0 + see_override = SEE_INVISIBLE_MINIMUM //Night-vision, without which X-ray would be very limited in power. - if(!C.isXRay()) - C.upgradeXRay() - //Update what it can see. - cameranet.updateVisibility(C, 0) - upgraded = 1 + for(var/obj/machinery/camera/C in cameranet.cameras) + if(C.assembly) + var/upgraded = 0 - if(!C.isEmpProof()) - C.upgradeEmpProof() - upgraded = 1 + if(!C.isXRay()) + C.upgradeXRay() + //Update what it can see. + cameranet.updateVisibility(C, 0) + upgraded = 1 - if(!C.isMotion()) - C.upgradeMotion() - upgraded = 1 - // Add it to machines that process - SSmachine.processing |= C//machines |= C + if(!C.isEmpProof()) + C.upgradeEmpProof() + upgraded = 1 - if(upgraded) - UC.uses -- - C.visible_message("\icon[C] *beep*") - src << "You successully upgrade the camera." - else - src << "This camera is already upgraded!" - else - src << "Out of uses!" + if(upgraded) + upgradedcams++ + + src << "OTA firmware distribution complete! Cameras upgraded: [upgradedcams]. Light amplification system online." + verbs -= /mob/living/silicon/ai/proc/upgrade_cameras /datum/module_picker var/temp = null diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm index e6b7500a866..3b453e491cc 100644 --- a/code/game/gamemodes/malfunction/malfunction.dm +++ b/code/game/gamemodes/malfunction/malfunction.dm @@ -302,4 +302,4 @@ text += "
" world << text - return 1 \ No newline at end of file + return 1 diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 452288e8ffd..87dbe5cd9c2 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -186,7 +186,7 @@ /datum/objective/hijack - explanation_text = "Hijack the emergency shuttle by escaping alone." + explanation_text = "Hijack the shuttle to ensure no loyalist Nanotrasen crew escape alive and out of custody." dangerrating = 25 martyr_compatible = 0 //Technically you won't get both anyway. diff --git a/code/game/gamemodes/traitor/double_agents.dm b/code/game/gamemodes/traitor/double_agents.dm index e444726bfa7..af284603f6a 100644 --- a/code/game/gamemodes/traitor/double_agents.dm +++ b/code/game/gamemodes/traitor/double_agents.dm @@ -1,14 +1,11 @@ /datum/game_mode/traitor/double_agents name = "double agents" config_tag = "double_agents" - restricted_jobs = list("Cyborg", "AI", "Captain", "Head of Personnel", "Chief Medical Officer", "Research Director", "Chief Engineer", "Head of Security") // Human / Minor roles only. required_players = 25 required_enemies = 5 recommended_enemies = 8 reroll_friendly = 0 - traitor_name = "double agent" - traitors_possible = 10 //hard limit on traitors if scaling is turned off num_modifier = 6 // Six additional traitors @@ -33,16 +30,29 @@ if(target_list.len && target_list[traitor]) // Is a double agent // Assassinate - var/datum/objective/assassinate/kill_objective = new - kill_objective.owner = traitor - kill_objective.target = target_list[traitor] - kill_objective.explanation_text = "Assassinate [kill_objective.target.current.real_name], the [kill_objective.target.assigned_role], the double agent." - traitor.objectives += kill_objective + var/datum/mind/target_mind = target_list[traitor] + if(issilicon(target_mind.current)) + var/datum/objective/destroy/destroy_objective = new + destroy_objective.owner = traitor + destroy_objective.target = target_mind + destroy_objective.update_explanation_text() + traitor.objectives += destroy_objective + else + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = traitor + kill_objective.target = target_mind + kill_objective.update_explanation_text() + traitor.objectives += kill_objective // Escape - var/datum/objective/escape/escape_objective = new - escape_objective.owner = traitor - traitor.objectives += escape_objective + if(issilicon(traitor.current)) + var/datum/objective/survive/survive_objective = new + survive_objective.owner = traitor + traitor.objectives += survive_objective + else + var/datum/objective/escape/escape_objective = new + escape_objective.owner = traitor + traitor.objectives += escape_objective else ..() // Give them standard objectives. diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index d222919684c..c053983d4c0 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -458,3 +458,118 @@ var/global/list/multiverse = list() W.registered_name = M.real_name W.update_label(M.real_name) M.equip_to_slot_or_del(W, slot_wear_id) + + +/obj/item/voodoo + name = "wicker doll" + desc = "Something creepy about it." + icon = 'icons/obj/wizard.dmi' + icon_state = "voodoo" + item_state = "electronic" + var/mob/living/carbon/human/target = null + var/list/mob/living/carbon/human/possible = list() + var/obj/item/link = null + var/cooldown_time = 30 //3s + var/cooldown = 0 + burntime = 0 + burn_state = 0 + +/obj/item/voodoo/attackby(obj/item/I, mob/user, params) + if(target && cooldown < world.time) + if(is_hot(I)) + target << "You suddenly feel very hot" + target.bodytemperature += 50 + GiveHint(target) + else if(is_pointed(I)) + target << "You feel a stabbing pain in [parse_zone(user.zone_sel.selecting)]!" + target.Weaken(2) + GiveHint(target) + else if(istype(I,/obj/item/weapon/bikehorn)) + target << "HONK" + target << 'sound/items/AirHorn.ogg' + target.adjustEarDamage(0,3) + GiveHint(target) + cooldown = world.time +cooldown_time + return + + if(!link) + if(I.loc == user && istype(I) && I.w_class <= 2) + user.drop_item() + I.loc = src + link = I + user << "You attach [I] to the doll." + update_targets() + ..() + +/obj/item/voodoo/check_eye(mob/user) + return src.loc == user + +/obj/item/voodoo/attack_self(mob/user) + if(!target) + target = input(user, "Select your victim!", "Voodoo") as null|anything in possible + return + if(target && cooldown < world.time) + switch(user.zone_sel.selecting) + if("mouth") + var/wgw = sanitize(input(user, "What would you like the victim to say", "Voodoo", null) as text) + target.say(wgw) + log_game("[user][user.key] made [target][target.key] say [wgw] with a voodoo doll.") + if("eyes") + user.set_machine(src) + if(user.client) + user.client.eye = target + user.client.perspective = EYE_PERSPECTIVE + spawn(100) + user.reset_view() + user.unset_machine() + if("r_leg","l_leg") + user << "You move the doll's legs around." + var/turf/T = get_step(target,pick(cardinal)) + target.Move(T) + if("r_arm","l_arm") + //use active hand on random nearby mob + var/list/nearby_mobs = list() + for(var/mob/living/L in range(target,1)) + if(L!=target) + nearby_mobs |= L + if(nearby_mobs.len) + var/mob/living/T = pick(nearby_mobs) + log_game("[user][user.key] made [target][target.key] click on [T] with a voodoo doll.") + target.ClickOn(T) + GiveHint(target) + if("head") + user << "You smack the doll's head with your hand." + target.Dizzy(10) + target << "You suddenly feel as if your head was hit with a hammer!" + GiveHint(target,user) + if("chest") + if(link) + target = null + link.loc = get_turf(src) + user << "You remove the [link] from the doll." + link = null + update_targets() + cooldown = world.time + cooldown_time + +/obj/item/voodoo/proc/update_targets() + possible = list() + if(!link) + return + for(var/mob/living/carbon/human/H in living_mob_list) + if(md5(H.dna.uni_identity) in link.fingerprints) + possible |= H + +/obj/item/voodoo/proc/GiveHint(mob/victim,force=0) + if(prob(50) || force) + var/way = dir2text(get_dir(victim,get_turf(src))) + victim << "You feel a dark presence from [way]" + if(prob(20) || force) + var/area/A = get_area(src) + victim << "You feel a dark presence from [A.name]" + +/obj/item/voodoo/fire_act() + if(target) + target.adjust_fire_stacks(20) + target.IgniteMob() + GiveHint(target,1) + return ..() \ No newline at end of file diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm index d7f0cfc38e8..df515f88db8 100644 --- a/code/game/gamemodes/wizard/rightandwrong.dm +++ b/code/game/gamemodes/wizard/rightandwrong.dm @@ -2,7 +2,7 @@ /proc/rightandwrong(summon_type, mob/user, survivor_probability) //0 = Summon Guns, 1 = Summon Magic var/list/gunslist = list("taser","egun","laser","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","suppressed","cannon","doublebarrel","shotgun","combatshotgun","bulldog","mateba","sabr","crossbow","saw","car","boltaction","speargun","arg","uzi") - var/list/magiclist = list("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge", "summonitem", "wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffhealing", "armor", "scrying","staffdoor", "special") + var/list/magiclist = list("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge", "summonitem", "wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffhealing", "armor", "scrying","staffdoor","voodoo", "special") var/list/magicspeciallist = list("staffchange","staffanimation", "wandbelt", "contract", "staffchaos", "necromantic") if(user) //in this case either someone holding a spellbook or a badmin @@ -139,6 +139,8 @@ if (!(H.dna.check_mutation(XRAY))) H.dna.add_mutation(XRAY) H << "The walls suddenly disappear." + if("voodoo") + new /obj/item/voodoo(get_turf(H)) if("special") magiclist -= "special" //only one super OP item per summoning max switch (randomizemagicspecial) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 00a3306e3e1..0f3fe47fac3 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -115,8 +115,10 @@ for(var/obj/item/W in T) T.unEquip(W) init_shade(C, T, U) - //qdel T //Gib instead return 1 + else + U << "Capture failed!: The soul has already fled it's mortal frame. You attempt to bring it back..." + getCultGhost(C,T,U) return 0 if("VICTIM") var/mob/living/carbon/human/T = target @@ -134,7 +136,8 @@ U << "Capture failed!: Kill or maim the victim first!" else if(T.client == null) - U << "Capture failed!: The soul has already fled it's mortal frame." + U << "Capture failed!: The soul has already fled it's mortal frame. You attempt to bring it back..." + getCultGhost(C,T,U) else if(C.contents.len) U << "Capture failed!: The soul stone is full! Use or free an existing soul to make room." @@ -237,3 +240,37 @@ if(vic) U << "Capture successful!: [T.real_name]'s soul has been ripped from their body and stored within the soul stone." U << "The soulstone has been imprinted with [S.real_name]'s mind, it will no longer react to other souls." + + +/obj/item/device/soulstone/proc/getCultGhost(obj/item/device/soulstone/C, mob/living/carbon/human/T, mob/U) + var/list/candidates = get_candidates(BE_CULTIST) + + shuffle(candidates) + + var/time_passed = world.time + var/list/consenting_candidates = list() + + for(var/candidate in candidates) + + spawn(0) + switch(alert(candidate, "Would you like to play as a Shade? Please choose quickly!","Confirmation","Yes","No")) + if("Yes") + if((world.time-time_passed)>=50 || !src) + return + consenting_candidates += candidate + + sleep(50) + + if(consenting_candidates.len) + var/client/ghost = null + ghost = pick(consenting_candidates) + if(C.contents.len) //If they used the soulstone on someone else in the meantime + return 0 + if(!T.client) //If the original returns in the alloted time + T.client = ghost + for(var/obj/item/W in T) + T.unEquip(W) + init_shade(C, T, U) + qdel(T) + else + U << "The ghost has fled beyond your grasp." diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm index 3d97869a1ca..2af85ca36ba 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -89,3 +89,5 @@ Head of Personnel //Equip ID box & telebaton H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack) H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack) + + announce_head(H.mind, list("Supply", "Service")) //tell underlings (suuply/service) they have a head diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index e686d1e9593..fa8f10f9eff 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -41,6 +41,8 @@ Chief Engineer //Equip telebaton H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack) + announce_head(H.mind, list("Engineering")) //tell underlings (engineering radio) they have a head + /* Station Engineer */ diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index e77878cd7f0..fe7638427f8 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -167,4 +167,10 @@ return max(0, minimal_player_age - C.player_age) /datum/job/proc/config_check() - return 1 \ No newline at end of file + return 1 + +/datum/job/proc/announce_head(var/datum/mind/o_mind, var/channels) //tells the given channel that the given mind is the new department head. See communications.dm for valid channels. + spawn(4) //to allow some initialization + if(announcement_systems.len) + var/obj/machinery/announcement_system/announcer = pick(announcement_systems) + announcer.announce("NEWHEAD", o_mind.name, o_mind.assigned_role, channels) diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 083aedb3ac2..7485f8442ca 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -35,6 +35,8 @@ Chief Medical Officer H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack) + announce_head(H.mind, list("Medical")) //tell underlings (medical radio) they have a head + /* Medical Doctor */ diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index 518813f2990..9f571c85ea2 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -37,6 +37,8 @@ Research Director H.equip_to_slot_or_del(new /obj/item/device/laser_pointer(H), slot_l_store) H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack) + announce_head(H.mind, list("Science")) //tell underlings (science radio) they have a head + /* Scientist */ diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 9adfaef00ca..2d8bdefcbde 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -52,6 +52,8 @@ Head of Security L.implanted = 1 H.sec_hud_set_implants() + announce_head(H.mind, list("Security")) //tell underlings (security radio) they have a head + /* Warden */ diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm new file mode 100644 index 00000000000..e69df9c883c --- /dev/null +++ b/code/game/machinery/announcement_system.dm @@ -0,0 +1,196 @@ +var/list/announcement_systems = list() + +/obj/machinery/announcement_system + density = 1 + anchored = 1 + name = "\improper Automated Announcement System" + desc = "An automated announcement system that handles minor announcements over the radio." + icon = 'icons/obj/machines/telecomms.dmi' + icon_state = "AAS_On" + var/obj/item/device/radio/headset/radio + + verb_say = "coldly states" + verb_ask = "queries" + verb_exclaim = "alarms" + + var/broken = 0 + + idle_power_usage = 20 + active_power_usage = 50 + + var/arrival = "%PERSON has signed up as %RANK" + var/arrivalToggle = 1 + var/newhead = "%PERSON, %RANK, is the department head." + var/newheadToggle = 1 + + var/greenlight = "Light_Green" + var/pinklight = "Light_Pink" + var/errorlight = "Error_Red" + +/obj/machinery/announcement_system/New() + ..() + announcement_systems += src + radio = new /obj/item/device/radio/headset/ai(src) + + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/announcement_system(null) + component_parts += new /obj/item/stack/cable_coil(null, 2) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) + RefreshParts() + + update_icon() + +/obj/machinery/announcement_system/update_icon() + if(is_operational()) + icon_state = (panel_open ? "AAS_On_Open" : "AAS_On") + else + icon_state = (panel_open ? "AAS_Off_Open" : "AAS_Off") + + + overlays.Cut() + if(arrivalToggle) + overlays |= greenlight + else + overlays -= greenlight + + if(newheadToggle) + overlays |= pinklight + else + overlays -= pinklight + + if(broken) + overlays |= errorlight + else + overlays -= errorlight + +/obj/machinery/announcement_system/Destroy() + announcement_systems -= src //"OH GOD WHY ARE THERE 100,000 LISTED ANNOUNCEMENT SYSTEMS?!!" + +/obj/machinery/announcement_system/power_change() + ..() + update_icon() + +/obj/machinery/announcement_system/attackby(obj/item/P, mob/user, params) + if(istype(P, /obj/item/weapon/screwdriver)) + if(!panel_open) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "You open the maintenance hatch of [src]." + panel_open = 1 + else + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "You close the maintenance hatch of [src]." + panel_open = 0 + update_icon() + return + + if(panel_open) + default_deconstruction_crowbar(P) + if(istype(P, /obj/item/device/multitool) && broken) + user << "You reset [src]'s firmware." + broken = 0 + update_icon() + +/obj/machinery/announcement_system/attack_hand(mob/user) + if(can_be_used_by(user)) + Interact(user) + +/obj/machinery/announcement_system/proc/CompileText(str, user, rank) //replaces user-given variables with actual thingies. + str = replacetext(str, "%PERSON", "[user]") + str = replacetext(str, "%RANK", "[rank]") + return str + +/obj/machinery/announcement_system/proc/announce(message_type, user, rank, list/channels) + if(!is_operational()) + return + + var/message + + if(message_type == "ARRIVAL" && arrivalToggle) + message = CompileText(arrival, user, rank) + + else if(message_type == "NEWHEAD" && newheadToggle) + message = CompileText(newhead, user, rank) + + if(channels.len == 0) + radio.talk_into(src, message, null, list(SPAN_ROBOT)) + else + for(var/channel in channels) + radio.talk_into(src, message, channel, list(SPAN_ROBOT)) + +//config stuff + +/obj/machinery/announcement_system/proc/Interact(mob/user) + if(!can_be_used_by(user)) + return + + if(broken) + visible_message("[src] buzzes.", "You hear a faint buzz.") + playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 1) + return + + + var/contents = "Arrival Announcement: ([(arrivalToggle ? "On" : "Off")])
\n[arrival]

\n" + contents += "Departmental Head Announcement: ([(newheadToggle ? "On" : "Off")])
\n[newhead]

\n" + + var/datum/browser/popup = new(user, "announcement_config", "Automated Announcement Configuration", 370, 220) + popup.set_content(contents) + popup.open() + +/obj/machinery/announcement_system/Topic(href, href_list) + if(!can_be_used_by(usr) || usr.lying || usr.stat || usr.stunned) + return + if(broken) + visible_message("[src] buzzes.", "You hear a faint buzz.") + playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 1) + return + + if(href_list["ArrivalTopic"]) + var/NewMessage = stripped_input(usr, "Enter in the arrivals announcement configuration.", "Arrivals Announcement Config", arrival) + if(!in_range(src, usr) && src.loc != usr && !isAI(usr)) + return + if(NewMessage) + arrival = NewMessage + else if(href_list["NewheadTopic"]) + var/NewMessage = stripped_input(usr, "Enter in the departmental head announcement configuration.", "Head Departmental Announcement Config", newhead) + if(!in_range(src, usr) && src.loc != usr && !isAI(usr)) + return + if(NewMessage) + newhead = NewMessage + + else if(href_list["NewheadT-Topic"]) + newheadToggle = !newheadToggle + update_icon() + else if(href_list["ArrivalT-Topic"]) + arrivalToggle = !arrivalToggle + update_icon() + + add_fingerprint(usr) + Interact(usr) + return + +/obj/machinery/announcement_system/attack_ai(mob/living/silicon/ai/user) + if(!isAI(user)) + return + if(broken) + user << "[src]'s firmware appears to be malfunctioning!" + return + Interact(user) + +/obj/machinery/announcement_system/proc/act_up() //does funny breakage stuff + broken = 1 + update_icon() + + arrival = pick("#!@%ERR-34%2 CANNOT LOCAT@# JO# F*LE!", "CRITICAL ERROR 99.", "ERR)#: DA#AB@#E NOT F(*ND!") + newhead = pick("OV#RL()D: \[UNKNOWN??\] DET*#CT)D!", "ER)#R - B*@ TEXT F*O(ND!", "AAS.exe is not responding. NanoOS is searching for a solution to the problem.") + +/obj/machinery/announcement_system/emp_act(severity) + if(stat & (NOPOWER|BROKEN)) + ..(severity) + return + act_up() + ..(severity) + +/obj/machinery/announcement_system/emag_act() + ..() + emagged = 1 + act_up() \ No newline at end of file diff --git a/code/game/machinery/atmoalter/meter.dm b/code/game/machinery/atmoalter/meter.dm index 47d32366084..5f6835bff24 100644 --- a/code/game/machinery/atmoalter/meter.dm +++ b/code/game/machinery/atmoalter/meter.dm @@ -119,6 +119,11 @@ usr << status() return 1 +/obj/machinery/meter/singularity_pull(S, current_size) + if(current_size >= STAGE_FIVE) + new /obj/item/pipe_meter(loc) + qdel(src) + // TURF METER - REPORTS A TILE'S AIR CONTENTS // why are you yelling? diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm index cb21aa88feb..9c6639c3bd7 100644 --- a/code/game/machinery/bots/bots.dm +++ b/code/game/machinery/bots/bots.dm @@ -702,6 +702,7 @@ obj/machinery/bot/proc/bot_reset() /obj/machinery/bot/Bump(M as mob|obj) //Leave no door unopened! + . = ..() if((istype(M, /obj/machinery/door/airlock) || istype(M, /obj/machinery/door/window)) && (!isnull(botcard))) var/obj/machinery/door/D = M if(D.check_access(botcard)) @@ -711,4 +712,3 @@ obj/machinery/bot/proc/bot_reset() var/mob/living/Mb = M loc = Mb.loc frustration = 0 - return \ No newline at end of file diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index f7b2e0c8010..82b4a8d59fb 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -747,7 +747,7 @@ obj/machinery/bot/mulebot/bot_reset() M.stop_pulling() M.Stun(8) M.Weaken(5) - ..() + return ..() /obj/machinery/bot/mulebot/alter_health() return get_turf(src) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index d351c5f7ec4..4288620d25e 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -254,6 +254,15 @@ to destroy them and players will be able to make replacements. user << "You set the board to [names_paths[build_path]]." req_components = list(text2path("/obj/item/weapon/vending_refill/[copytext("[build_path]", 24)]") = 3) //Never before has i used a method as horrible as this one, im so sorry +/obj/item/weapon/circuitboard/announcement_system + name = "circuit board (Announcement System)" + build_path = /obj/machinery/announcement_system + board_type = "machine" + origin_tech = "programming=3;bluespace=2" + req_components = list( + /obj/item/stack/cable_coil = 2, + /obj/item/weapon/stock_parts/console_screen = 1) + /obj/item/weapon/circuitboard/smes name = "circuit board (SMES)" build_path = /obj/machinery/power/smes diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index e023131b2f6..245b949cb79 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -86,7 +86,7 @@ /obj/machinery/door/airlock/centcom icon = 'icons/obj/doors/Doorele.dmi' opacity = 1 - doortype = null //(centcom) there's no door assembly sprites for this one. + doortype = /obj/structure/door_assembly/door_assembly_centcom /obj/machinery/door/airlock/vault name = "vault door" @@ -980,6 +980,9 @@ About the new airlock wires panel: if(src.doortype) var/obj/structure/door_assembly/A = new src.doortype(src.loc) A.heat_proof_finished = src.heat_proof //tracks whether there's rglass in + else + new /obj/structure/door_assembly/door_assembly_0(src.loc) + //If you come across a null doortype, it will produce the default assembly instead of disintegrating. if(emagged) user << "You discard the damaged electronics." diff --git a/code/game/machinery/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm index 218c4c50ddc..bba22799b5f 100644 --- a/code/game/machinery/embedded_controller/access_controller.dm +++ b/code/game/machinery/embedded_controller/access_controller.dm @@ -21,6 +21,14 @@ /obj/machinery/doorButtons/initialize() findObjsByTag() +/obj/machinery/doorButtons/emag_act(mob/user) + if(!emagged) + emagged = 1 + req_access = list() + req_one_access = list() + playsound(src.loc, "sparks", 100, 1) + user << "You short out the access controller." + /obj/machinery/doorButtons/proc/removeMe() diff --git a/code/game/mecha/combat/phazon.dm b/code/game/mecha/combat/phazon.dm index a3f27aa2759..0eb7cf4e577 100644 --- a/code/game/mecha/combat/phazon.dm +++ b/code/game/mecha/combat/phazon.dm @@ -21,7 +21,7 @@ var/datum/action/mecha/mech_toggle_phasing/phasing_action = new /obj/mecha/combat/phazon/Bump(atom/obstacle) - if(phasing && get_charge()>=phasing_energy_drain) + if(phasing && get_charge()>=phasing_energy_drain && !throwing) spawn() if(can_move) can_move = 0 diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 757497403de..0e178a4218e 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -445,23 +445,17 @@ playsound(src,stepsound,40,1) return result -/obj/mecha/Bump(var/atom/obstacle) -// src.inertia_dir = null - if(istype(obstacle, /obj)) - var/obj/O = obstacle - if(istype(O, /obj/effect/portal)) //derpfix - anchored = 0 - O.Crossed(src) - src.anchored = 1 - else if(!O.anchored) +/obj/mecha/Bump(var/atom/obstacle, yes) + if(yes) + if(..()) //mech was thrown + return + if(istype(obstacle, /obj)) + var/obj/O = obstacle + if(!O.anchored) + step(obstacle, dir) + else if(istype(obstacle, /mob)) step(obstacle, dir) - else //I have no idea why I disabled this - obstacle.Bumped(src) - else if(istype(obstacle, /mob)) - step(obstacle, dir) - else - obstacle.Bumped(src) - return + /////////////////////////////////// //////// Internal damage //////// diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index 2d89998c4d7..780f45e5ffd 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -43,7 +43,6 @@ color = G.color_hex icon_state = G.name G.territory_new |= list(territory.type = territory.name) - G.territory_lost -= territory.type ..(location, color, icon_state, e_name, rotation) @@ -51,6 +50,7 @@ var/area/territory = get_area(src) if(gang) + gang.territory -= territory.type gang.territory_new -= territory.type gang.territory_lost |= list(territory.type = territory.name) ..() \ No newline at end of file diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index bb68ce45f04..aa1abe7ae6c 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -29,7 +29,7 @@ /obj/effect/effect/foam/New(loc) ..(loc) create_reagents(1000) //limited by the size of the reagent holder anyway. - SSobj.processing.Add(src) + SSobj.processing |= src playsound(src, 'sound/effects/bubbles2.ogg', 80, 1, -3) /obj/effect/effect/foam/Destroy() diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index b2fcf48b72c..b1e6b6dde79 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -31,7 +31,7 @@ /obj/effect/effect/smoke/New() ..() create_reagents(500) - SSobj.processing.Add(src) + SSobj.processing |= src lifetime += rand(-1,1) /obj/effect/effect/smoke/Destroy() @@ -276,8 +276,9 @@ lifetime = 10 /obj/effect/effect/smoke/sleeping/process() - for(var/mob/living/carbon/M in range(1,src)) - smoke_mob(M) + if(..()) + for(var/mob/living/carbon/M in range(1,src)) + smoke_mob(M) /obj/effect/effect/smoke/sleeping/smoke_mob(mob/living/carbon/M) if(..()) diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index e01861deec9..3cd61feaf1f 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -77,6 +77,8 @@ icon_state = "eggs" var/amount_grown = 0 var/player_spiders = 0 + var/poison_type = "toxin" + var/poison_per_bite = 5 /obj/effect/spider/eggcluster/New() pixel_x = rand(3,-3) @@ -89,6 +91,8 @@ var/num = rand(3,12) for(var/i=0, i[src] stares up at you with friendly eyes." + if(!owned) + user << "You pet [src]. You swear it looks up at you." owner = user - owned = 0 + owned = 1 return ..() /obj/item/toy/carpplushie/dehy_carp/afterattack(obj/O, mob/user,proximity) if(!proximity) return if(istype(O,/obj/structure/sink)) - user << "You place [src] under a stream of water..." user.drop_item() loc = get_turf(O) return Swell() @@ -45,4 +44,8 @@ if(F == "neutral") factions -= F C.faction = factions + if (!owner || owner.faction != C.faction) + visible_message("You have a bad feeling about this.") // welcome to the hostile carp enjoy your die + else + visible_message("The newly grown carp looks up at you with friendly eyes.") qdel(src) \ No newline at end of file diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index a340ca49274..780de85afed 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1132,6 +1132,7 @@ // Attack self /obj/item/toy/carpplushie/attack_self(mob/user) playsound(src.loc, bitesound, 20, 1) + user << "You pet [src]. D'awww." return ..() /* diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index fd1c0971718..5266cb9077e 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -323,12 +323,6 @@ else return 1 -/obj/item/weapon/twohanded/shockpaddles/Topic(href, href_list) - if(href_list["reenter"]) - var/mob/dead/observer/ghost = usr - if(istype(ghost)) - ghost.reenter_corpse(ghost) - /obj/item/weapon/twohanded/shockpaddles/attack(mob/M, mob/user) var/halfwaycritdeath = (config.health_threshold_crit + config.health_threshold_dead) / 2 @@ -404,10 +398,8 @@ busy = 0 update_icon() return - var/mob/dead/observer/ghost = H.get_ghost() - if(ghost) - ghost << "Your heart is being defibrillated. Re-enter your corpse if you want to be revived! (Click to re-enter)" - ghost << 'sound/effects/genetics.ogg' + H.notify_ghost_cloning("Your heart is being defibrillated. Re-enter your corpse if you want to be revived!") + user.visible_message("[user] begins to place [src] on [M.name]'s chest.", "You begin to place [src] on [M.name]'s chest...") busy = 1 update_icon() @@ -432,11 +424,10 @@ M.visible_message("[M]'s body convulses a bit.") playsound(get_turf(src), "bodyfall", 50, 1) playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1) - for(var/obj/item/organ/limb/O in H.organs) - total_brute += O.brute_dam - total_burn += O.burn_dam - ghost = H.get_ghost() - if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !ghost && tplus < tlimit && !(NOCLONE in H.mutations)) + total_brute = H.getBruteLoss() + total_burn = H.getFireLoss() + + if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !H.get_ghost() && tplus < tlimit && !(NOCLONE in H.mutations)) //If the body has been fixed so that they would not be in crit when defibbed, give them oxyloss to put them back into crit if (H.health > halfwaycritdeath) H.adjustOxyLoss(H.health - halfwaycritdeath) diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 463528288b0..72664925ca2 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -115,7 +115,8 @@ /obj/item/weapon/storage/fancy/cigarettes/remove_from_storage(obj/item/W, atom/new_location) if(istype(W,/obj/item/clothing/mask/cigarette)) - reagents.trans_to(W,(reagents.total_volume/contents.len)) + if(reagents) + reagents.trans_to(W,(reagents.total_volume/contents.len)) ..() /obj/item/weapon/storage/fancy/cigarettes/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 82758639261..4dd83b2c20c 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -1,8 +1,8 @@ -// To clarify: -// For use_to_pickup and allow_quick_gather functionality, -// see item/attackby() (/game/objects/items.dm) -// Do not remove this functionality without good reason, cough reagent_containers cough. -// -Sayu +// External storage-related logic: +// /mob/proc/ClickOn() in /_onclick/click.dm - clicking items in storages +// /mob/living/Move() in /modules/mob/living/living.dm - hiding storage boxes on mob movement +// /item/attackby() in /game/objects/items.dm - use_to_pickup and allow_quick_gather functionality +// -- c0 /obj/item/weapon/storage @@ -42,11 +42,11 @@ show_to(M) return - if(!( M.restrained() ) && !( M.stat )) - if(!( istype(over_object, /obj/screen) )) + if(!M.restrained() && !M.stat) + if(!istype(over_object, /obj/screen)) return content_can_dump(over_object, M) - if(!(loc == usr) || (loc && loc.loc == usr)) + if(loc != usr || (loc && loc.loc == usr)) return playsound(loc, "rustle", 50, 1, -5) @@ -107,7 +107,7 @@ is_seeing |= user -/obj/item/weapon/storage/throw_at(atom/target, range, speed) +/obj/item/weapon/storage/throw_at(atom/target, range, speed, mob/thrower, spin) close_all() return ..() diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index 41b143a4e93..703a17807d5 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -80,9 +80,9 @@ new /obj/item/weapon/wrench(src) new /obj/item/weapon/weldingtool/largetank(src) new /obj/item/weapon/crowbar/red(src) - new /obj/item/stack/cable_coil(src, 30, "red") new /obj/item/weapon/wirecutters(src, "red") new /obj/item/device/multitool(src) + new /obj/item/clothing/gloves/color/red/insulated(src) /obj/item/weapon/storage/toolbox/drone name = "mechanical toolbox" diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 6f5809891e2..e130ef5811a 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -25,7 +25,6 @@ icon_state = "door_as_1" airlock_type = /obj/machinery/door/airlock anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_com @@ -37,7 +36,6 @@ glass_type = /obj/machinery/door/airlock/glass_command airlock_type = /obj/machinery/door/airlock/command anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_com/glass @@ -53,7 +51,6 @@ glass_type = /obj/machinery/door/airlock/glass_security airlock_type = /obj/machinery/door/airlock/security anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_sec/glass @@ -69,7 +66,6 @@ glass_type = /obj/machinery/door/airlock/glass_engineering airlock_type = /obj/machinery/door/airlock/engineering anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_eng/glass @@ -85,7 +81,6 @@ glass_type = /obj/machinery/door/airlock/glass_mining airlock_type = /obj/machinery/door/airlock/mining anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_min/glass @@ -101,7 +96,6 @@ glass_type = /obj/machinery/door/airlock/glass_atmos airlock_type = /obj/machinery/door/airlock/atmos anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_atmo/glass @@ -117,7 +111,6 @@ glass_type = /obj/machinery/door/airlock/glass_research airlock_type = /obj/machinery/door/airlock/research anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_research/glass @@ -133,7 +126,6 @@ glass_type = /obj/machinery/door/airlock/glass_science airlock_type = /obj/machinery/door/airlock/science anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_science/glass @@ -149,7 +141,6 @@ glass_type = /obj/machinery/door/airlock/glass_medical airlock_type = /obj/machinery/door/airlock/medical anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_med/glass @@ -163,7 +154,6 @@ icontext = "mai" airlock_type = /obj/machinery/door/airlock/maintenance anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_ext @@ -173,7 +163,6 @@ icontext = "ext" airlock_type = /obj/machinery/door/airlock/external anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_fre @@ -183,7 +172,6 @@ icontext = "fre" airlock_type = /obj/machinery/door/airlock/freezer anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_hatch @@ -193,7 +181,6 @@ icontext = "hatch" airlock_type = /obj/machinery/door/airlock/hatch anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_mhatch @@ -203,7 +190,6 @@ icontext = "mhatch" airlock_type = /obj/machinery/door/airlock/maintenance_hatch anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_glass @@ -211,7 +197,6 @@ icon_state = "door_as_g1" airlock_type = /obj/machinery/door/airlock/glass anchored = 1 - density = 1 state = 1 mineral = "glass" @@ -220,7 +205,6 @@ icon_state = "door_as_gold1" airlock_type = /obj/machinery/door/airlock/gold anchored = 1 - density = 1 state = 1 mineral = "gold" @@ -229,7 +213,6 @@ icon_state = "door_as_silver1" airlock_type = /obj/machinery/door/airlock/silver anchored = 1 - density = 1 state = 1 mineral = "silver" @@ -238,7 +221,6 @@ icon_state = "door_as_diamond1" airlock_type = /obj/machinery/door/airlock/diamond anchored = 1 - density = 1 state = 1 mineral = "diamond" @@ -247,7 +229,6 @@ icon_state = "door_as_uranium1" airlock_type = /obj/machinery/door/airlock/uranium anchored = 1 - density = 1 state = 1 mineral = "uranium" @@ -256,7 +237,6 @@ icon_state = "door_as_plasma1" airlock_type = /obj/machinery/door/airlock/plasma anchored = 1 - density = 1 state = 1 mineral = "plasma" @@ -266,7 +246,6 @@ icon_state = "door_as_clown1" airlock_type = /obj/machinery/door/airlock/clown anchored = 1 - density = 1 state = 1 mineral = "bananium" @@ -275,7 +254,6 @@ icon_state = "door_as_sandstone1" airlock_type = /obj/machinery/door/airlock/sandstone anchored = 1 - density = 1 state = 1 mineral = "sandstone" @@ -286,7 +264,6 @@ icontext = "highsec" airlock_type = /obj/machinery/door/airlock/highsecurity anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_vault @@ -296,7 +273,6 @@ icontext = "vault" airlock_type = /obj/machinery/door/airlock/vault anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_shuttle @@ -306,7 +282,6 @@ icontext = "shuttle" airlock_type = /obj/machinery/door/airlock/shuttle anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_wood @@ -314,7 +289,6 @@ icon_state = "door_as_wood1" airlock_type = /obj/machinery/door/airlock/wood anchored = 1 - density = 1 state = 1 mineral = "wood" @@ -327,13 +301,20 @@ glass_type = /obj/machinery/door/airlock/glass_virology airlock_type = /obj/machinery/door/airlock/virology anchored = 1 - density = 1 state = 1 /obj/structure/door_assembly/door_assembly_viro/glass mineral = "glass" icon_state = "door_as_gviro1" +/obj/structure/door_assembly/door_assembly_centcom + icon_state = "door_as_ele1" + typetext = "centcom" + icontext = "ele" + airlock_type = /obj/machinery/door/airlock/centcom + anchored = 1 + state = 1 + /obj/structure/door_assembly/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weapon/pen)) var/t = stripped_input(user, "Enter the name for the door.", src.name, src.created_name,MAX_NAME_LEN) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 8638ab62db3..1e72ad484a0 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -102,7 +102,7 @@ return user << "You start building a false wall..." if(do_after(user, 20, target = src)) - if(!src.loc || !S || S.amount < 2) + if(!src.loc || !S || S.get_amount() < 2) return S.use(2) user << "You create a false wall. Push on it to open or close the passage." diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 58ff54da606..22f4ae79d1b 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -233,7 +233,7 @@ if(user.stat || user.stunned || user.weakened || user.paralysis) unbuckle_mob() if(istype(user.l_hand, keytype) || istype(user.r_hand, keytype)) - if(!Process_Spacemove(direction) || !has_gravity(src.loc) || move_delay) + if(!Process_Spacemove(direction) || !has_gravity(src.loc) || move_delay || !isturf(loc)) return step(src, direction) update_mob() diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index d9035cb568a..2bcfe8d976f 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -268,7 +268,7 @@ return(2) /turf/proc/can_have_cabling() - return !density + return 1 /turf/proc/can_lay_cable() return can_have_cabling() & !intact diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index bd5cd555a65..2a1efc9735e 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -1,4 +1,3 @@ - /client/verb/who() set name = "Who" set category = "OOC" @@ -8,11 +7,40 @@ var/list/Lines = list() if(holder) - for(var/client/C in clients) - var/entry = "\t[C.key]" - if(C.holder && C.holder.fakekey) - entry += " (as [C.holder.fakekey])" - Lines += entry + if (check_rights(R_ADMIN,0) && isobserver(src.mob))//If they have +ADMIN and are a ghost they can see players IC names and statuses. + var/mob/dead/observer/G = src.mob + if(!G.started_as_observer)//If you aghost to do this, KorPhaeron will deadmin you in your sleep. + log_admin("[key_name(usr)] checked advanced who in-round") + for(var/client/C in clients) + var/entry = "\t[C.key]" + if(C.holder && C.holder.fakekey) + entry += " (as [C.holder.fakekey])" + if (isnewplayer(C.mob)) + entry += " - In Lobby" + else + entry += " - Playing as [C.mob.real_name]" + switch(C.mob.stat) + if(UNCONSCIOUS) + entry += " - Unconscious" + if(DEAD) + if(isobserver(C.mob)) + var/mob/dead/observer/O = C.mob + if(O.started_as_observer) + entry += " - Observing" + else + entry += " - DEAD" + else + entry += " - DEAD" + if(is_special_character(C.mob)) + entry += " - Antagonist" + entry += " (?)" + Lines += entry + else//If they don't have +ADMIN, only show hidden admins + for(var/client/C in clients) + var/entry = "\t[C.key]" + if(C.holder && C.holder.fakekey) + entry += " (as [C.holder.fakekey])" + Lines += entry else for(var/client/C in clients) if(C.holder && C.holder.fakekey) diff --git a/code/modules/admin/admin_memo.dm b/code/modules/admin/admin_memo.dm index 774f55ce6ae..7c40c3aa53a 100644 --- a/code/modules/admin/admin_memo.dm +++ b/code/modules/admin/admin_memo.dm @@ -1,13 +1,32 @@ -/client/proc/admin_memo(task in list("Show","Write","Edit","Remove")) +/client/proc/admin_memo() set name = "Memo" set category = "Server" if(!check_rights(0)) return if(!dbcon.IsConnected()) - usr << "Failed to establish database connection." + src << "Failed to establish database connection." + return + var/memotask = input(usr,"Choose task.","Memo") in list("Show","Write","Edit","Remove") + if(!memotask) + return + admin_memo_output(memotask) + +/client/proc/admin_memo_output(task) + if(!task) + return + if(!dbcon.IsConnected()) + src << "Failed to establish database connection." return var/sql_ckey = sanitizeSQL(src.ckey) switch(task) if("Write") + var/DBQuery/query_memocheck = dbcon.NewQuery("SELECT ckey FROM [format_table_name("memo")] WHERE (ckey = '[sql_ckey]')") + if(!query_memocheck.Execute()) + var/err = query_memocheck.ErrorMsg() + log_game("SQL ERROR obtaining ckey from memo table. Error : \[[err]\]\n") + return + if(query_memocheck.NextRow()) + src << "You already have set a memo." + return var/memotext = input(src,"Write your Memo","Memo") as text|null if(!memotext) return @@ -26,13 +45,13 @@ var/err = query_memolist.ErrorMsg() log_game("SQL ERROR obtaining ckey from memo table. Error : \[[err]\]\n") return - if(!query_memolist.NextRow()) - src << "No memos found in database." - return var/list/memolist = list() while(query_memolist.NextRow()) - var/ckey = query_memolist.item[2] - memolist += "[ckey]" + var/lkey = query_memolist.item[1] + memolist += "[lkey]" + if(!memolist.len) + src << "No memos found in database." + return var/target_ckey = input(src, "Select whose memo to edit", "Select memo") as null|anything in memolist if(!target_ckey) return @@ -43,14 +62,14 @@ log_game("SQL ERROR obtaining ckey, memotext from memo table. Error : \[[err]\]\n") return if(query_memofind.NextRow()) - var/old_memo = query_memofind.item[3] + var/old_memo = query_memofind.item[2] var/new_memo = input("Input new memo", "New Memo", "[old_memo]", null) as null|text if(!new_memo) return new_memo = sanitizeSQL(new_memo) var/edit_text = "Edited by [sql_ckey] on [SQLtime()] from
[old_memo]
to
[new_memo]
" edit_text = sanitizeSQL(edit_text) - var/DBQuery/update_query = dbcon.NewQuery("UPDATE [format_table_name("memo")] SET memotext = '[new_memo]', last_editor = '[sql_ckey]', edits = CONCAT(edits,'[edit_text]') WHERE (ckey = '[target_sql_ckey]')") + var/DBQuery/update_query = dbcon.NewQuery("UPDATE [format_table_name("memo")] SET memotext = '[new_memo]', last_editor = '[sql_ckey]', edits = CONCAT(IFNULL(edits,''),'[edit_text]') WHERE (ckey = '[target_sql_ckey]')") if(!update_query.Execute()) var/err = update_query.ErrorMsg() log_game("SQL ERROR editing memo. Error : \[[err]\]\n") @@ -62,18 +81,24 @@ log_admin("[key_name(src)] has edited [target_sql_ckey]'s memo from [old_memo] to [new_memo]") message_admins("[key_name_admin(src)] has edited [target_sql_ckey]'s memo from
[old_memo]
to
[new_memo]") if("Show") - var/DBQuery/query_memoshow = dbcon.NewQuery("SELECT id, ckey, memotext, timestamp, last_editor FROM [format_table_name("memo")])") - var/output + var/DBQuery/query_memoshow = dbcon.NewQuery("SELECT ckey, memotext, timestamp, last_editor FROM [format_table_name("memo")]") + if(!query_memoshow.Execute()) + var/err = query_memoshow.ErrorMsg() + log_game("SQL ERROR obtaining ckey, memotext, timestamp, last_editor from memo table. Error : \[[err]\]\n") + return + var/output = null while(query_memoshow.NextRow()) - var/id = query_memoshow.item[1] - var/ckey = query_memoshow.item[2] - var/memotext = query_memoshow.item[3] - var/timestamp = query_memoshow.item[4] - var/last_editor = query_memoshow.item[5] - output += "Memo by [ckey] on [timestamp]:" + var/ckey = query_memoshow.item[1] + var/memotext = query_memoshow.item[2] + var/timestamp = query_memoshow.item[3] + var/last_editor = query_memoshow.item[4] + output += "Memo by [ckey] on [timestamp]" if(last_editor) - output += "
Last edit by [last_editor] (Click here to see edit log)" + output += "
Last edit by [last_editor] (Click here to see edit log)" output += "
[memotext]

" + if(!output) + src << "No memos found in database." + return src << output if("Remove") var/DBQuery/query_memodellist = dbcon.NewQuery("SELECT ckey FROM [format_table_name("memo")]") @@ -81,13 +106,13 @@ var/err = query_memodellist.ErrorMsg() log_game("SQL ERROR obtaining ckey from memo table. Error : \[[err]\]\n") return - if(!query_memodellist.NextRow()) - src << "No memos found in database." - return var/list/memolist = list() while(query_memodellist.NextRow()) - var/ckey = query_memodellist.item[2] + var/ckey = query_memodellist.item[1] memolist += "[ckey]" + if(!memolist.len) + src << "No memos found in database." + return var/target_ckey = input(src, "Select whose memo to delete", "Select memo") as null|anything in memolist if(!target_ckey) return diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 1320ae695c2..7fdf3adb2d7 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -264,7 +264,11 @@ M_job = "New player" else if(isobserver(M)) - M_job = "Ghost" + var/mob/dead/observer/O = M + if(O.started_as_observer)//Did they get BTFO or are they just not trying? + M_job = "Observer" + else + M_job = "Ghost" var/M_name = html_encode(M.name) var/M_rname = html_encode(M.real_name) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 6f0493a0f86..b1ce38e14d7 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2058,10 +2058,14 @@ src.access_news_network() else if(href_list["memoeditlist"]) - var/DBQuery/query_memoedits = dbcon.NewQuery("SELECT edits FROM [format_table_name("memo")] WHERE (id = '[href_list["id"]]") - query_memoedits.Execute() + var/sql_key = sanitizeSQL("[href_list["memoeditlist"]]") + var/DBQuery/query_memoedits = dbcon.NewQuery("SELECT edits FROM [format_table_name("memo")] WHERE (ckey = '[sql_key]')") + if(!query_memoedits.Execute()) + var/err = query_memoedits.ErrorMsg() + log_game("SQL ERROR obtaining edits from memo table. Error : \[[err]\]\n") + return if(query_memoedits.NextRow()) - var/edit_log = query_memoedits.item[6] + var/edit_log = query_memoedits.item[1] usr << browse(edit_log,"window=memoeditlist") else if(href_list["check_antagonist"]) diff --git a/code/modules/admin/verbs/cinematic.dm b/code/modules/admin/verbs/cinematic.dm index dce6bbf8659..107c5310770 100644 --- a/code/modules/admin/verbs/cinematic.dm +++ b/code/modules/admin/verbs/cinematic.dm @@ -10,7 +10,7 @@ var/override switch(parameter) if(1) - override = input(src,"mode = ?","Enter Parameter",null) as anything in list("nuclear emergency","no override") + override = input(src,"mode = ?","Enter Parameter",null) as anything in list("nuclear emergency","gang war","fake","no override") if(0) override = input(src,"mode = ?","Enter Parameter",null) as anything in list("blob","nuclear emergency","AI malfunction","no override") ticker.station_explosion_cinematic(parameter,override) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 5cdf335ed49..25b84838539 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -450,17 +450,17 @@ // CENTCOM RESPONSE TEAM /datum/admins/proc/makeEmergencyresponseteam() - var/alert = input("Which team should we send?", "Select Response Level") as null|anything in list("Green: Centcom Official", "Blue: Light ERT", "Amber: Full ERT", "Red: Elite ERT", "Delta: Deathsquad") + var/alert = input("Which team should we send?", "Select Response Level") as null|anything in list("Green: Centcom Official", "Blue: Light ERT (No Armoury Access)", "Amber: Full ERT (Armoury Access)", "Red: Elite ERT (Armoury Access + Pulse Weapons)", "Delta: Deathsquad") if(!alert) return switch(alert) if("Delta: Deathsquad") return makeDeathsquad() - if("Red: Elite ERT") + if("Red: Elite ERT (Armoury Access + Pulse Weapons)") alert = "Red" - if("Amber: Full ERT") + if("Amber: Full ERT (Armoury Access)") alert = "Amber" - if("Blue: Light ERT") + if("Blue: Light ERT (No Armoury Access)") alert = "Blue" if("Green: Centcom Official") return makeOfficial() diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 4e07e0d8a3c..15de84c0369 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -128,7 +128,7 @@ var/next_external_rsc = 0 if(holder) add_admin_verbs() - admin_memo("Show") + admin_memo_output("Show") if((global.comms_key == "default_pwd" || length(global.comms_key) <= 6) && global.comms_allowed) //It's the default value or less than 6 characters long, but it somehow didn't disable comms. src << "The server's API key is either too short or is the default value! Consider changing it immediately!" diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index d351a3e0890..d0119b29ec5 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1045,14 +1045,6 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set character.real_name = real_name character.name = character.real_name - if(character.dna) - character.dna.real_name = character.real_name - if(pref_species != /datum/species/human && config.mutant_races) - hardset_dna(character, null, null, null, null, pref_species.type, features) - else - hardset_dna(character, null, null, null, null, /datum/species/human, features) - character.update_mutcolor() - character.gender = gender character.age = age character.blood_type = blood_type @@ -1072,5 +1064,15 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set character.backbag = backbag - character.update_body() - character.update_hair() + if(character.dna) + var/datum/species/chosen_species + + character.dna.real_name = character.real_name + if(pref_species != /datum/species/human && config.mutant_races) + chosen_species = pref_species.type + else + chosen_species = /datum/species/human + hardset_dna(character, null, null, null, null, chosen_species, features) + else + character.update_body() + character.update_hair() \ No newline at end of file diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 18f5c7937f4..ced08b92025 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -66,6 +66,13 @@ item_state = "redgloves" item_color = "red" +/obj/item/clothing/gloves/color/red/insulated + name = "insulated gloves" + desc = "These gloves will protect the wearer from electric shock." + siemens_coefficient = 0 + permeability_coefficient = 0.05 + burn_state = -1 //Won't burn in fires + /obj/item/clothing/gloves/color/rainbow name = "rainbow gloves" desc = "A pair of gloves, they don't look special in any way." diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 6f9bc4c6228..ccb288dd6cc 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -228,3 +228,8 @@ name = "jester hat" desc = "A hat with bells, to add some merryness to the suit." icon_state = "jester_hat" + +/obj/item/clothing/head/rice_hat + name = "rice hat" + desc = "Welcome to the rice fields, motherfucker." + icon_state = "rice_hat" \ No newline at end of file diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index 9237f31d8f2..cc3435554d5 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -3,9 +3,9 @@ /obj/item/clothing/under/rank/bartender desc = "It looks like it could use some more flair." name = "bartender's uniform" - icon_state = "bar_suit" + icon_state = "barman" item_state = "bar_suit" - item_color = "bar_suit" + item_color = "barman" /obj/item/clothing/under/rank/captain //Alright, technically not a 'civilian' but its better then giving a .dm file for a single define. diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 8ad8c75980a..756d7608141 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -15,7 +15,7 @@ Gunshots/explosions/opening doors/less rare audio (done) var/image/halimage var/image/halbody var/obj/halitem - var/hal_screwyhud = 0 //1 - critical, 2 - dead, 3 - oxygen indicator, 4 - toxin indicator + var/hal_screwyhud = 0 //1 - critical, 2 - dead, 3 - oxygen indicator, 4 - toxin indicator, 5 - perfect health var/handling_hal = 0 var/hal_crit = 0 diff --git a/code/modules/food&drinks/drinks/drinks/bottle.dm b/code/modules/food&drinks/drinks/drinks/bottle.dm index 9fa1cbe5555..8f003e6fb75 100644 --- a/code/modules/food&drinks/drinks/drinks/bottle.dm +++ b/code/modules/food&drinks/drinks/drinks/bottle.dm @@ -300,6 +300,11 @@ /obj/item/weapon/reagent_containers/food/drinks/bottle/molotov/attackby(obj/item/I, mob/user, params) if(is_hot(I) && !active) active = 1 + var/turf/bombturf = get_turf(src) + var/area/bombarea = get_area(bombturf) + message_admins("[key_name(user)]? has primed a [name] for detonation at [bombarea] (JMP).") + log_game("[key_name(user)] has primed a [name] for detonation at [bombarea] ([bombturf.x],[bombturf.y],[bombturf.z]).") + user << "You light \the [src] on fire." overlays += fire_overlay if(!isGlass) @@ -324,4 +329,4 @@ return user << "You snuff out the flame on \the [src]." overlays -= fire_overlay - active = 0 \ No newline at end of file + active = 0 diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index 82734bf827c..334cc5f671c 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -171,6 +171,7 @@ dat += "Leather Satchel: Make ([400/efficiency])
" dat += "Leather Jacket: Make ([500/efficiency])
" dat += "Leather Overcoat: Make ([1000/efficiency])
" + dat += "Rice Hat: Make ([300/efficiency])
" dat += "" else dat += "
No container inside, please insert container.
" @@ -309,9 +310,9 @@ if("overcoat") if (check_cost(1000/efficiency)) return 0 else new/obj/item/clothing/suit/jacket/leather/overcoat(src.loc) - //if("monkey") - // if (check_cost(500)) return 0 - // else new/mob/living/carbon/monkey(src.loc) + if("rice_hat") + if (check_cost(300/efficiency)) return 0 + else new/obj/item/clothing/head/rice_hat(src.loc) processing = 0 menustat = "complete" update_icon() diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 85d0eaa50f0..f0e699253be 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -623,7 +623,7 @@ if(istype(I, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/W = I if(W.welding && !stat) - if(stance != HOSTILE_STANCE_IDLE) + if(AIStatus == AI_ON) user << "[src] is moving around too much to repair!" return if(maxHealth == health) diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 01e6c9b3094..0cf843f2df1 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -457,6 +457,13 @@ var/global/list/rockTurfEdgeCache gets_drilled() ..() +/turf/simulated/mineral/attack_alien(mob/living/carbon/alien/M) + M << "You start digging into the rock..." + playsound(src, 'sound/effects/break_stone.ogg', 50, 1) + if(do_after(M,40, target = src)) + M << "You tunnel into the rock." + gets_drilled(M) + /* /turf/simulated/mineral/proc/setRandomMinerals() var/s = pickweight(list("uranium" = 5, "iron" = 50, "gold" = 5, "silver" = 5, "plasma" = 50, "diamond" = 1)) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 51f948910c1..13ca44627a0 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -167,6 +167,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp mind.current.key = key return 1 +/mob/dead/observer/proc/notify_cloning(var/message, var/sound) + if(message) + src << "[message]" + src << "(Click to re-enter)" + if(sound) + src << sound(sound) + /mob/dead/observer/proc/dead_tele() set category = "Ghost" set name = "Teleport" @@ -363,8 +370,11 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp return ..() /mob/dead/observer/Topic(href, href_list) - if(href_list["follow"]) - var/atom/movable/target = locate(href_list["follow"]) - if((usr == src) && istype(target) && (target != src)) //for safety against href exploits - ManualFollow(target) - + ..() + if(usr == src) + if(href_list["follow"]) + var/atom/movable/target = locate(href_list["follow"]) + if(istype(target) && (target != src)) + ManualFollow(target) + if(href_list["reenter"]) + reenter_corpse() \ No newline at end of file diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm new file mode 100644 index 00000000000..3283c0ebb4f --- /dev/null +++ b/code/modules/mob/living/bloodcrawl.dm @@ -0,0 +1,115 @@ +//Travel through pools of blood. Slaughter Demon powers for everyone! + +#define BLOODCRAWL 1 +#define BLOODCRAWL_EAT 2 + +/mob/living/proc/phaseout(obj/effect/decal/cleanable/B) + var/mob/living/kidnapped = null + var/turf/mobloc = get_turf(src.loc) + var/turf/bloodloc = get_turf(B.loc) + if(Adjacent(bloodloc)) + src.notransform = TRUE + spawn(0) + src.visible_message("[src] sinks into the pool of blood.") + playsound(get_turf(src), 'sound/magic/enter_blood.ogg', 100, 1, -1) + var/obj/effect/dummy/slaughter/holder = PoolOrNew(/obj/effect/dummy/slaughter,mobloc) + src.ExtinguishMob() + if(src.buckled) + src.buckled.unbuckle_mob() + if(src.pulling && src.bloodcrawl == BLOODCRAWL_EAT) + if(istype(src.pulling, /mob/living)) + var/mob/living/victim = src.pulling + if(victim.stat == CONSCIOUS) + src.visible_message("[victim] kicks free of the [src] at the last second!") + else + victim.loc = holder + src.visible_message("The [src] drags [victim] into the pool of blood!") + kidnapped = victim + src.loc = holder + src.holder = holder + if(kidnapped) + src << "You begin to feast on [kidnapped]. You can not move while you are doing this." + playsound(get_turf(src),'sound/magic/Demon_consume.ogg', 100, 1) + sleep(30) + playsound(get_turf(src),'sound/magic/Demon_consume.ogg', 100, 1) + sleep(30) + playsound(get_turf(src),'sound/magic/Demon_consume.ogg', 100, 1) + sleep(30) + src << "You devour [kidnapped]. Your health is fully restored." + src.adjustBruteLoss(-1000) + src.adjustFireLoss(-1000) + src.adjustOxyLoss(-1000) + src.adjustToxLoss(-1000) + kidnapped.ghostize() + qdel(kidnapped) + src.notransform = 0 + +/mob/living/proc/phasein(obj/effect/decal/cleanable/B) + if(src.notransform) + src << "Finish eating first!" + else + src.loc = B.loc + src.client.eye = src + src.visible_message("The [src] rises out of the pool of blood!") + playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1) + qdel(src.holder) + src.holder = null + +/obj/effect/decal/cleanable/blood/CtrlClick(mob/living/user) + ..() + if(user.bloodcrawl) + if(user.holder) + user.phasein(src) + else + user.phaseout(src) + + +/obj/effect/decal/cleanable/trail_holder/CtrlClick(mob/living/user) + ..() + if(user.bloodcrawl) + if(user.holder) + user.phasein(src) + else + user.phaseout(src) + + + +/turf/CtrlClick(var/mob/living/user) + ..() + if(user.bloodcrawl) + for(var/obj/effect/decal/cleanable/B in src.contents) + if(istype(B, /obj/effect/decal/cleanable/blood) || istype(B, /obj/effect/decal/cleanable/trail_holder)) + if(user.holder) + user.phasein(B) + break + else + user.phaseout(B) + break + +/obj/effect/dummy/slaughter //Can't use the wizard one, blocked by jaunt/slow + name = "water" + icon = 'icons/effects/effects.dmi' + icon_state = "nothing" + var/canmove = 1 + density = 0 + anchored = 1 + invisibility = 60 + +obj/effect/dummy/slaughter/relaymove(mob/user, direction) + if (!src.canmove || !direction) return + var/turf/newLoc = get_step(src,direction) + loc = newLoc + src.canmove = 0 + spawn(1) + src.canmove = 1 + +/obj/effect/dummy/slaughter/ex_act(blah) + return +/obj/effect/dummy/slaughter/bullet_act(blah) + return + +/obj/effect/dummy/slaughter/singularity_act(blah) + return + +/obj/effect/dummy/slaughter/Destroy() + return QDEL_HINT_PUTINPOOL diff --git a/code/modules/mob/living/carbon/alien/humanoid/emote.dm b/code/modules/mob/living/carbon/alien/humanoid/emote.dm index fd46ca92087..5270fdabb6d 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/emote.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/emote.dm @@ -6,56 +6,54 @@ param = copytext(act, t1 + 1, length(act) + 1) act = copytext(act, 1, t1) - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) var/muzzled = is_muzzled() var/m_type = 1 var/message switch(act) //Alphabetical please - if ("deathgasp") + if ("deathgasp","deathgasps") message = "[src] lets out a waning guttural screech, green blood bubbling from its maw..." m_type = 2 - if ("gnarl") + if ("gnarl","gnarls") if (!muzzled) message = "[src] gnarls and shows its teeth.." m_type = 2 - if ("hiss") + if ("hiss","hisses") if(!muzzled) message = "[src] hisses." m_type = 2 - if ("moan") + if ("moan","moans") message = "[src] moans!" m_type = 2 - if ("roar") + if ("roar","roars") if (!muzzled) message = "[src] roars." m_type = 2 - if ("roll") + if ("roll","rolls") if (!src.restrained()) message = "[src] rolls." m_type = 1 - if ("scratch") + if ("scratch","scratches") if (!src.restrained()) message = "[src] scratches." m_type = 1 - if ("scretch") + if ("screech","screeches") if (!muzzled) - message = "[src] scretches." + message = "[src] screeches." m_type = 2 - if ("shiver") + if ("shiver","shivers") message = "[src] shivers." m_type = 2 - if ("sign") + if ("sign","signs") if (!src.restrained()) message = text("[src] signs[].", (text2num(param) ? text(" the number []", text2num(param)) : null)) m_type = 1 @@ -65,7 +63,7 @@ m_type = 1 if ("help") //This is an exception - src << "Help for xenomorph emotes. You can use these emotes with say \"*emote\":\n\naflap, airguitar, blink, blink_r, blush, bow, burp, choke, chucke, clap, collapse, cough, dance, deathgasp, drool, flap, frown, gasp, giggle, glare-(none)/mob, gnarl, hiss, jump, laugh, look-atom, me, moan, nod, point-atom, roar, roll, scream, scratch, scretch, shake, shiver, sign-#, sit, smile, sneeze, sniff, snore, stare-(none)/mob, sulk, sway, tail, tremble, twitch, twitch_s, wave, whimper, wink, yawn" + src << "Help for xenomorph emotes. You can use these emotes with say \"*emote\":\n\naflap, airguitar, blink, blink_r, blush, bow, burp, choke, chucke, clap, collapse, cough, dance, deathgasp, drool, flap, frown, gasp, giggle, glare-(none)/mob, gnarl, hiss, jump, laugh, look-atom, me, moan, nod, point-atom, roar, roll, scream, scratch, screech, shake, shiver, sign-#, sit, smile, sneeze, sniff, snore, stare-(none)/mob, sulk, sway, tail, tremble, twitch, twitch_s, wave, whimper, wink, yawn" else ..(act) diff --git a/code/modules/mob/living/carbon/alien/larva/emote.dm b/code/modules/mob/living/carbon/alien/larva/emote.dm index cf4f18c5d07..286ee10a07d 100644 --- a/code/modules/mob/living/carbon/alien/larva/emote.dm +++ b/code/modules/mob/living/carbon/alien/larva/emote.dm @@ -6,83 +6,81 @@ param = copytext(act, t1 + 1, length(act) + 1) act = copytext(act, 1, t1) - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) var/muzzled = is_muzzled() var/m_type = 1 var/message switch(act) //Alphabetically sorted please. - if ("burp") + if ("burp","burps") if (!muzzled) message = "[src] burps." m_type = 2 - if ("choke") + if ("choke","chokes") message = "[src] chokes." m_type = 2 - if ("collapse") + if ("collapse","collapses") Paralyse(2) message = "[src] collapses!" m_type = 2 - if ("dance") + if ("dance","dances") if (!src.restrained()) message = "[src] dances around happily." m_type = 1 - if ("drool") + if ("drool","drools") message = "[src] drools." m_type = 1 - if ("gasp") + if ("gasp","gasps") message = "[src] gasps." m_type = 2 - if ("gnarl") + if ("gnarl","gnarls") if (!muzzled) message = "[src] gnarls and shows its teeth.." m_type = 2 - if ("hiss") + if ("hiss","hisses") message = "[src] hisses softly." m_type = 1 - if ("jump") + if ("jump","jumps") message = "[src] jumps!" m_type = 1 - if ("moan") + if ("moan","moans") message = "[src] moans!" m_type = 2 - if ("nod") + if ("nod","nods") message = "[src] nods its head." m_type = 1 -// if ("roar") -// if (!muzzled) -// message = "[src] roars." Commenting out since larva shouldn't roar /N -// m_type = 2 - if ("roll") + if ("roar","roars") + if (!muzzled) + message = "[src] softly roars." + m_type = 2 + if ("roll","rolls") if (!src.restrained()) message = "[src] rolls." m_type = 1 - if ("scratch") + if ("scratch","scratches") if (!src.restrained()) message = "[src] scratches." m_type = 1 - if ("scretch") + if ("screech","screeches") //This orignally was called scretch, changing it. -Sum99 if (!muzzled) - message = "[src] scretches." + message = "[src] screeches." m_type = 2 - if ("shake") + if ("shake","shakes") message = "[src] shakes its head." m_type = 1 - if ("shiver") + if ("shiver","shivers") message = "[src] shivers." m_type = 2 - if ("sign") + if ("sign","signs") if (!src.restrained()) message = text("[src] signs[].", (text2num(param) ? text(" the number []", text2num(param)) : null)) m_type = 1 - if ("snore") + if ("snore","snores") message = "[src] snores." m_type = 2 - if ("sulk") + if ("sulk","sulks") message = "[src] sulks down sadly." m_type = 1 - if ("sway") + if ("sway","sways") message = "[src] sways around dizzily." m_type = 1 if ("tail") @@ -91,13 +89,13 @@ if ("twitch") message = "[src] twitches violently." m_type = 1 - if ("whimper") + if ("whimper","whimpers") if (!muzzled) message = "[src] whimpers." m_type = 2 if ("help") //"The exception" - src << "Help for larva emotes. You can use these emotes with say \"*emote\":\n\nburp, choke, collapse, dance, drool, gasp, gnarl, hiss, jump, moan, nod, roll, scratch,\nscretch, shake, shiver, sign-#, sulk, sway, tail, twitch, whimper" + src << "Help for larva emotes. You can use these emotes with say \"*emote\":\n\nburp, choke, collapse, dance, drool, gasp, gnarl, hiss, jump, moan, nod, roll, roar, scratch, screech, shake, shiver, sign-#, sulk, sway, tail, twitch, whimper" else src << "Unusable emote '[act]'. Say *help for a list." diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index 7763954c786..6f514dc0d3b 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -87,7 +87,7 @@ var/const/MAX_ACTIVE_TIME = 400 return Attach(AM) return 0 -/obj/item/clothing/mask/facehugger/throw_at(atom/target, range, speed) +/obj/item/clothing/mask/facehugger/throw_at(atom/target, range, speed, mob/thrower, spin) if(!..()) return if(stat == CONSCIOUS) diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index 216b5c0765b..ec1fd6b67fb 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -31,12 +31,6 @@ else icon_state = "mmi_empty" -/obj/item/device/mmi/Topic(href, href_list) - if(href_list["reenter"]) - var/mob/dead/observer/ghost = usr - if(istype(ghost)) - ghost.reenter_corpse(ghost) - /obj/item/device/mmi/attackby(obj/item/O, mob/user, params) user.changeNext_move(CLICK_CD_MELEE) if(istype(O,/obj/item/organ/brain)) //Time to stick a brain in it --NEO @@ -52,11 +46,7 @@ return var/mob/living/carbon/brain/B = newbrain.brainmob if(!B.key) - var/mob/dead/observer/ghost = B.get_ghost() - if(ghost) - if(ghost.client) - ghost << "Someone has put your brain in a MMI! (Click to enter)" - ghost << sound('sound/effects/genetics.ogg') + B.notify_ghost_cloning("Someone has put your brain in a MMI!") visible_message("[user] sticks \a [newbrain] into \the [src].") brainmob = newbrain.brainmob diff --git a/code/modules/mob/living/carbon/brain/emote.dm b/code/modules/mob/living/carbon/brain/emote.dm index c9feda102b4..072f5c3f7d5 100644 --- a/code/modules/mob/living/carbon/brain/emote.dm +++ b/code/modules/mob/living/carbon/brain/emote.dm @@ -6,8 +6,6 @@ var/t1 = findtext(act, "-", 1, null) act = copytext(act, 1, t1) - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) if(src.stat == DEAD) return @@ -22,16 +20,16 @@ message = "[src] lets out a distressed noise." m_type = 2 - if ("beep") + if ("beep","beeps") src << "You beep." message = "[src] beeps." m_type = 2 - if ("blink") + if ("blink","blinks") message = "[src] blinks." m_type = 1 - if ("boop") + if ("boop","boops") src << "You boop." message = "[src] boops." m_type = 2 @@ -45,7 +43,7 @@ message = "[src] plays a loud tone." m_type = 2 - if ("whistle") + if ("whistle","whistles") src << "You whistle." message = "[src] whistles." m_type = 2 diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 9b705841a82..3c92e6403a1 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -11,6 +11,11 @@ return 1 return ..() +/mob/living/carbon/throw_impact(atom/hit_atom) + . = ..() + if(hit_atom.density && isturf(hit_atom)) + Weaken(1) + take_organ_damage(10) /mob/living/carbon/attackby(obj/item/I, mob/user, params) if(lying) diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm index 320ae709bc3..2009c2bc5fe 100644 --- a/code/modules/mob/living/carbon/emote.dm +++ b/code/modules/mob/living/carbon/emote.dm @@ -10,9 +10,6 @@ param = copytext(act, t1 + 1, length(act) + 1) act = copytext(act, 1, t1) - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) - var/muzzled = is_muzzled() //var/m_type = 1 @@ -27,7 +24,7 @@ message = "[src] is strumming the air and headbanging like a safari chimp." m_type = 1 - if ("blink") + if ("blink","blinks") message = "[src] blinks." m_type = 1 @@ -35,11 +32,11 @@ message = "[src] blinks rapidly." m_type = 1 - if ("blush") + if ("blush","blushes") message = "[src] blushes." m_type = 1 - if ("bow") + if ("bow","bows") if (!src.buckled) var/M = null if (param) @@ -55,117 +52,117 @@ message = "[src] bows." m_type = 1 - if ("burp") + if ("burp","burps") if (!muzzled) ..(act) - if ("choke") + if ("choke","chokes") if (!muzzled) ..(act) else message = "[src] makes a strong noise." m_type = 2 - if ("chuckle") + if ("chuckle","chuckles") if (!muzzled) ..(act) else message = "[src] makes a noise." m_type = 2 - if ("clap") + if ("clap","claps") if (!src.restrained()) message = "[src] claps." m_type = 2 - if ("cough") + if ("cough","coughs") if (!muzzled) ..(act) else message = "[src] makes a strong noise." m_type = 2 - if ("deathgasp") + if ("deathgasp","deathgasps") message = "[src] seizes up and falls limp, \his eyes dead and lifeless..." m_type = 1 - if ("flap") + if ("flap","flaps") if (!src.restrained()) message = "[src] flaps \his wings." m_type = 2 - if ("gasp") + if ("gasp","gasps") if (!muzzled) ..(act) else message = "[src] makes a weak noise." m_type = 2 - if ("giggle") + if ("giggle","giggles") if (!muzzled) ..(act) else message = "[src] makes a noise." m_type = 2 - if ("laugh") + if ("laugh","laughs") if (!muzzled) ..(act) else message = "[src] makes a noise." - if ("nod") + if ("nod","nods") message = "[src] nods." m_type = 1 - if ("scream") + if ("scream","screams") if (!muzzled) ..(act) else message = "[src] makes a very loud noise." m_type = 2 - if ("shake") + if ("shake","shakes") message = "[src] shakes \his head." m_type = 1 - if ("sneeze") + if ("sneeze","sneezes") if (!muzzled) ..(act) else message = "[src] makes a strange noise." m_type = 2 - if ("sigh") + if ("sigh","sighs") if (!muzzled) ..(act) else message = "[src] sighs." m_type = 2 - if ("sniff") + if ("sniff","sniffs") message = "[src] sniffs." m_type = 2 - if ("snore") + if ("snore","snores") if (!muzzled) ..(act) else message = "[src] makes a noise." m_type = 2 - if ("whimper") + if ("whimper","whimpers") if (!muzzled) ..(act) else message = "[src] makes a weak noise." m_type = 2 - if ("wink") + if ("wink","winks") message = "[src] winks." m_type = 1 - if ("yawn") + if ("yawn","yawns") if (!muzzled) ..(act) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 2b5a09b4c72..6523c085039 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -6,8 +6,6 @@ param = copytext(act, t1 + 1, length(act) + 1) act = copytext(act, 1, t1) - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) var/muzzled = is_muzzled() //var/m_type = 1 @@ -28,29 +26,29 @@ message = "[src] flaps \his wings ANGRILY!" m_type = 2 - if ("choke") + if ("choke","chokes") if (miming) message = "[src] clutches \his throat desperately!" else ..(act) - if ("chuckle") + if ("chuckle","chuckles") if(miming) message = "[src] appears to chuckle." else ..(act) - if ("clap") + if ("clap","claps") if (!src.restrained()) message = "[src] claps." m_type = 2 - if ("collapse") + if ("collapse","collapses") Paralyse(2) message = "[src] collapses!" m_type = 2 - if ("cough") + if ("cough","coughs") if (miming) message = "[src] appears to cough!" else @@ -61,7 +59,7 @@ message = "[src] makes a strong noise." m_type = 2 - if ("cry") + if ("cry","crys","cries") //I feel bad if people put s at the end of cry. -Sum99 if (miming) message = "[src] cries." else @@ -101,7 +99,7 @@ return message = "[src] [input]" - if ("dap") + if ("dap","daps") m_type = 1 if (!src.restrained()) var/M = null @@ -119,24 +117,24 @@ message = "[src] raises an eyebrow." m_type = 1 - if ("flap") + if ("flap","flaps") if (!src.restrained()) message = "[src] flaps \his wings." m_type = 2 - if ("gasp") + if ("gasp","gasps") if (miming) message = "[src] appears to be gasping!" else ..(act) - if ("giggle") + if ("giggle","giggles") if (miming) message = "[src] giggles silently!" else ..(act) - if ("groan") + if ("groan","groans") if (miming) message = "[src] appears to groan!" else @@ -147,7 +145,7 @@ message = "[src] makes a loud noise." m_type = 2 - if ("grumble") + if ("grumble","grumbles") if (!muzzled) message = "[src] grumbles!" else @@ -171,7 +169,7 @@ else message = "[src] holds out \his hand to [M]." - if ("hug") + if ("hug","hugs") m_type = 1 if (!src.restrained()) var/M = null @@ -215,14 +213,14 @@ else message = "[src] [message]" - if ("moan") + if ("moan","moans") if(miming) message = "[src] appears to moan!" else message = "[src] moans!" m_type = 2 - if ("mumble") + if ("mumble","mumbles") message = "[src] mumbles!" m_type = 2 @@ -235,7 +233,7 @@ message = "[src] raises a hand." m_type = 1 - if ("salute") + if ("salute","salutes") if (!src.buckled) var/M = null if (param) @@ -251,27 +249,27 @@ message = "[src] salutes." m_type = 1 - if ("scream") + if ("scream","screams") if (miming) message = "[src] acts out a scream!" else ..(act) - if ("shiver") + if ("shiver","shivers") message = "[src] shivers." m_type = 1 - if ("shrug") + if ("shrug","shrugs") message = "[src] shrugs." m_type = 1 - if ("sigh") + if ("sigh","sighs") if(miming) message = "[src] sighs." else ..(act) - if ("signal") + if ("signal","signals") if (!src.restrained()) var/t1 = round(text2num(param)) if (isnum(t1)) @@ -281,34 +279,34 @@ message = "[src] raises [t1] finger\s." m_type = 1 - if ("sneeze") + if ("sneeze","sneezes") if (miming) message = "[src] sneezes." else ..(act) - if ("sniff") + if ("sniff","sniffs") message = "[src] sniffs." m_type = 2 - if ("snore") + if ("snore","snores") if (miming) message = "[src] sleeps soundly." else ..(act) - if ("whimper") + if ("whimper","whimpers") if (miming) message = "[src] appears hurt." else ..(act) - if ("yawn") + if ("yawn","yawns") if (!muzzled) message = "[src] yawns." m_type = 2 - if("wag") + if("wag","wags") if(dna && dna.species && (("tail_lizard" in dna.species.mutant_bodyparts) || (features["tail_human"] != "None"))) message = "[src] wags \his tail." startTailWag() diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 4d4876bb4db..0e90a523120 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -707,6 +707,7 @@ switch(H.hal_screwyhud) if(1) H.healths.icon_state = "health6" if(2) H.healths.icon_state = "health7" + if(5) H.healths.icon_state = "health0" else switch(H.health - H.staminaloss) if(100 to INFINITY) H.healths.icon_state = "health0" @@ -737,6 +738,8 @@ icon_num = 4 if(damage > (comparison*4)) icon_num = 5 + if(H.hal_screwyhud == 5) + icon_num = 0 if(icon_num) H.healthdoll.overlays += image('icons/mob/screen_gen.dmi',"[L.name][icon_num]") diff --git a/code/modules/mob/living/carbon/monkey/emote.dm b/code/modules/mob/living/carbon/monkey/emote.dm index e21d3a48bb7..42adb99ec59 100644 --- a/code/modules/mob/living/carbon/monkey/emote.dm +++ b/code/modules/mob/living/carbon/monkey/emote.dm @@ -6,19 +6,17 @@ param = copytext(act, t1 + 1, length(act) + 1) act = copytext(act, 1, t1) - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) var/muzzled = is_muzzled() var/m_type = 1 var/message switch(act) //Ooh ooh ah ah keep this alphabetical ooh ooh ah ah! - if ("deathgasp") + if ("deathgasp","deathgasps") message = "[src] lets out a faint chimper as it collapses and stops moving..." m_type = 1 - if ("gnarl") + if ("gnarl","gnarls") if (!muzzled) message = "[src] gnarls and shows its teeth.." m_type = 2 @@ -28,35 +26,35 @@ message = "[src] flails its paw." m_type = 1 - if ("moan") + if ("moan","moans") message = "[src] moans!" m_type = 2 - if ("roar") + if ("roar","roars") if (!muzzled) message = "[src] roars." m_type = 2 - if ("roll") + if ("roll","rolls") if (!src.restrained()) message = "[src] rolls." m_type = 1 - if ("scratch") + if ("scratch","scratches") if (!src.restrained()) message = "[src] scratches." m_type = 1 - if ("scretch") + if ("screech","screeches") if (!muzzled) - message = "[src] scretches." + message = "[src] screeches." m_type = 2 - if ("shiver") + if ("shiver","shivers") message = "[src] shivers." m_type = 2 - if ("sign") + if ("sign","signs") if (!src.restrained()) message = text("[src] signs[].", (text2num(param) ? text(" the number []", text2num(param)) : null)) m_type = 1 @@ -66,7 +64,7 @@ m_type = 1 if ("help") //Ooh ah ooh ooh this is an exception to alphabetical ooh ooh. - src << "Help for monkey emotes. You can use these emotes with say \"*emote\":\n\naflap, airguitar, blink, blink_r, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough, dance, deathgasp, drool, flap, frown, gasp, gnarl, giggle, glare-(none)/mob, grin, jump, laugh, look, me, moan, nod, paw, point-(atom), roar, roll, scream, scratch, scretch, shake, shiver, sigh, sign-#, sit, smile, sneeze, sniff, snore, stare-(none)/mob, sulk, sway, tail, tremble, twitch, twitch_s, wave whimper, wink, yawn" + src << "Help for monkey emotes. You can use these emotes with say \"*emote\":\n\naflap, airguitar, blink, blink_r, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough, dance, deathgasp, drool, flap, frown, gasp, gnarl, giggle, glare-(none)/mob, grin, jump, laugh, look, me, moan, nod, paw, point-(atom), roar, roll, scream, scratch, screech, shake, shiver, sigh, sign-#, sit, smile, sneeze, sniff, snore, stare-(none)/mob, sulk, sway, tail, tremble, twitch, twitch_s, wave whimper, wink, yawn" else ..(act) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 112fe73cc82..06f663a56f2 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -143,7 +143,7 @@ /mob/living/carbon/monkey/handle_changeling() if(mind && hud_used) if(mind.changeling) - mind.changeling.regenerate() + mind.changeling.regenerate(src) hud_used.lingchemdisplay.invisibility = 0 hud_used.lingchemdisplay.maptext = "
[round(mind.changeling.chem_charges)]
" else diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index ef8a6b82680..a3092fb9228 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -8,25 +8,22 @@ var/param = null - if (findtext(act, "-", 1, null)) + if (findtext(act, "-", 1, null)) //Removes dashes for npcs "EMOTE-PLAYERNAME" or something like that, I ain't no AI coder. It's not for players. -Sum99 var/t1 = findtext(act, "-", 1, null) param = copytext(act, t1 + 1, length(act) + 1) act = copytext(act, 1, t1) - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) - switch(act)//Hello, how would you like to order? Alphabetically! if ("aflap") if (!src.restrained()) message = "[src] flaps its wings ANGRILY!" m_type = 2 - if ("blush") + if ("blush","blushes") message = "[src] blushes." m_type = 1 - if ("bow") + if ("bow","bows") if (!src.buckled) var/M = null if (param) @@ -42,70 +39,70 @@ message = "[src] bows." m_type = 1 - if ("burp") + if ("burp","burps") message = "[src] burps." m_type = 2 - if ("choke") + if ("choke","chokes") message = "[src] chokes!" m_type = 2 - if ("chuckle") + if ("chuckle","chuckles") message = "[src] chuckles." m_type = 2 - if ("collapse") + if ("collapse","collapses") Paralyse(2) message = "[src] collapses!" m_type = 2 - if ("cough") + if ("cough","coughs") message = "[src] coughs!" m_type = 2 - if ("dance") + if ("dance","dances") if (!src.restrained()) message = "[src] dances around happily." m_type = 1 - if ("deathgasp") + if ("deathgasp","deathgasps") message = "[src] seizes up and falls limp, its eyes dead and lifeless..." m_type = 1 - if ("drool") + if ("drool","drools") message = "[src] drools." m_type = 1 - if ("faint") + if ("faint","faints") message = "[src] faints." if(src.sleeping) return //Can't faint while asleep src.sleeping += 10 //Short-short nap m_type = 1 - if ("flap") + if ("flap","flaps") if (!src.restrained()) message = "[src] flaps its wings." m_type = 2 - if ("flip") + if ("flip","flips") if (!src.restrained() || !src.resting || !src.sleeping) src.SpinAnimation(7,1) m_type = 2 - if ("frown") + if ("frown","frowns") message = "[src] frowns." m_type = 1 - if ("gasp") + if ("gasp","gasps") message = "[src] gasps!" m_type = 2 - if ("giggle") + if ("giggle","giggles") message = "[src] giggles." m_type = 2 - if ("glare") + if ("glare","glares") var/M = null if (param) for (var/mob/A in view(1, src)) @@ -119,19 +116,19 @@ else message = "[src] glares." - if ("grin") + if ("grin","grins") message = "[src] grins." m_type = 1 - if ("jump") + if ("jump","jumps") message = "[src] jumps!" m_type = 1 - if ("laugh") + if ("laugh","laughs") message = "[src] laughs." m_type = 2 - if ("look") + if ("look","looks") var/M = null if (param) for (var/mob/A in view(1, src)) @@ -158,11 +155,11 @@ else message = "[src] [message]" - if ("nod") + if ("nod","nods") message = "[src] nods." m_type = 1 - if ("point") + if ("point","points") if (!src.restrained()) var/atom/M = null if (param) @@ -176,39 +173,39 @@ pointed(M) m_type = 1 - if ("scream") + if ("scream","screams") message = "[src] screams!" m_type = 2 - if ("shake") + if ("shake","shakes") message = "[src] shakes its head." m_type = 1 - if ("sigh") + if ("sigh","sighs") message = "[src] sighs." m_type = 2 - if ("sit") + if ("sit","sits") message = "[src] sits down." m_type = 1 - if ("smile") + if ("smile","smiles") message = "[src] smiles." m_type = 1 - if ("sneeze") + if ("sneeze","sneezes") message = "[src] sneezes." m_type = 2 - if ("sniff") + if ("sniff","sniffs") message = "[src] sniffs." m_type = 2 - if ("snore") + if ("snore","snores") message = "[src] snores." m_type = 2 - if ("stare") + if ("stare","stares") var/M = null if (param) for (var/mob/A in view(1, src)) @@ -222,19 +219,19 @@ else message = "[src] stares." - if ("sulk") + if ("sulk","sulks") message = "[src] sulks down sadly." m_type = 1 - if ("sway") + if ("sway","sways") message = "[src] sways around dizzily." m_type = 1 - if ("tremble") + if ("tremble","trembles") message = "[src] trembles in fear!" m_type = 1 - if ("twitch") + if ("twitch","twitches") message = "[src] twitches violently." m_type = 1 @@ -242,15 +239,15 @@ message = "[src] twitches." m_type = 1 - if ("wave") + if ("wave","waves") message = "[src] waves." m_type = 1 - if ("whimper") + if ("whimper","whimpers") message = "[src] whimpers." m_type = 2 - if ("yawn") + if ("yawn","yawns") message = "[src] yawns." m_type = 2 diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index bbcdc72c6aa..5dc99707a72 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -99,22 +99,23 @@ Sorry Giacom. Please don't be mad :( if(loc && !loc.Adjacent(M.loc)) return 1 now_pushing = 1 - //TODO: Make this use Move(). we're pretty much recreating it here. - //it could be done by setting one of the locs to null to make Move() work, then setting it back and Move() the other mob var/oldloc = loc - loc = M.loc - M.loc = oldloc - M.LAssailant = src + var/oldMloc = M.loc - for(var/mob/living/simple_animal/slime/slime in view(1,M)) - if(slime.Victim == M) - slime.UpdateFeed() - //cross any movable atoms on either turf - for(var/atom/movable/AM in loc) - AM.Crossed(src) - for(var/atom/movable/AM in oldloc) - AM.Crossed(M) + var/M_passmob = (M.pass_flags & PASSMOB) // we give PASSMOB to both mobs to avoid bumping other mobs during swap. + var/src_passmob = (pass_flags & PASSMOB) + M.pass_flags |= PASSMOB + pass_flags |= PASSMOB + + M.Move(oldloc) + Move(oldMloc) + + if(!src_passmob) + pass_flags &= ~PASSMOB + if(!M_passmob) + M.pass_flags &= ~PASSMOB + now_pushing = 0 return 1 @@ -569,7 +570,8 @@ Sorry Giacom. Please don't be mad :( else stop_pulling() . = ..() - if ((s_active && !( s_active in contents ) )) + if (s_active && !(s_active in contents) && !(s_active.loc in contents)) + // It's ugly. But everything related to inventory/storage is. -- c0 s_active.close(src) for(var/mob/living/simple_animal/slime/M in oview(1,src)) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 43e2c2735bf..9d8017d0c2b 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -44,12 +44,6 @@ else return 0 -/mob/living/throw_impact(atom/hit_atom) - . = ..() - if(hit_atom.density) - Weaken(1) - take_organ_damage(10) - /mob/living/hitby(atom/movable/AM) if(istype(AM, /obj/item)) var/obj/item/I = AM diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 56c0426c5bc..06f14523bcf 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -25,7 +25,7 @@ var/list/surgeries = list() //a list of surgery datums. generally empty, they're added when the player wants them. - var/now_pushing = null + var/now_pushing = null //used by living/Bump() and living/PushAM() to prevent potential infinite loop. var/cameraFollow = null @@ -34,6 +34,8 @@ var/on_fire = 0 //The "Are we on fire?" var var/fire_stacks = 0 //Tracks how many stacks of fire we have on, max is usually 20 + var/bloodcrawl = 0 //0 No blood crawling, BLOODCRAWL for bloodcrawling, BLOODCRAWL_EAT for crawling+mob devour + var/holder = null //The holder for blood crawling var/ventcrawler = 0 //0 No vent crawling, 1 vent crawling in the nude, 2 vent crawling always var/floating = 0 var/mob_size = MOB_SIZE_HUMAN diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index f7910fd9d77..d9a69f3c25a 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -90,7 +90,8 @@ var/list/crit_allowed_modes = list(MODE_WHISPER,MODE_CHANGELING,MODE_ALIEN) src << "You find yourself unable to speak!" return - message = treat_message(message) + if(message_mode != MODE_WHISPER) //whisper() calls treat_message(); double process results in "hisspering" + message = treat_message(message) var/spans = list() spans += get_spans() diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm index d424af7bf41..4280be744bc 100644 --- a/code/modules/mob/living/silicon/robot/emote.dm +++ b/code/modules/mob/living/silicon/robot/emote.dm @@ -5,8 +5,6 @@ param = copytext(act, t1 + 1, length(act) + 1) act = copytext(act, 1, t1) - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) switch(act)//01000001011011000111000001101000011000010110001001100101011101000110100101111010011001010110010000100001 (Seriously please keep it that way.) if ("aflap") @@ -15,7 +13,7 @@ m_type = 2 m_type = 1 - if("beep") + if("beep","beeps") var/M = null if(param) for (var/mob/A in view(1, src)) @@ -32,7 +30,7 @@ playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0) m_type = 2 - if ("bow") + if ("bow","bows") if (!src.buckled) var/M = null if (param) @@ -70,12 +68,12 @@ playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0) m_type = 2 - if ("chime") //You have mail! + if ("chime","chimes") //You have mail! message = "[src] chimes." playsound(loc, 'sound/machines/chime.ogg', 50, 0) m_type = 2 - if ("clap") + if ("clap","claps") if (!src.restrained()) message = "[src] claps." m_type = 2 @@ -94,16 +92,16 @@ return message = "[src] [input]" - if ("deathgasp") + if ("deathgasp","deathgasps") message = "[src] shudders violently for a moment, then becomes motionless, its eyes slowly darkening." m_type = 1 - if ("flap") + if ("flap","flaps") if (!src.restrained()) message = "[src] flaps \his wings." m_type = 2 - if ("glare") + if ("glare","glares") var/M = null if (param) for (var/mob/A in view(1, src)) @@ -117,12 +115,12 @@ else message = "[src] glares." - if ("honk") //Honk! + if ("honk","honks") //Honk! message = "[src] honks!" playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) m_type = 2 - if ("look") + if ("look","looks") var/M = null if (param) for (var/mob/A in view(1, src)) @@ -150,11 +148,11 @@ else message = "[src] [message]" - if ("nod") + if ("nod","nods") message = "[src] nods." m_type = 1 - if ("ping") + if ("ping","pings") var/M = null if(param) for (var/mob/A in view(1, src)) @@ -175,7 +173,7 @@ playsound(loc, 'sound/misc/sadtrombone.ogg', 50, 0) m_type = 2 - if ("salute") + if ("salute","salutes") if (!src.buckled) var/M = null if (param) @@ -191,7 +189,7 @@ else message = "[src] salutes." - if ("stare") + if ("stare","stares") var/M = null if (param) for (var/mob/A in view(1, src)) @@ -206,7 +204,7 @@ message = "[src] stares." m_type = 1 - if ("twitch") + if ("twitch","twitches") message = "[src] twitches violently." m_type = 1 diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 68300be05f1..e37ec22d115 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -63,6 +63,7 @@ var/braintype = "Cyborg" var/lamp_max = 10 //Maximum brightness of a borg lamp. Set as a var for easy adjusting. var/lamp_intensity = 0 //Luminosity of the headlamp. 0 is off. Higher settings than the minimum require power. + var/lamp_recharging = 0 //Flag for if the lamp is on cooldown after being forcibly disabled. /mob/living/silicon/robot/New(loc) spark_system = new /datum/effect/effect/system/spark_spread() @@ -990,7 +991,7 @@ set_autosay() /mob/living/silicon/robot/proc/control_headlamp() - if(stat) + if(stat || lamp_recharging) src << "This function is currently offline." return @@ -999,12 +1000,15 @@ src << "[lamp_intensity ? "Headlamp power set to Level [lamp_intensity/2]" : "Headlamp disabled."]" update_headlamp() -/mob/living/silicon/robot/proc/update_headlamp(var/turn_off = 0) +/mob/living/silicon/robot/proc/update_headlamp(var/turn_off = 0, var/cooldown = 100) SetLuminosity(0) if(lamp_intensity && (turn_off || stat)) src << "Your headlamp has been deactivated." lamp_intensity = 0 + lamp_recharging = 1 + spawn(cooldown) //10 seconds by default, if the source of the deactivation does not keep stat that long. + lamp_recharging = 0 else AddLuminosity(lamp_intensity) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 92749a073a2..83b20b450cb 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -153,7 +153,7 @@ /mob/living/silicon/bullet_act(obj/item/projectile/Proj) if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) adjustBruteLoss(Proj.damage) - Proj.on_hit(src,2) + Proj.on_hit(src) return 2 /mob/living/silicon/apply_effect(effect = 0,effecttype = STUN, blocked = 0) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 261dad9eaa9..ed126f984ed 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -61,7 +61,7 @@ return if(Proj.damage_type == BURN || Proj.damage_type == BRUTE) adjustBruteLoss(Proj.damage) - Proj.on_hit(src, 0) + Proj.on_hit(src) return 0 /mob/living/simple_animal/construct/narsie_act() diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index cfafe5093b8..3d04bb5dc61 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -40,14 +40,14 @@ var/plant_cooldown = 30 var/plants_off = 0 -/mob/living/simple_animal/hostile/alien/drone/Life() - ..() - if(!stat) - plant_cooldown-- - if(stance==HOSTILE_STANCE_IDLE) - if(!plants_off && prob(10) && plant_cooldown<=0) - plant_cooldown = initial(plant_cooldown) - SpreadPlants() +/mob/living/simple_animal/hostile/alien/drone/handle_automated_action() + if(!..()) //AIStatus is off + return + plant_cooldown-- + if(AIStatus == AI_IDLE) + if(!plants_off && prob(10) && plant_cooldown<=0) + plant_cooldown = initial(plant_cooldown) + SpreadPlants() /mob/living/simple_animal/hostile/alien/sentinel name = "alien sentinel" @@ -87,18 +87,18 @@ var/egg_cooldown = 30 var/plant_cooldown = 30 -/mob/living/simple_animal/hostile/alien/queen/Life() - ..() - if(!stat) - egg_cooldown-- - plant_cooldown-- - if(stance==HOSTILE_STANCE_IDLE) - if(!plants_off && prob(10) && plant_cooldown<=0) - plant_cooldown = initial(plant_cooldown) - SpreadPlants() - if(!sterile && prob(10) && egg_cooldown<=0) - egg_cooldown = initial(egg_cooldown) - LayEggs() +/mob/living/simple_animal/hostile/alien/queen/handle_automated_action() + if(!..()) //AIStatus is off + return + egg_cooldown-- + plant_cooldown-- + if(AIStatus == AI_IDLE) + if(!plants_off && prob(10) && plant_cooldown<=0) + plant_cooldown = initial(plant_cooldown) + SpreadPlants() + if(!sterile && prob(10) && egg_cooldown<=0) + egg_cooldown = initial(egg_cooldown) + LayEggs() /mob/living/simple_animal/hostile/alien/proc/SpreadPlants() if(!isturf(loc) || istype(loc, /turf/space)) diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index e28524867f2..ae03ebe143e 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -13,10 +13,7 @@ if(isliving(target)) var/mob/living/L = target if(L.reagents) - L.reagents.add_reagent("toxin", poison_per_bite) - if(prob(poison_per_bite)) - L << "You feel a tiny prick." - L.reagents.add_reagent(poison_type, poison_per_bite) + L.reagents.add_reagent(poison_type, poison_per_bite) @@ -77,20 +74,18 @@ poison_per_bite = 5 move_to_delay = 5 -/mob/living/simple_animal/hostile/poison/giant_spider/Life() - ..() - if(!stat && !ckey) - if(stance == HOSTILE_STANCE_IDLE) - //1% chance to skitter madly away - if(!busy && prob(1)) - /*var/list/move_targets = list() - for(var/turf/T in orange(20, src)) - move_targets.Add(T)*/ - stop_automated_movement = 1 - Goto(pick(orange(20, src)), move_to_delay) - spawn(50) - stop_automated_movement = 0 - walk(src,0) +/mob/living/simple_animal/hostile/poison/giant_spider/handle_automated_action() + if(!..()) //AIStatus is off + return 0 + if(AIStatus == AI_IDLE) + //1% chance to skitter madly away + if(!busy && prob(1)) + stop_automated_movement = 1 + Goto(pick(orange(20, src)), move_to_delay) + spawn(50) + stop_automated_movement = 0 + walk(src,0) + return 1 /mob/living/simple_animal/hostile/poison/giant_spider/nurse/proc/GiveUp(C) spawn(100) @@ -100,53 +95,50 @@ busy = 0 stop_automated_movement = 0 -/mob/living/simple_animal/hostile/poison/giant_spider/nurse/Life() - ..() - if(!stat && !ckey) - if(stance == HOSTILE_STANCE_IDLE) - var/list/can_see = view(src, 10) - //30% chance to stop wandering and do something - if(!busy && prob(30)) - //first, check for potential food nearby to cocoon - for(var/mob/living/C in can_see) - if(C.stat && !istype(C,/mob/living/simple_animal/hostile/poison/giant_spider)) - cocoon_target = C - busy = MOVING_TO_TARGET - Goto(C, move_to_delay) - //give up if we can't reach them after 10 seconds - GiveUp(C) - return +/mob/living/simple_animal/hostile/poison/giant_spider/nurse/handle_automated_action() + if(..()) + var/list/can_see = view(src, 10) + if(!busy && prob(30)) //30% chance to stop wandering and do something + //first, check for potential food nearby to cocoon + for(var/mob/living/C in can_see) + if(C.stat && !istype(C,/mob/living/simple_animal/hostile/poison/giant_spider)) + cocoon_target = C + busy = MOVING_TO_TARGET + Goto(C, move_to_delay) + //give up if we can't reach them after 10 seconds + GiveUp(C) + return - //second, spin a sticky spiderweb on this tile - var/obj/effect/spider/stickyweb/W = locate() in get_turf(src) - if(!W) - Web() + //second, spin a sticky spiderweb on this tile + var/obj/effect/spider/stickyweb/W = locate() in get_turf(src) + if(!W) + Web() + else + //third, lay an egg cluster there + if(fed) + LayEggs() else - //third, lay an egg cluster there - if(fed) - LayEggs() - else - //fourthly, cocoon any nearby items so those pesky pinkskins can't use them - for(var/obj/O in can_see) + //fourthly, cocoon any nearby items so those pesky pinkskins can't use them + for(var/obj/O in can_see) - if(O.anchored) - continue + if(O.anchored) + continue - if(istype(O, /obj/item) || istype(O, /obj/structure) || istype(O, /obj/machinery)) - cocoon_target = O - busy = MOVING_TO_TARGET - stop_automated_movement = 1 - Goto(O, move_to_delay) - //give up if we can't reach them after 10 seconds - GiveUp(O) + if(istype(O, /obj/item) || istype(O, /obj/structure) || istype(O, /obj/machinery)) + cocoon_target = O + busy = MOVING_TO_TARGET + stop_automated_movement = 1 + Goto(O, move_to_delay) + //give up if we can't reach them after 10 seconds + GiveUp(O) - else if(busy == MOVING_TO_TARGET && cocoon_target) - if(get_dist(src, cocoon_target) <= 1) - Wrap() + else if(busy == MOVING_TO_TARGET && cocoon_target) + if(get_dist(src, cocoon_target) <= 1) + Wrap() - else - busy = 0 - stop_automated_movement = 0 + else + busy = 0 + stop_automated_movement = 0 /mob/living/simple_animal/hostile/poison/giant_spider/verb/Web() set name = "Lay Web" @@ -249,6 +241,8 @@ var/obj/effect/spider/eggcluster/C = new /obj/effect/spider/eggcluster(src.loc) if(ckey) C.player_spiders = 1 + C.poison_type = poison_type + C.poison_per_bite = poison_per_bite fed-- busy = 0 stop_automated_movement = 0 @@ -262,4 +256,4 @@ #undef SPINNING_WEB #undef LAYING_EGGS #undef MOVING_TO_TARGET -#undef SPINNING_COCOON \ No newline at end of file +#undef SPINNING_COCOON diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index 1d46890166d..2fe08fe36ed 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -1,4 +1,4 @@ -#define EGG_INCUBATION_TIME 180 +#define EGG_INCUBATION_TIME 120 /mob/living/simple_animal/hostile/headcrab name = "Headslug" diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index b70b4418d89..c51fc8e17b1 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -2,7 +2,6 @@ faction = list("hostile") stop_automated_movement_when_pulled = 0 environment_smash = 1 //Set to 1 to break closets,tables,racks, etc; 2 for walls; 3 for rwalls - var/stance = HOSTILE_STANCE_IDLE //Used to determine behavior var/atom/target var/ranged = 0 var/rapid = 0 @@ -32,37 +31,32 @@ var/stat_exclusive = 0 //Mobs with this set to 1 will exclusively attack things defined by stat_attack, stat_attack 2 means they will only attack corpses var/attack_same = 0 //Set us to 1 to allow us to attack our own faction, or 2, to only ever attack our own faction - var/AIStatus = AI_ON //The Status of our AI, can be set to AI_ON (On, usual processing), AI_SLEEP (Will not process, but will return to AI_ON if an enemy comes near), AI_OFF (Off, Not processing ever) + var/AIStatus = AI_ON //The Status of our AI, can be set to AI_ON (On, usual processing), AI_IDLE (Will not process, but will return to AI_ON if an enemy comes near), AI_OFF (Off, Not processing ever) /mob/living/simple_animal/hostile/Life() - . = ..() if(!.) //dead walk(src, 0) //stops walking return 0 + +/mob/living/simple_animal/hostile/handle_automated_action() + if(AIStatus == AI_OFF) + return 0 if(ranged) ranged_cooldown-- - if(client) - return 0 - if(!AICanContinue()) - return 0 - if(!stat) - switch(stance) - if(HOSTILE_STANCE_IDLE) - if(environment_smash) - EscapeConfinement() - FindTarget() + var/list/possible_targets = ListTargets() //we look around for potential targets and make it a list for later use. - if(HOSTILE_STANCE_ATTACK) - MoveToTarget() - DestroySurroundings() + if(environment_smash) + EscapeConfinement() + + if(AICanContinue(possible_targets)) + DestroySurroundings() + if(!MoveToTarget(possible_targets)) //if we lose our target + if(AIShouldSleep(possible_targets)) // we try to acquire a new one + AIStatus = AI_IDLE // otherwise we go idle + return 1 - if(HOSTILE_STANCE_ATTACKING) - AttackTarget() - DestroySurroundings() - if(AIShouldSleep()) - AIStatus = AI_SLEEP //////////////HOSTILE MOB TARGETTING AND AGGRESSION//////////// @@ -81,19 +75,18 @@ L += Objects return L -/mob/living/simple_animal/hostile/proc/FindTarget()//Step 2, filter down possible targets to things we actually care about +/mob/living/simple_animal/hostile/proc/FindTarget(var/list/possible_targets, var/HasTargetsList = 0)//Step 2, filter down possible targets to things we actually care about var/list/Targets = list() - var/Target - for(var/atom/A in ListTargets()) + if(!HasTargetsList) + possible_targets = ListTargets() + for(var/atom/A in possible_targets) if(Found(A))//Just in case people want to override targetting - var/list/FoundTarget = list() - FoundTarget += A - Targets = FoundTarget + Targets = list(A) break if(CanAttack(A))//Can we attack it? Targets += A continue - Target = PickTarget(Targets) + var/Target = PickTarget(Targets) GiveTarget(Target) return Target //We now have a target @@ -101,14 +94,14 @@ return /mob/living/simple_animal/hostile/proc/PickTarget(list/Targets)//Step 3, pick amongst the possible, attackable targets + if(!Targets.len)//We didnt find nothin! + return if(target != null)//If we already have a target, but are told to pick again, calculate the lowest distance between all possible, and pick from the lowest distance targets for(var/atom/A in Targets) var/target_dist = get_dist(src, target) var/possible_target_distance = get_dist(src, A) if(target_dist < possible_target_distance) Targets -= A - if(!Targets.len)//We didnt find nothin! - return var/chosen_target = pick(Targets)//Pick the remaining targets (if any) at random return chosen_target @@ -150,15 +143,14 @@ target = new_target if(target != null) Aggro() - stance = HOSTILE_STANCE_ATTACK - return + return 1 -/mob/living/simple_animal/hostile/proc/MoveToTarget()//Step 5, handle movement between us and our target +/mob/living/simple_animal/hostile/proc/MoveToTarget(var/list/possible_targets)//Step 5, handle movement between us and our target stop_automated_movement = 1 if(!target || !CanAttack(target)) LoseTarget() - return - if(target in ListTargets()) + return 0 + if(target in possible_targets) var/target_distance = get_dist(src,target) if(ranged)//We ranged? Shoot at em if(target_distance >= 2 && ranged_cooldown <= 0)//But make sure they're a tile away at least, and our range attack is off cooldown @@ -172,46 +164,33 @@ Goto(target,move_to_delay,minimum_distance) if(isturf(loc) && target.Adjacent(src)) //If they're next to us, attack AttackingTarget() - return + return 1 if(environment_smash) if(target.loc != null && get_dist(src, target.loc) <= vision_range)//We can't see our target, but he's in our vision range still if(environment_smash >= 2)//If we're capable of smashing through walls, forget about vision completely after finding our target Goto(target,move_to_delay,minimum_distance) FindHidden() - return + return 1 else if(FindHidden()) - return + return 1 LoseTarget() + return 0 /mob/living/simple_animal/hostile/proc/Goto(target, delay, minimum_distance) walk_to(src, target, minimum_distance, delay) /mob/living/simple_animal/hostile/adjustBruteLoss(damage) ..(damage) - if(!client && !stat && search_objects < 3)//Not unconscious, and we don't ignore mobs + if(!ckey && !stat && search_objects < 3)//Not unconscious, and we don't ignore mobs if(search_objects)//Turn off item searching and ignore whatever item we were looking at, we're more concerned with fight or flight search_objects = 0 target = null - if(stance == HOSTILE_STANCE_IDLE)//If we took damage while idle, immediately attempt to find the source of it so we find a living target - Aggro() + if(AIStatus == AI_IDLE) + AIStatus = AI_ON + FindTarget() + else if(target != null && prob(40))//No more pulling a mob forever and having a second player attack it, it can switch targets now if it finds a more suitable one FindTarget() - if(stance == HOSTILE_STANCE_ATTACK)//No more pulling a mob forever and having a second player attack it, it can switch targets now if it finds a more suitable one - if(target != null && prob(40)) - FindTarget() - -/mob/living/simple_animal/hostile/proc/AttackTarget() - - stop_automated_movement = 1 - if(!target || !CanAttack(target)) - LoseTarget() - return 0 - if(!(target in ListTargets())) - LoseTarget() - return 0 - if(isturf(loc) && target.Adjacent(src)) - AttackingTarget() - return 1 /mob/living/simple_animal/hostile/proc/AttackingTarget() target.attack_animal(src) @@ -229,7 +208,6 @@ taunt_chance = initial(taunt_chance) /mob/living/simple_animal/hostile/proc/LoseTarget() - stance = HOSTILE_STANCE_IDLE target = null walk(src, 0) LoseAggro() @@ -325,30 +303,16 @@ ////// AI Status /////// -/mob/living/simple_animal/hostile/proc/AICanContinue() +/mob/living/simple_animal/hostile/proc/AICanContinue(var/list/possible_targets) switch(AIStatus) if(AI_ON) . = 1 - if(AI_SLEEP) - if(AIShouldWake()) + if(AI_IDLE) + if(FindTarget(possible_targets, 1)) . = 1 AIStatus = AI_ON //Wake up for more than one Life() cycle. else . = 0 - if(AI_OFF) - . = 0 - -//Returns 1 if the AI should wake up -//Returns 0 if the AI should remain asleep -/mob/living/simple_animal/hostile/proc/AIShouldWake() - . = 0 - if(FindTarget()) - . = 1 - - -//Convenience -/mob/living/simple_animal/hostile/proc/AIShouldSleep() - . = !(AIShouldWake()) - if(. && stance != HOSTILE_STANCE_IDLE) //This proc was called before LoseTarget(). - LoseTarget() +/mob/living/simple_animal/hostile/proc/AIShouldSleep(var/list/possible_targets) + return !FindTarget(possible_targets, 1) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index 45c8d140c89..7e01e2942ef 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -87,16 +87,12 @@ temperature = 50 /mob/living/simple_animal/hostile/asteroid/basilisk/GiveTarget(new_target) - target = new_target - if(target != null) - Aggro() - stance = HOSTILE_STANCE_ATTACK + if(..()) //we have a target if(isliving(target)) var/mob/living/L = target if(L.bodytemperature > 200) L.bodytemperature = 200 visible_message("The [src.name]'s stare chills [L.name] to the bone!") - return /mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity, target) switch(severity) @@ -154,17 +150,14 @@ if(target != null) if(istype(target, /obj/item/weapon/ore)) visible_message("The [src.name] looks at [target.name] with hungry eyes.") - stance = HOSTILE_STANCE_ATTACK - return - if(isliving(target)) + + else if(isliving(target)) Aggro() - stance = HOSTILE_STANCE_ATTACK visible_message("The [src.name] tries to flee from [target.name]!") retreat_distance = 10 minimum_distance = 10 Burrow() - return - return + /mob/living/simple_animal/hostile/asteroid/goldgrub/AttackingTarget() if(istype(target, /obj/item/weapon/ore)) @@ -366,7 +359,7 @@ /mob/living/simple_animal/hostile/asteroid/goliath/proc/handle_preattack() if(ranged_cooldown <= 2 && !pre_attack) pre_attack++ - if(!pre_attack || stat || stance == HOSTILE_STANCE_IDLE) + if(!pre_attack || stat || AIStatus == AI_IDLE) return icon_state = "Goliath_preattack" diff --git a/code/modules/mob/living/simple_animal/morph/morph.dm b/code/modules/mob/living/simple_animal/morph/morph.dm index 15d69564839..16e67c4f126 100644 --- a/code/modules/mob/living/simple_animal/morph/morph.dm +++ b/code/modules/mob/living/simple_animal/morph/morph.dm @@ -35,7 +35,7 @@ /mob/living/simple_animal/hostile/morph/examine(mob/user) if(morphed) form.examine(user) // Refactor examine to return desc so it's static? Not sure if worth it - if(get_dist(user,src)<=3) + if(get_dist(user,src)<=3) user << "Looks odd!" else ..() @@ -61,7 +61,7 @@ /mob/living/simple_animal/hostile/morph/proc/assume(atom/movable/target) morphed = 1 form = target - + //anim(loc,src,'icons/mob/mob.dmi',,"morph",,src.dir) No effect better than shit effect //Todo : update to .appearance once 508 hits @@ -89,9 +89,9 @@ return morphed = 0 form = null - - //anim(loc,src,'icons/mob/mob.dmi',,"morph",,src.dir) - + + //anim(loc,src,'icons/mob/mob.dmi',,"morph",,src.dir) + name = initial(name) icon = initial(icon) icon_state = initial(icon_state) @@ -127,7 +127,7 @@ /mob/living/simple_animal/hostile/morph/LoseAggro() vision_range = idle_vision_range -/mob/living/simple_animal/hostile/morph/AIShouldSleep() +/mob/living/simple_animal/hostile/morph/AIShouldSleep(var/list/possible_targets) . = ..() if(.) var/list/things = list() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 938ee7cf586..64a70739e32 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -74,10 +74,10 @@ health = Clamp(health, 0, maxHealth) /mob/living/simple_animal/Life() - if(..()) - if(!client && !stat) + if(..()) //alive + if(!ckey) handle_automated_movement() - + handle_automated_action() handle_automated_speech() return 1 @@ -114,6 +114,9 @@ if(druggy) druggy = 0 +/mob/living/simple_animal/proc/handle_automated_action() + return + /mob/living/simple_animal/proc/handle_automated_movement() if(!stop_automated_movement && wander) if(isturf(src.loc) && !resting && !buckled && canmove) //This is so it only moves if it's not inside a closet, gentics machine, etc. @@ -254,7 +257,7 @@ if(!Proj) return apply_damage(Proj.damage, Proj.damage_type) - Proj.on_hit(src, 0) + Proj.on_hit(src) return 0 /mob/living/simple_animal/adjustFireLoss(amount) diff --git a/code/modules/mob/living/simple_animal/slaughter/slaughter.dm b/code/modules/mob/living/simple_animal/slaughter/slaughter.dm index 58fe29515b3..ff0c9866215 100644 --- a/code/modules/mob/living/simple_animal/slaughter/slaughter.dm +++ b/code/modules/mob/living/simple_animal/slaughter/slaughter.dm @@ -12,7 +12,7 @@ icon = 'icons/mob/mob.dmi' icon_state = "daemon" icon_living = "daemon" - speed = 0 + speed = 1 a_intent = "harm" stop_automated_movement = 1 status_flags = CANPUSH @@ -21,22 +21,26 @@ minbodytemp = 0 faction = list("slaughter") attacktext = "wildly tears into" - maxHealth = 250 - health = 250 + maxHealth = 200 + health = 200 environment_smash = 1 melee_damage_lower = 30 melee_damage_upper = 30 see_in_dark = 8 + var/boost = 0 + bloodcrawl = BLOODCRAWL_EAT see_invisible = SEE_INVISIBLE_MINIMUM - var/devoured = 0 - var/phased = FALSE - var/holder = null - var/eating = FALSE - var/mob/living/kidnapped = null var/playstyle_string = "You are the Slaughter Demon, a terible creature from another existence. You have a single desire: To kill. \ You may Ctrl+Click on blood pools to travel through them, appearing and dissaapearing from the station at will. \ - Pulling a dead or critical mob while you enter a pool will pull them in with you, allowing you to feast. " + Pulling a dead or critical mob while you enter a pool will pull them in with you, allowing you to feast. \ + You move quickly upon leaving a pool of blood, but the material world will soon sap your strength and leave you sluggish. " +/mob/living/simple_animal/slaughter/Life() + ..() + if(boostThe [src] drags [victim] into the pool of blood!") - src.kidnapped = victim - src.loc = holder - src.phased = TRUE - src.holder = holder - if(src.kidnapped) - src << "You begin to feast on [kidnapped]. You can not move while you are doing this." - src.eating = TRUE - playsound(get_turf(src),'sound/magic/Demon_consume.ogg', 100, 1) - sleep(30) - playsound(get_turf(src),'sound/magic/Demon_consume.ogg', 100, 1) - sleep(30) - playsound(get_turf(src),'sound/magic/Demon_consume.ogg', 100, 1) - sleep(30) - src << "You devour [kidnapped]. Your health is fully restored." - src.adjustBruteLoss(-1000) - kidnapped.ghostize() - qdel(kidnapped) - src.devoured++ - src.kidnapped = null - src.eating = FALSE - src.notransform = 0 - -/mob/living/simple_animal/slaughter/proc/phasein(obj/effect/decal/cleanable/B) - if(src.eating) - src << "Finish eating first!" - else - src.loc = B.loc - src.phased = FALSE - src.client.eye = src - src.visible_message("The [src] rises out of the pool of blood!") - playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1) - qdel(src.holder) - -/obj/effect/decal/cleanable/blood/CtrlClick(mob/user) +/mob/living/simple_animal/slaughter/phasein() ..() - if(istype(user, /mob/living/simple_animal/slaughter)) - var/mob/living/simple_animal/slaughter/S = user - if(S.phased) - S.phasein(src) - else - S.phaseout(src) - - -/obj/effect/decal/cleanable/trail_holder/CtrlClick(mob/user) - ..() - if(istype(user, /mob/living/simple_animal/slaughter)) - var/mob/living/simple_animal/slaughter/S = user - if(S.phased) - S.phasein(src) - else - S.phaseout(src) - - - -/turf/CtrlClick(var/mob/user) - ..() - if(istype(user, /mob/living/simple_animal/slaughter)) - var/mob/living/simple_animal/slaughter/S = user - for(var/obj/effect/decal/cleanable/B in src.contents) - if(istype(B, /obj/effect/decal/cleanable/blood) || istype(B, /obj/effect/decal/cleanable/trail_holder)) - if(S.phased) - S.phasein(B) - break - else - S.phaseout(B) - break - -/obj/effect/dummy/slaughter //Can't use the wizard one, blocked by jaunt/slow - name = "water" - icon = 'icons/effects/effects.dmi' - icon_state = "nothing" - var/canmove = 1 - density = 0 - anchored = 1 - invisibility = 60 - -obj/effect/dummy/slaughter/relaymove(mob/user, direction) - if (!src.canmove || !direction) return - var/turf/newLoc = get_step(src,direction) - loc = newLoc - src.canmove = 0 - spawn(1) - src.canmove = 1 - -/obj/effect/dummy/slaughter/ex_act(blah) - return -/obj/effect/dummy/slaughter/bullet_act(blah) - return - -/obj/effect/dummy/slaughter/singularity_act(blah) - return + speed = 0 + boost = world.time + 30 //////////The Loot @@ -172,4 +66,11 @@ obj/effect/dummy/slaughter/relaymove(mob/user, direction) desc = "It's still faintly beating with rage" icon = 'icons/obj/surgery.dmi' icon_state = "heart-on" - origin_tech = "combat=5;biotech=8" \ No newline at end of file + origin_tech = "combat=5;biotech=8" + +/obj/item/weapon/demonheart/attack_self(mob/living/user) + visible_message("[user] feasts upon the [src].") + user << "You absorb some of the demon's power!" + user.bloodcrawl = BLOODCRAWL + qdel(src) + diff --git a/code/modules/mob/living/simple_animal/slaughter/slaughterevent.dm b/code/modules/mob/living/simple_animal/slaughter/slaughterevent.dm index 8e836a74250..de3e477ab6d 100644 --- a/code/modules/mob/living/simple_animal/slaughter/slaughterevent.dm +++ b/code/modules/mob/living/simple_animal/slaughter/slaughterevent.dm @@ -36,9 +36,9 @@ spawn_locs += L.loc if(!spawn_locs) return find_slaughter() - var /obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(pick(spawn_locs)) + var /obj/effect/dummy/slaughter/holder = PoolOrNew(/obj/effect/dummy/slaughter,(pick(spawn_locs))) var/mob/living/simple_animal/slaughter/S = new /mob/living/simple_animal/slaughter/(holder) - S.phased = TRUE + S.holder = holder player_mind.transfer_to(S) player_mind.assigned_role = "Slaughter Demon" player_mind.special_role = "Slaughter Demon" @@ -64,4 +64,4 @@ log_game("[key_of_slaughter] was spawned as a Slaughter Demon by an event.") return 0 message_admins("Unfortunately, no candidates were available for becoming a Slaugter Demon. Shutting down.") - return kill() \ No newline at end of file + return kill() diff --git a/code/modules/mob/living/simple_animal/slime/emote.dm b/code/modules/mob/living/simple_animal/slime/emote.dm index 85a298336a0..183ace95d10 100644 --- a/code/modules/mob/living/simple_animal/slime/emote.dm +++ b/code/modules/mob/living/simple_animal/slime/emote.dm @@ -6,43 +6,41 @@ //param = copytext(act, t1 + 1, length(act) + 1) act = copytext(act, 1, t1) - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) var/m_type = 1 var/regenerate_icons var/message switch(act) //Alphabetical please - if("bounce") + if("bounce","bounces") message = "The [src.name] bounces in place." m_type = 1 - if("jiggle") + if("jiggle","jiggles") message = "The [src.name] jiggles!" m_type = 1 - if("light") + if("light","lights") message = "The [src.name] lights up for a bit, then stops." m_type = 1 - if("moan") + if("moan","moans") message = "The [src.name] moans." m_type = 2 - if("shiver") + if("shiver","shivers") message = "The [src.name] shivers." m_type = 2 - if("sway") + if("sway","sways") message = "The [src.name] sways around dizzily." m_type = 1 - if("twitch") + if("twitch","twitches") message = "The [src.name] twitches." m_type = 1 - if("vibrate") + if("vibrate","vibrates") message = "The [src.name] vibrates!" m_type = 1 @@ -50,7 +48,7 @@ mood = null regenerate_icons = 1 - if("smile") + if("smile","smiles") mood = "mischevous" regenerate_icons = 1 @@ -58,15 +56,15 @@ mood = ":33" regenerate_icons = 1 - if("pout") + if("pout","pouts") mood = "pout" regenerate_icons = 1 - if("frown") + if("frown","frowns") mood = "sad" regenerate_icons = 1 - if("scowl") + if("scowl","scowls") mood = "angry" regenerate_icons = 1 diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 75da09b542c..6c2582fe005 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -167,7 +167,7 @@ attacked += 10 if((Proj.damage_type == BURN)) adjustBruteLoss(-abs(Proj.damage)) //fire projectiles heals slimes. - Proj.on_hit(src, 0) + Proj.on_hit(src) else ..(Proj) return 0 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index b2415704445..3c0e579eb5f 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -946,6 +946,14 @@ var/list/slot_equipment_priority = list( \ return G break +/mob/proc/notify_ghost_cloning(var/message = "Someone is trying to revive you. Re-enter your corpse if you want to be revived!", var/sound = 'sound/effects/genetics.ogg') + var/mob/dead/observer/ghost = get_ghost() + if(ghost) + ghost.notify_cloning(message, sound) + return ghost + + + /mob/proc/adjustEarDamage() return diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 62fb5c75178..400a0facf8b 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -46,7 +46,7 @@ return 0 /proc/iscorgi(A) - if(istype(A, /mob/living/simple_animal/pet/corgi)) + if(istype(A, /mob/living/simple_animal/pet/dog/corgi)) return 1 return 0 diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 0b5158f6085..2b4776c12b7 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -300,14 +300,11 @@ /mob/new_player/proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank) if (ticker.current_state == GAME_STATE_PLAYING) - var/ailist[] = list() - for (var/mob/living/silicon/ai/A in living_mob_list) - ailist += A - if (ailist.len) - var/mob/living/silicon/ai/announcer = pick(ailist) + if(announcement_systems.len) if(character.mind) if((character.mind.assigned_role != "Cyborg") && (character.mind.assigned_role != character.mind.special_role)) - announcer.say("[announcer.radiomod] [character.real_name] has signed up as [rank].") + var/obj/machinery/announcement_system/announcer = pick(announcement_systems) + announcer.announce("ARRIVAL", character.real_name, rank, list()) //make the list empty to make it announce it in common /mob/new_player/proc/LateChoices() var/mills = world.time // 1/10 of a second, not real milliseconds but whatever diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index d065b489ff6..8cebce6b253 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -163,7 +163,7 @@ else if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) if(BARTENDER) - clothes_s = new /icon('icons/mob/uniform.dmi', "bar_suit_s") + clothes_s = new /icon('icons/mob/uniform.dmi', "barman_s") clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY) if(backbag == 1) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 45fe320ce0c..46d057fd8fc 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -430,7 +430,7 @@ for(var/t in organs) //this really should not be necessary qdel(t) - var/mob/living/simple_animal/pet/corgi/new_corgi = new /mob/living/simple_animal/pet/corgi (loc) + var/mob/living/simple_animal/pet/dog/corgi/new_corgi = new /mob/living/simple_animal/pet/dog/corgi (loc) new_corgi.a_intent = "harm" new_corgi.key = key @@ -509,7 +509,7 @@ //Good mobs! if(ispath(MP, /mob/living/simple_animal/pet/cat)) return 1 - if(ispath(MP, /mob/living/simple_animal/pet/corgi)) + if(ispath(MP, /mob/living/simple_animal/pet/dog/corgi)) return 1 if(ispath(MP, /mob/living/simple_animal/crab)) return 1 diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm index e87ac8e1ff8..107502ce151 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm @@ -3,20 +3,22 @@ Contents: - Stealth Verbs -- Stealth Icon Stuff */ /obj/item/clothing/suit/space/space_ninja/proc/toggle_stealth() var/mob/living/carbon/human/U = affecting + if(!U) + return if(s_active) cancel_stealth() else - spawn(0) - anim(U.loc,U,'icons/mob/mob.dmi',,"cloak",,U.dir) + if(cell.charge <= 0) + U << "You don't have enough power to enable Stealth!" + return s_active=!s_active - U.alpha = 0 + animate(U, U.alpha = 0,time = 15) U.visible_message("[U.name] vanishes into thin air!", \ "You are now invisible to normal detection.") return @@ -24,11 +26,11 @@ Contents: /obj/item/clothing/suit/space/space_ninja/proc/cancel_stealth() var/mob/living/carbon/human/U = affecting + if(!U) + return 0 if(s_active) - spawn(0) - anim(U.loc,U,'icons/mob/mob.dmi',,"uncloak",,U.dir) s_active=!s_active - U.alpha = 255 + animate(U, U.alpha = 255, time = 15) U.visible_message("[U.name] appears from thin air!", \ "You are now visible.") return 1 @@ -45,34 +47,3 @@ Contents: else affecting << "Stealth does not appear to work!" - -//Allows the mob to grab a stealth icon. -/mob/proc/NinjaStealthActive(atom/A)//A is the atom which we are using as the overlay. - invisibility = INVISIBILITY_LEVEL_TWO//Set ninja invis to 2. - var/icon/opacity_icon = new(A.icon, A.icon_state) - var/icon/alpha_mask = getIconMask(src) - var/icon/alpha_mask_2 = new('icons/effects/effects.dmi', "at_shield1") - alpha_mask.AddAlphaMask(alpha_mask_2) - opacity_icon.AddAlphaMask(alpha_mask) - for(var/i=0,i<5,i++)//And now we add it as overlays. It's faster than creating an icon and then merging it. - var/image/I = image("icon" = opacity_icon, "icon_state" = A.icon_state, "layer" = layer+0.8)//So it's above other stuff but below weapons and the like. - switch(i)//Now to determine offset so the result is somewhat blurred. - if(1) - I.pixel_x -= 1 - if(2) - I.pixel_x += 1 - if(3) - I.pixel_y -= 1 - if(4) - I.pixel_y += 1 - - overlays += I//And finally add the overlay. - overlays += image("icon"='icons/effects/effects.dmi',"icon_state" ="electricity","layer" = layer+0.9) - -//When ninja steal malfunctions. -/mob/proc/NinjaStealthMalf() - invisibility = 0//Set ninja invis to 0. - overlays += image("icon"='icons/effects/effects.dmi',"icon_state" ="electricity","layer" = layer+0.9) - playsound(loc, 'sound/effects/stealthoff.ogg', 75, 1) - - diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index 810e9058165..5fcca544ae9 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -83,7 +83,6 @@ Contents: cell.charge = 9000 - /obj/item/clothing/suit/space/space_ninja/Destroy() if(affecting) affecting << browse(null, "window=hack spideros") diff --git a/code/modules/ninja/suit/suit_process.dm b/code/modules/ninja/suit/suit_process.dm index 6440ffc71c9..73fcd2d788c 100644 --- a/code/modules/ninja/suit/suit_process.dm +++ b/code/modules/ninja/suit/suit_process.dm @@ -4,25 +4,27 @@ set background = BACKGROUND_ENABLED //Runs in the background while the suit is initialized. - spawn while(cell.charge) + //Requires charge or stealth to process. + spawn while(cell.charge || s_active) - //Let's check for some safeties. if(s_initialized && !affecting) terminate()//Kills the suit and attached objects. if(!s_initialized) - return//When turned off the proc stops. + return - //Now let's do the normal processing. - if(s_coold) - s_coold--//Checks for ability s_cooldown first. + if(cell.charge) + if(s_coold) + s_coold--//Checks for ability s_cooldown first. - var/A = s_cost//s_cost is the default energy cost each ntick, usually 5. - if(s_active)//If stealth is active. - A += s_acost - cell.charge-=A + var/A = s_cost//s_cost is the default energy cost each ntick, usually 5. + if(s_active)//If stealth is active. + A += s_acost + cell.charge-=A - if(!cell.charge) + if(cell.charge <= 0) cell.charge=0 cancel_stealth() sleep(10)//Checks every second. + + diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index e1a143f2f5d..fcd6363ddbb 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -11,6 +11,7 @@ var/select = 1 //The state of the select fire switch. Determines from the ammo_type list what kind of shot is fired next. var/can_charge = 1 //Can it be charged in a recharger? ammo_x_offset = 2 + var/shaded_charge = 0 //if this gun uses a stateful charge bar for more detail /obj/item/weapon/gun/energy/emp_act(severity) power_supply.use(round(power_supply.charge / severity)) @@ -87,9 +88,12 @@ itemState += "[shot.select_name]" if(power_supply.charge < shot.e_cost) overlays += "[icon_state]_empty" - ratio = 0 - for(var/i = ratio, i >= 1, i--) - overlays += image(icon = icon, icon_state = iconState, pixel_x = ammo_x_offset * (i -1)) + else + if(!shaded_charge) + for(var/i = ratio, i >= 1, i--) + overlays += image(icon = icon, icon_state = iconState, pixel_x = ammo_x_offset * (i -1)) + else + overlays += image(icon = icon, icon_state = "[icon_state]_charge[ratio]") if(F) var/iconF = "flight" if(F.on) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index a3312bbe75e..f6b625d1169 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -8,7 +8,7 @@ origin_tech = "combat=3;magnets=2" ammo_type = list(/obj/item/ammo_casing/energy/lasergun) ammo_x_offset = 1 - + shaded_charge = 1 /obj/item/weapon/gun/energy/laser/practice name = "practice laser gun" diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index e11357de9a7..89c73331581 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -20,6 +20,7 @@ icon_state = "hoslaser" force = 10 ammo_type = list(/obj/item/ammo_casing/energy/electrode/hos, /obj/item/ammo_casing/energy/laser/hos, /obj/item/ammo_casing/energy/disabler) + ammo_x_offset = 4 /obj/item/weapon/gun/energy/gun/dragnet name = "DRAGnet" diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index 18706908c93..0e143cefe8e 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -59,6 +59,6 @@ /obj/item/weapon/gun/energy/pulse/pistol/m1911 name = "\improper M1911-P" desc = "A compact pulse core in a classic handgun frame for Nanotrasen officers. It's not the size of the gun, it's the size of the hole it puts through people." - icon_state = "m1911-p" + icon_state = "m1911" item_state = "gun" cell_type = "/obj/item/weapon/stock_parts/cell/infinite" \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 45e936f8867..1401c31937a 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -52,6 +52,7 @@ origin_tech = "materials=2;biotech=3;powerstorage=3" modifystate = 1 var/charge_tick = 0 + ammo_x_offset = 1 /obj/item/weapon/gun/energy/floragun/New() ..() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 0a1eddc7eb5..4ff0cfff93c 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -60,19 +60,20 @@ if(!isliving(target)) return 0 var/mob/living/L = target - - var/organ_hit_text = "" - if(L.has_limbs) - organ_hit_text = " in \the [parse_zone(def_zone)]" - if(suppressed) - playsound(loc, hitsound, 5, 1, -1) - L << "You're shot by \a [src][organ_hit_text]!" - else - if(hitsound) - var/volume = vol_by_damage() - playsound(loc, hitsound, volume, 1, -1) - L.visible_message("[L] is hit by \a [src][organ_hit_text]!", \ - "[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 + if(blocked != 100) // not completely blocked + var/organ_hit_text = "" + if(L.has_limbs) + organ_hit_text = " in \the [parse_zone(def_zone)]" + if(suppressed) + playsound(loc, hitsound, 5, 1, -1) + L << "You're shot by \a [src][organ_hit_text]!" + else + if(hitsound) + var/volume = vol_by_damage() + playsound(loc, hitsound, volume, 1, -1) + L.visible_message("[L] is hit by \a [src][organ_hit_text]!", \ + "[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 + L.on_hit(type) var/reagent_note if(reagents && reagents.reagent_list) @@ -81,7 +82,6 @@ reagent_note += R.id + " (" reagent_note += num2text(R.volume) + ") " - L.on_hit(type) add_logs(firer, L, "shot", src, reagent_note) return L.apply_effects(stun, weaken, paralyze, irradiate, stutter, slur, eyeblur, drowsy, blocked, stamina, jitter) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 84bbe11872b..83d693f3479 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -125,19 +125,19 @@ create_reagents(50) /obj/item/projectile/bullet/dart/on_hit(atom/target, blocked = 0, hit_zone) - var/deflect = 0 if(iscarbon(target)) var/mob/living/carbon/M = target - if(M.can_inject(null,0,hit_zone)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. - ..() - reagents.trans_to(M, reagents.total_volume) - return 1 - else - deflect = 1 - target.visible_message("The [name] was deflected!", \ - "You were protected against the [name]!") - if(!deflect) - ..() + if(blocked != 100) // not completely blocked + if(M.can_inject(null,0,hit_zone)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. + ..() + reagents.trans_to(M, reagents.total_volume) + return 1 + else + blocked = 100 + target.visible_message("The [name] was deflected!", \ + "You were protected against the [name]!") + + ..(target, blocked, hit_zone) flags &= ~NOREACT reagents.handle_reactions() return 1 diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 7ad01293b93..bbe10e02af3 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -22,7 +22,6 @@ damage = 10 damage_type = BRUTE nodamage = 0 - flag = "magic" /obj/item/projectile/magic/fireball/Range() var/mob/living/L = locate(/mob/living) in (range(src, 1) - firer) @@ -45,7 +44,6 @@ damage = 0 damage_type = OXY nodamage = 1 - flag = "magic" /obj/item/projectile/magic/resurrection/on_hit(mob/living/carbon/target) . = ..() @@ -69,7 +67,6 @@ damage = 0 damage_type = OXY nodamage = 1 - flag = "magic" var/inner_tele_radius = 0 var/outer_tele_radius = 6 @@ -93,7 +90,6 @@ damage = 0 damage_type = OXY nodamage = 1 - flag = "magic" /obj/item/projectile/magic/door/on_hit(atom/target) . = ..() @@ -114,7 +110,6 @@ damage = 0 damage_type = BURN nodamage = 1 - flag = "magic" /obj/item/projectile/magic/change/on_hit(atom/change) . = ..() @@ -205,7 +200,7 @@ var/animal = pick("parrot","corgi","crab","pug","cat","mouse","chicken","cow","lizard","chick","fox","butterfly") switch(animal) if("parrot") new_mob = new /mob/living/simple_animal/parrot(M.loc) - if("corgi") new_mob = new /mob/living/simple_animal/pet/corgi(M.loc) + if("corgi") new_mob = new /mob/living/simple_animal/pet/dog/corgi(M.loc) if("crab") new_mob = new /mob/living/simple_animal/crab(M.loc) if("pug") new_mob = new /mob/living/simple_animal/pet/pug(M.loc) if("cat") new_mob = new /mob/living/simple_animal/pet/cat(M.loc) @@ -257,7 +252,6 @@ damage = 0 damage_type = BURN nodamage = 1 - flag = "magic" /obj/item/projectile/magic/animate/Bump(atom/change) ..() diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index ed67992617a..1e0034644f4 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -25,7 +25,6 @@ name ="explosive bolt" icon_state= "bolter" damage = 50 - flag = "bullet" /obj/item/projectile/bullet/gyro/on_hit(atom/target, blocked = 0) ..() @@ -37,7 +36,6 @@ desc = "USE A WEEL GUN" icon_state= "bolter" damage = 60 - flag = "bullet" /obj/item/projectile/bullet/a40mm/on_hit(atom/target, blocked = 0) ..() diff --git a/code/modules/reagents/Chemistry-Reagents/Medicine-Reagents.dm b/code/modules/reagents/Chemistry-Reagents/Medicine-Reagents.dm index 80aea6a6168..3f08110b756 100644 --- a/code/modules/reagents/Chemistry-Reagents/Medicine-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents/Medicine-Reagents.dm @@ -224,6 +224,42 @@ ..() return +/datum/reagent/medicine/mine_salve + name = "Miner's Salve" + id = "mine_salve" + description = "Slowly heals burn and brute damage, and causes subject to believe they are fully healed." + reagent_state = LIQUID + color = "#6D6374" + metabolization_rate = 0.4 * REAGENTS_METABOLISM + +/datum/reagent/medicine/mine_salve/on_mob_life(mob/living/M) + if(iscarbon(M)) + var/mob/living/carbon/N = M + N.hal_screwyhud = 5 + M.adjustBruteLoss(-0.25*REM) + M.adjustFireLoss(-0.25*REM) + ..() + return + +/datum/reagent/medicine/mine_salve/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1) + if(iscarbon(M)) + if(method == TOUCH) + if(show_message) + M << "You feel your wounds knitting back together!" + if(method == INGEST) + if(show_message) + M << "That tasted horrible." + M.AdjustStunned(2) + M.AdjustWeakened(2) + ..() + return + +/datum/reagent/medicine/mine_salve/on_mob_delete(mob/living/M) + if(iscarbon(M)) + var/mob/living/carbon/N = M + N.hal_screwyhud = 0 + ..() + /datum/reagent/medicine/synthflesh name = "Synthflesh" id = "synthflesh" @@ -614,11 +650,6 @@ ..() return -/datum/reagent/medicine/strange_reagent/Topic(href, href_list) - if(href_list["reenter"]) - var/mob/dead/observer/ghost = usr - if(istype(ghost)) - ghost.reenter_corpse(ghost) /datum/reagent/medicine/strange_reagent name = "Strange Reagent" @@ -633,14 +664,11 @@ if(M.getBruteLoss() >= 100 || M.getFireLoss() >= 100) M.visible_message("[M]'s body convulses a bit, and then falls still once more.") return - var/mob/dead/observer/ghost = M.get_ghost() M.visible_message("[M]'s body convulses a bit.") if(!M.suiciding && !(NOCLONE in M.mutations)) if(!M) return - if(ghost) - ghost << "Someone is trying to revive you. Re-enter your corpse if you want to be revived! (Click to re-enter)" - ghost << sound('sound/effects/genetics.ogg') + if(M.notify_ghost_cloning()) spawn (100) //so the ghost has time to re-enter return else diff --git a/code/modules/reagents/Chemistry-Recipes/Medicine.dm b/code/modules/reagents/Chemistry-Recipes/Medicine.dm index 357eac96a5e..60e80923400 100644 --- a/code/modules/reagents/Chemistry-Recipes/Medicine.dm +++ b/code/modules/reagents/Chemistry-Recipes/Medicine.dm @@ -57,6 +57,20 @@ result = "salglu_solution" required_reagents = list("sodiumchloride" = 1, "water" = 1, "sugar" = 1) result_amount = 3 + +/datum/chemical_reaction/mine_salve + name = "Miner's Salve" + id = "mine_salve" + result = "mine_salve" + required_reagents = list("oil" = 1, "water" = 1, "iron" = 1) + result_amount = 3 + +/datum/chemical_reaction/mine_salve2 + name = "Miner's Salve" + id = "mine_salve" + result = "mine_salve" + required_reagents = list("plasma" = 5, "iron" = 5, "sugar" = 1) // A sheet of plasma, a twinkie and a sheet of metal makes four of these + result_amount = 15 /datum/chemical_reaction/synthflesh name = "Synthflesh" diff --git a/code/modules/reagents/Chemistry-Recipes/Others.dm b/code/modules/reagents/Chemistry-Recipes/Others.dm index b839ad05c4c..c04022f3414 100644 --- a/code/modules/reagents/Chemistry-Recipes/Others.dm +++ b/code/modules/reagents/Chemistry-Recipes/Others.dm @@ -308,7 +308,7 @@ /datum/chemical_reaction/corgium/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) - new /mob/living/simple_animal/pet/corgi(location) + new /mob/living/simple_animal/pet/dog/corgi(location) ..() /datum/chemical_reaction/hair_dye diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index b64d21f6c14..99f7e10089c 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -82,7 +82,7 @@ /obj/item/weapon/reagent_containers/throw_impact(atom/target) . = ..() - if(!reagents.total_volume || !spillable) + if(!reagents || !reagents.total_volume || !spillable) return if(ismob(target) && target.reagents) @@ -91,10 +91,9 @@ var/R target.visible_message("[M] has been splashed with something!", \ "[M] has been splashed with something!") - if(reagents) - for(var/datum/reagent/A in reagents.reagent_list) - R += A.id + " (" - R += num2text(A.volume) + ")," + for(var/datum/reagent/A in reagents.reagent_list) + R += A.id + " (" + R += num2text(A.volume) + ")," if(thrownby) add_logs(thrownby, M, "splashed", R) diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index e85c1218e39..d636f818374 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -138,7 +138,7 @@ if(DISP_END_TRUNK) return /obj/structure/disposalpipe/trunk if(DISP_END_BIN) - return /obj/machinery/disposal + return /obj/machinery/disposal/bin if(DISP_END_OUTLET) return /obj/structure/disposaloutlet if(DISP_END_CHUTE) @@ -240,9 +240,9 @@ SortP.updatedir() else if(ptype == DISP_END_BIN) - var/obj/machinery/disposal/P = new /obj/machinery/disposal(loc,src) - P.mode = 0 // start with pump off - transfer_fingerprints_to(P) + var/obj/machinery/disposal/bin/B = new /obj/machinery/disposal/bin(loc,src) + B.mode = 0 // start with pump off + transfer_fingerprints_to(B) else if(ptype == DISP_END_OUTLET) var/obj/structure/disposaloutlet/P = new /obj/structure/disposaloutlet(loc,src) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal-structures.dm similarity index 60% rename from code/modules/recycling/disposal.dm rename to code/modules/recycling/disposal-structures.dm index 0ad17216e87..ca1364644be 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal-structures.dm @@ -1,1335 +1,869 @@ -// Disposal bin -// Holds items for disposal into pipe system -// Draws air from turf, gradually charges internal reservoir -// Once full (~1 atm), uses air resv to flush items into the pipes -// Automatically recharges air (unless off), will flush when ready if pre-set -// Can hold items and human size things, no other draggables -// Toilets are a type of disposal bin for small objects only and work on magic. By magic, I mean torque rotation -#define SEND_PRESSURE 0.05*ONE_ATMOSPHERE - -/obj/machinery/disposal - name = "disposal unit" - desc = "A pneumatic waste disposal unit." - icon = 'icons/obj/atmospherics/pipes/disposal.dmi' - icon_state = "disposal" - anchored = 1 - density = 1 - var/datum/gas_mixture/air_contents // internal reservoir - var/mode = 1 // item mode 0=off 1=charging 2=charged - var/flush = 0 // true if flush handle is pulled - var/obj/structure/disposalpipe/trunk/trunk = null // the attached pipe trunk - var/flushing = 0 // true if flushing in progress - var/flush_every_ticks = 30 //Every 30 ticks it will look whether it is ready to flush - var/flush_count = 0 //this var adds 1 once per tick. When it reaches flush_every_ticks it resets and tries to flush. - var/last_sound = 0 - var/obj/structure/disposalconstruct/stored - // create a new disposal - // find the attached trunk (if present) and init gas resvr. -/obj/machinery/disposal/New(loc, var/obj/structure/disposalconstruct/make_from) - ..() - - if(make_from) - dir = make_from.dir - make_from.loc = 0 - stored = make_from - else - stored = new /obj/structure/disposalconstruct(0,DISP_END_BIN,dir) - - trunk_check() - - air_contents = new/datum/gas_mixture() - //gas.volume = 1.05 * CELLSTANDARD - update() - -/obj/machinery/disposal/proc/trunk_check() - trunk = locate() in src.loc - if(!trunk) - mode = 0 - flush = 0 - else - mode = initial(mode) - flush = initial(flush) - trunk.linked = src // link the pipe trunk to self - -/obj/machinery/disposal/Destroy() - eject() - if(trunk) - trunk.linked = null - ..() - -/obj/machinery/disposal/singularity_pull(S, current_size) - if(current_size >= STAGE_FIVE) - Deconstruct() - -/obj/machinery/disposal/initialize() - // this will get a copy of the air turf and take a SEND PRESSURE amount of air from it - var/atom/L = loc - var/datum/gas_mixture/env = new - env.copy_from(L.return_air()) - var/datum/gas_mixture/removed = env.remove(SEND_PRESSURE + 1) - air_contents.merge(removed) - trunk_check() - - // attack by item places it in to disposal -/obj/machinery/disposal/attackby(obj/item/I, mob/user, params) - if(stat & BROKEN || !I || !user) - return - - src.add_fingerprint(user) - if(mode<=0) // It's off - if(istype(I, /obj/item/weapon/screwdriver)) - if(contents.len > 0) - user << "Eject the items first!" - return - if(mode==0) // It's off but still not unscrewed - mode=-1 // Set it to doubleoff l0l - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You remove the screws around the power connection." - return - else if(mode==-1) - mode=0 - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You attach the screws around the power connection." - return - else if(istype(I,/obj/item/weapon/weldingtool) && mode==-1) - if(contents.len > 0) - user << "Eject the items first!" - return - var/obj/item/weapon/weldingtool/W = I - if(W.remove_fuel(0,user)) - playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) - user << "You start slicing the floorweld off \the [src]..." - - if(do_after(user,20, target = src)) - if(!src || !W.isOn()) return - user << "You slice the floorweld off \the [src]." - Deconstruct() - return - else - return - - if(istype(I, /obj/item/weapon/storage/bag/trash)) - var/obj/item/weapon/storage/bag/trash/T = I - user << "You empty the bag." - for(var/obj/item/O in T.contents) - T.remove_from_storage(O,src) - T.update_icon() - update() - return - - var/obj/item/weapon/grab/G = I - if(istype(G)) // handle grabbed mob - if(ismob(G.affecting)) - stuff_mob_in(G.affecting, user) - return - - if(!user.drop_item()) - return - - I.loc = src - user.visible_message("[user.name] places \the [I] into \the [src].", \ - "You place \the [I] into \the [src].") - - update() - -// mouse drop another mob or self -// -/obj/machinery/disposal/MouseDrop_T(mob/living/target, mob/living/user) - if(istype(target) && user == target) - stuff_mob_in(target, user) - -/obj/machinery/disposal/proc/stuff_mob_in(mob/living/target, mob/living/user) - if(!iscarbon(user) && !user.ventcrawler) //only carbon and ventcrawlers can climb into disposal by themselves. - return - if(target.mob_size > MOB_SIZE_HUMAN) - user << "[target] doesn't fit inside [src]!" - return - src.add_fingerprint(user) - if(user == target) - user.visible_message("[user] starts climbing into [src].", \ - "You start climbing into [src]...") - else - target.visible_message("[user] starts putting [target] into [src].", \ - "[user] starts putting you into [src]!") - if(do_mob(user, target, 20)) - if (!src.loc) - return - if (target.client) - target.client.perspective = EYE_PERSPECTIVE - target.client.eye = src - target.loc = src - if(user == target) - user.visible_message("[user] climbs into [src].", \ - "You climb into [src].") - else - target.visible_message("[user] has placed [target] in [src].", \ - "[user] has placed [target] in [src].") - add_logs(user, target, "stuffed", addition="into [src]") - update() - -// can breath normally in the disposal -/obj/machinery/disposal/alter_health() - return get_turf(src) - -/obj/machinery/disposal/relaymove(mob/user) - attempt_escape(user) - -// resist to escape the bin -/obj/machinery/disposal/container_resist() - attempt_escape(usr) - -/obj/machinery/disposal/proc/attempt_escape(mob/user) - if(src.flushing) - return - go_out(user) - return - -// leave the disposal -/obj/machinery/disposal/proc/go_out(mob/user) - - if (user.client) - user.client.eye = user.client.mob - user.client.perspective = MOB_PERSPECTIVE - user.loc = src.loc - update() - return - - -// monkeys and xenos can only pull the flush lever -/obj/machinery/disposal/attack_paw(mob/user) - if(stat & BROKEN) - return - flush = !flush - update() - -// ai as human but can't flush -/obj/machinery/disposal/attack_ai(mob/user) - interact(user, 1) - -// human interact with machine -/obj/machinery/disposal/attack_hand(mob/user) - if(user && user.loc == src) - usr << "You cannot reach the controls from inside!" - return - /* - if(mode==-1) - usr << "\red The disposal units power is disabled." - return - */ - interact(user, 0) - -// hostile mob escape from disposals -/obj/machinery/disposal/attack_animal(mob/living/simple_animal/M) - if(M.environment_smash) - M.do_attack_animation(src) - visible_message("[M.name] smashes \the [src] apart!") - qdel(src) - return - -// user interaction -/obj/machinery/disposal/interact(mob/user, ai=0) - - src.add_fingerprint(user) - if(stat & BROKEN) - user.unset_machine() - return - - var/dat = "Waste Disposal UnitWaste Disposal Unit
" - - if(!ai) // AI can't pull flush handle - if(flush) - dat += "Disposal handle: Disengage Engaged" - else - dat += "Disposal handle: Disengaged Engage" - - dat += "

Eject contents
" - - if(mode <= 0) - dat += "Pump: Off On
" - else if(mode == 1) - dat += "Pump: Off On (pressurizing)
" - else - dat += "Pump: Off On (idle)
" - - var/per = Clamp(100* air_contents.return_pressure() / (SEND_PRESSURE), 0, 100) - - dat += "Pressure: [round(per, 1)]%
" - - - user.set_machine(src) - user << browse(dat, "window=disposal;size=360x170") - onclose(user, "disposal") - -// handle machine interaction - -/obj/machinery/disposal/Topic(href, href_list) - if(..()) - return - if(usr.loc == src) - usr << "You cannot reach the controls from inside!" - return - - if(mode==-1 && !href_list["eject"]) // only allow ejecting if mode is -1 - usr << "\The [src]'s power is disabled." - return - ..() - usr.set_machine(src) - - if(href_list["close"]) - usr.unset_machine() - usr << browse(null, "window=disposal") - return - - if(href_list["pump"]) - if(text2num(href_list["pump"])) - mode = 1 - else - mode = 0 - update() - - if(href_list["handle"]) - flush = text2num(href_list["handle"]) - update() - - if(href_list["eject"]) - eject() - return - -// eject the contents of the disposal unit -/obj/machinery/disposal/proc/eject() - for(var/atom/movable/AM in src) - AM.loc = src.loc - AM.pipe_eject(0) - update() - -// update the icon & overlays to reflect mode & status -/obj/machinery/disposal/proc/update() - overlays.Cut() - if(stat & BROKEN) - icon_state = "disposal-broken" - mode = 0 - flush = 0 - return - - // flush handle - if(flush) - overlays += image('icons/obj/atmospherics/pipes/disposal.dmi', "dispover-handle") - - // only handle is shown if no power - if(stat & NOPOWER || mode == -1) - return - - // check for items in disposal - occupied light - if(contents.len > 0) - overlays += image('icons/obj/atmospherics/pipes/disposal.dmi', "dispover-full") - - // charging and ready light - if(mode == 1) - overlays += image('icons/obj/atmospherics/pipes/disposal.dmi', "dispover-charge") - else if(mode == 2) - overlays += image('icons/obj/atmospherics/pipes/disposal.dmi', "dispover-ready") - -// timed process -// charge the gas reservoir and perform flush if ready -/obj/machinery/disposal/process() - if(stat & BROKEN) // nothing can happen if broken - return - - flush_count++ - if( flush_count >= flush_every_ticks ) - if( contents.len ) - if(mode == 2) - spawn(0) - feedback_inc("disposal_auto_flush",1) - flush() - flush_count = 0 - - src.updateDialog() - - if(flush && air_contents.return_pressure() >= SEND_PRESSURE ) // flush can happen even without power - spawn(0) - flush() - - if(stat & NOPOWER) // won't charge if no power - return - - use_power(100) // base power usage - - if(mode != 1) // if off or ready, no need to charge - return - - // otherwise charge - use_power(500) // charging power usage - - var/atom/L = loc // recharging from loc turf - - var/datum/gas_mixture/env = L.return_air() - var/pressure_delta = (SEND_PRESSURE*1.01) - air_contents.return_pressure() - - if(env.temperature > 0) - var/transfer_moles = 0.1 * pressure_delta*air_contents.volume/(env.temperature * R_IDEAL_GAS_EQUATION) - - //Actually transfer the gas - var/datum/gas_mixture/removed = env.remove(transfer_moles) - air_contents.merge(removed) - air_update_turf() - - - // if full enough, switch to ready mode - if(air_contents.return_pressure() >= SEND_PRESSURE) - mode = 2 - update() - return - -/obj/machinery/disposal/proc/flush() - flushing = 1 - flushAnimation() - var/obj/structure/disposalholder/H = new() - newHolderDestination(H) - sleep(10) - if(last_sound < world.time + 1) - playsound(src, 'sound/machines/disposalflush.ogg', 50, 0, 0) - last_sound = world.time - sleep(5) - H.init(src) - air_contents = new() - H.start(src) - flushing = 0 - flush = 0 - if(mode == 2) - mode = 1 - update() - -/obj/machinery/disposal/proc/newHolderDestination(obj/structure/disposalholder/H) - for(var/obj/item/smallDelivery/O in src) - H.tomail = 1 - return - -/obj/machinery/disposal/proc/flushAnimation() - flick("[icon_state]-flush", src) - -// called when area power changes -/obj/machinery/disposal/power_change() - ..() // do default setting/reset of stat NOPOWER bit - update() // update icon - return - - -// called when holder is expelled from a disposal -// should usually only occur if the pipe network is modified -/obj/machinery/disposal/proc/expel(obj/structure/disposalholder/H) - - var/turf/target - playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) - if(H) // Somehow, someone managed to flush a window which broke mid-transit and caused the disposal to go in an infinite loop trying to expel null, hopefully this fixes it - for(var/atom/movable/AM in H) - target = get_offset_target_turf(src.loc, rand(5)-rand(5), rand(5)-rand(5)) - - AM.loc = src.loc - AM.pipe_eject(0) - spawn(1) - if(AM) - AM.throw_at(target, 5, 1) - - H.vent_gas(loc) - qdel(H) - -/obj/machinery/disposal/CanPass(atom/movable/mover, turf/target, height=0) - if (istype(mover,/obj/item) && mover.throwing) - var/obj/item/I = mover - if(istype(I, /obj/item/projectile)) - return - if(prob(75)) - I.loc = src - visible_message("\the [I] lands in \the [src].") - update() - else - visible_message("\the [I] bounces off of \the [src]'s rim!") - return 0 - else - return ..(mover, target, height) - -/obj/machinery/disposal/Deconstruct() - if(stored) - var/turf/T = loc - stored.loc = T - src.transfer_fingerprints_to(stored) - stored.anchored = 0 - stored.density = 1 - stored.update() - ..() - -//How disposal handles getting a storage dump from a storage object -/obj/machinery/disposal/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user) - for(var/obj/item/I in src_object) - src_object.remove_from_storage(I, src) - return 1 - -// virtual disposal object -// travels through pipes in lieu of actual items -// contents will be items flushed by the disposal -// this allows the gas flushed to be tracked - -/obj/structure/disposalholder - invisibility = 101 - var/datum/gas_mixture/gas = null // gas used to flush, will appear at exit point - var/active = 0 // true if the holder is moving, otherwise inactive - dir = 0 - var/count = 1000 //*** can travel 1000 steps before going inactive (in case of loops) - var/destinationTag = 0 // changes if contains a delivery container - var/tomail = 0 //changes if contains wrapped package - var/hasmob = 0 //If it contains a mob - -/obj/structure/disposalholder/Destroy() - qdel(gas) - active = 0 - ..() - - // initialize a holder from the contents of a disposal unit -/obj/structure/disposalholder/proc/init(obj/machinery/disposal/D) - gas = D.air_contents// transfer gas resv. into holder object - - //Check for any living mobs trigger hasmob. - //hasmob effects whether the package goes to cargo or its tagged destination. - for(var/mob/living/M in D) - if(M && M.stat != DEAD) - if(M.client) - M.client.eye = src - hasmob = 1 - - //Checks 1 contents level deep. This means that players can be sent through disposals... - //...but it should require a second person to open the package. (i.e. person inside a wrapped locker) - for(var/obj/O in D) - if(O.contents) - for(var/mob/living/M in O.contents) - if(M && M.stat != DEAD) - if(M.client) - M.client.eye = src - hasmob = 1 - - // now everything inside the disposal gets put into the holder - // note AM since can contain mobs or objs - for(var/atom/movable/AM in D) - AM.loc = src - if(istype(AM, /obj/structure/bigDelivery) && !hasmob) - var/obj/structure/bigDelivery/T = AM - src.destinationTag = T.sortTag - if(istype(AM, /obj/item/smallDelivery) && !hasmob) - var/obj/item/smallDelivery/T = AM - src.destinationTag = T.sortTag - - -// start the movement process -// argument is the disposal unit the holder started in -/obj/structure/disposalholder/proc/start(obj/machinery/disposal/D) - if(!D.trunk) - D.expel(src) // no trunk connected, so expel immediately - return - - loc = D.trunk - active = 1 - dir = DOWN - spawn(1) - move() // spawn off the movement process - - return - -// movement process, persists while holder is moving through pipes -/obj/structure/disposalholder/proc/move() - var/obj/structure/disposalpipe/last - while(active) - var/obj/structure/disposalpipe/curr = loc - last = curr - curr = curr.transfer(src) - if(!curr && active) - last.expel(src, loc, dir) - - sleep(1) - if(!(count--)) - active = 0 - return - -// find the turf which should contain the next pipe -/obj/structure/disposalholder/proc/nextloc() - return get_step(loc,dir) - -// find a matching pipe on a turf -/obj/structure/disposalholder/proc/findpipe(turf/T) - - if(!T) - return null - - var/fdir = turn(dir, 180) // flip the movement direction - for(var/obj/structure/disposalpipe/P in T) - if(fdir & P.dpdir) // find pipe direction mask that matches flipped dir - return P - // if no matching pipe, return null - return null - -// merge two holder objects -// used when a a holder meets a stuck holder -/obj/structure/disposalholder/proc/merge(obj/structure/disposalholder/other) - for(var/atom/movable/AM in other) - AM.loc = src // move everything in other holder to this one - if(ismob(AM)) - var/mob/M = AM - if(M.client) // if a client mob, update eye to follow this holder - M.client.eye = src - qdel(other) - - -// called when player tries to move while in a pipe -/obj/structure/disposalholder/relaymove(mob/user) - if (user.stat) - return - if (src.loc) - for (var/mob/M in get_hearers_in_view(src.loc.loc)) - M.show_message("CLONG, clong!", 2) - playsound(src.loc, 'sound/effects/clang.ogg', 50, 0, 0) - -// called to vent all gas in holder to a location -/obj/structure/disposalholder/proc/vent_gas(atom/location) - if(location) - location.assume_air(gas) // vent all gas to turf - air_update_turf() - return - -/obj/structure/disposalholder/allow_drop() - return 1 - -// Disposal pipes - -/obj/structure/disposalpipe - icon = 'icons/obj/atmospherics/pipes/disposal.dmi' - name = "disposal pipe" - desc = "An underfloor disposal pipe." - anchored = 1 - density = 0 - - level = 1 // underfloor only - var/dpdir = 0 // bitmask of pipe directions - dir = 0 // dir will contain dominant direction for junction pipes - var/health = 10 // health points 0-10 - layer = 2.3 // slightly lower than wires and other pipes - var/base_icon_state // initial icon state on map - var/obj/structure/disposalconstruct/stored - - // new pipe, set the icon_state as on map -/obj/structure/disposalpipe/New(loc,var/obj/structure/disposalconstruct/make_from) - ..() - - if(make_from && !make_from.gc_destroyed) - base_icon_state = make_from.base_state - dir = make_from.dir - dpdir = make_from.dpdir - make_from.loc = src - stored = make_from - else - base_icon_state = icon_state - stored = new /obj/structure/disposalconstruct(src,direction=dir) - switch(base_icon_state) - if("pipe-s") - stored.ptype = DISP_PIPE_STRAIGHT - if("pipe-c") - stored.ptype = DISP_PIPE_BENT - if("pipe-j1") - stored.ptype = DISP_JUNCTION - if("pipe-j2") - stored.ptype = DISP_JUNCTION_FLIP - if("pipe-y") - stored.ptype = DISP_YJUNCTION - if("pipe-t") - stored.ptype = DISP_END_TRUNK - if("pipe-j1s") - stored.ptype = DISP_SORTJUNCTION - if("pipe-j2s") - stored.ptype = DISP_SORTJUNCTION_FLIP - return - - - // pipe is deleted - // ensure if holder is present, it is expelled -/obj/structure/disposalpipe/Destroy() - var/obj/structure/disposalholder/H = locate() in src - if(H) - // holder was present - H.active = 0 - var/turf/T = src.loc - if(T.density) - // deleting pipe is inside a dense turf (wall) - // this is unlikely, but just dump out everything into the turf in case - - for(var/atom/movable/AM in H) - AM.loc = T - AM.pipe_eject(0) - qdel(H) - ..() - return - - // otherwise, do normal expel from turf - if(H) - expel(H, T, 0) - ..() - -// returns the direction of the next pipe object, given the entrance dir -// by default, returns the bitmask of remaining directions -/obj/structure/disposalpipe/proc/nextdir(fromdir) - return dpdir & (~turn(fromdir, 180)) - -// transfer the holder through this pipe segment -// overriden for special behaviour -// -/obj/structure/disposalpipe/proc/transfer(obj/structure/disposalholder/H) - var/nextdir = nextdir(H.dir) - H.dir = nextdir - var/turf/T = H.nextloc() - var/obj/structure/disposalpipe/P = H.findpipe(T) - - if(P) - // find other holder in next loc, if inactive merge it with current - var/obj/structure/disposalholder/H2 = locate() in P - if(H2 && !H2.active) - H.merge(H2) - - H.loc = P - else // if wasn't a pipe, then set loc to turf - H.loc = T - return null - - return P - - -// update the icon_state to reflect hidden status -/obj/structure/disposalpipe/proc/update() - var/turf/T = src.loc - hide(T.intact && !istype(T,/turf/space)) // space never hides pipes - -// hide called by levelupdate if turf intact status changes -// change visibility status and force update of icon -/obj/structure/disposalpipe/hide(var/intact) - invisibility = intact ? 101: 0 // hide if floor is intact - updateicon() - -// update actual icon_state depending on visibility -// if invisible, append "f" to icon_state to show faded version -// this will be revealed if a T-scanner is used -// if visible, use regular icon_state -/obj/structure/disposalpipe/proc/updateicon() - if(invisibility) - icon_state = "[base_icon_state]f" - else - icon_state = base_icon_state - return - - -// expel the held objects into a turf -// called when there is a break in the pipe -// - -/obj/structure/disposalpipe/proc/expel(obj/structure/disposalholder/H, turf/T, direction) - - var/turf/target - - if(istype(T, /turf/simulated/floor)) //intact floor, pop the tile - var/turf/simulated/floor/myturf = T - if(myturf.builtin_tile) - myturf.builtin_tile.loc = T - myturf.builtin_tile = null - myturf.make_plating() - - if(direction) // direction is specified - if(istype(T, /turf/space)) // if ended in space, then range is unlimited - target = get_edge_target_turf(T, direction) - else // otherwise limit to 10 tiles - target = get_ranged_target_turf(T, direction, 10) - - playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) - if(H) - for(var/atom/movable/AM in H) - AM.loc = T - AM.pipe_eject(direction) - spawn(1) - if(AM) - AM.throw_at(target, 100, 1) - - else // no specified direction, so throw in random direction - - playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) - if(H) - for(var/atom/movable/AM in H) - target = get_offset_target_turf(T, rand(5)-rand(5), rand(5)-rand(5)) - - AM.loc = T - AM.pipe_eject(0) - spawn(1) - if(AM) - AM.throw_at(target, 5, 1) - H.vent_gas(T) - qdel(H) - return - -// call to break the pipe -// will expel any holder inside at the time -// then delete the pipe -// remains : set to leave broken pipe pieces in place -/obj/structure/disposalpipe/proc/broken(remains = 0) - if(remains) - for(var/D in cardinal) - if(D & dpdir) - var/obj/structure/disposalpipe/broken/P = new(src.loc) - P.dir = D - - src.invisibility = 101 // make invisible (since we won't delete the pipe immediately) - var/obj/structure/disposalholder/H = locate() in src - if(H) - // holder was present - H.active = 0 - var/turf/T = src.loc - if(T.density) - // broken pipe is inside a dense turf (wall) - // this is unlikely, but just dump out everything into the turf in case - - for(var/atom/movable/AM in H) - AM.loc = T - AM.pipe_eject(0) - qdel(H) - return - - // otherwise, do normal expel from turf - if(H) - expel(H, T, 0) - - spawn(2) // delete pipe after 2 ticks to ensure expel proc finished - qdel(src) - - -// pipe affected by explosion -/obj/structure/disposalpipe/ex_act(severity, target) - - //pass on ex_act to our contents before calling it on ourself - var/obj/structure/disposalholder/H = locate() in src - if(H) - H.contents_explosion(severity, target) - - switch(severity) - if(1.0) - broken(0) - return - if(2.0) - health -= rand(5,15) - healthcheck() - return - if(3.0) - health -= rand(0,15) - healthcheck() - return - - -// test health for brokenness -/obj/structure/disposalpipe/proc/healthcheck() - if(health < -2) - broken(0) - else if(health<1) - broken(1) - return - -//attack by item -//weldingtool: unfasten and convert to obj/disposalconstruct - -/obj/structure/disposalpipe/attackby(obj/item/I, mob/user, params) - - var/turf/T = src.loc - if(T.intact) - return // prevent interaction with T-scanner revealed pipes - src.add_fingerprint(user) - if(istype(I, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/W = I - - if(W.remove_fuel(0,user)) - playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) - user << "You start slicing the disposal pipe..." - // check if anything changed over 2 seconds - if(do_after(user,30, target = src)) - if(!src || !W.isOn()) return - Deconstruct() - user << "You slice the disposal pipe." - else - return - -// called when pipe is cut with welder -/obj/structure/disposalpipe/Deconstruct() - if(stored) - var/turf/T = loc - stored.loc = T - transfer_fingerprints_to(stored) - stored.dir = dir - stored.density = 0 - stored.anchored = 1 - stored.update() - ..() - -/obj/structure/disposalpipe/singularity_pull(S, current_size) - if(current_size >= STAGE_FIVE) - Deconstruct() - -// *** TEST verb -//client/verb/dispstop() -// for(var/obj/structure/disposalholder/H in world) -// H.active = 0 - -// a straight or bent segment -/obj/structure/disposalpipe/segment - icon_state = "pipe-s" - -/obj/structure/disposalpipe/segment/New() - ..() - if(stored.ptype == DISP_PIPE_STRAIGHT) - dpdir = dir | turn(dir, 180) - else - dpdir = dir | turn(dir, -90) - - update() - return - - - - -//a three-way junction with dir being the dominant direction -/obj/structure/disposalpipe/junction - icon_state = "pipe-j1" - -/obj/structure/disposalpipe/junction/New() - ..() - switch(stored.ptype) - if(DISP_JUNCTION) - dpdir = dir | turn(dir, -90) | turn(dir,180) - if(DISP_JUNCTION_FLIP) - dpdir = dir | turn(dir, 90) | turn(dir,180) - if(DISP_YJUNCTION) - dpdir = dir | turn(dir,90) | turn(dir, -90) - update() - return - - -// next direction to move -// if coming in from secondary dirs, then next is primary dir -// if coming in from primary dir, then next is equal chance of other dirs - -/obj/structure/disposalpipe/junction/nextdir(fromdir) - var/flipdir = turn(fromdir, 180) - if(flipdir != dir) // came from secondary dir - return dir // so exit through primary - else // came from primary - // so need to choose either secondary exit - var/mask = ..(fromdir) - - // find a bit which is set - var/setbit = 0 - if(mask & NORTH) - setbit = NORTH - else if(mask & SOUTH) - setbit = SOUTH - else if(mask & EAST) - setbit = EAST - else - setbit = WEST - - if(prob(50)) // 50% chance to choose the found bit or the other one - return setbit - else - return mask & (~setbit) - -//a three-way junction that sorts objects -/obj/structure/disposalpipe/sortjunction - - icon_state = "pipe-j1s" - var/sortType = 0 //Look at the list called TAGGERLOCATIONS in setup.dm - var/posdir = 0 - var/negdir = 0 - var/sortdir = 0 - -/obj/structure/disposalpipe/sortjunction/proc/updatedesc() - desc = "An underfloor disposal pipe with a package sorting mechanism." - if(sortType>0) - var/tag = uppertext(TAGGERLOCATIONS[sortType]) - desc += "\nIt's tagged with [tag]" - -/obj/structure/disposalpipe/sortjunction/proc/updatedir() - posdir = dir - negdir = turn(posdir, 180) - - if(stored.ptype == DISP_SORTJUNCTION) - sortdir = turn(posdir, -90) - else - icon_state = "pipe-j2s" - sortdir = turn(posdir, 90) - - dpdir = sortdir | posdir | negdir - -/obj/structure/disposalpipe/sortjunction/New() - ..() - updatedir() - updatedesc() - update() - return - -/obj/structure/disposalpipe/sortjunction/attackby(obj/item/I, mob/user, params) - if(..()) - return - - if(istype(I, /obj/item/device/destTagger)) - var/obj/item/device/destTagger/O = I - - if(O.currTag > 0)// Tag set - sortType = O.currTag - playsound(src.loc, 'sound/machines/twobeep.ogg', 100, 1) - var/tag = uppertext(TAGGERLOCATIONS[O.currTag]) - user << "Changed filter to [tag]." - updatedesc() - - -// next direction to move -// if coming in from negdir, then next is primary dir or sortdir -// if coming in from posdir, then flip around and go back to posdir -// if coming in from sortdir, go to posdir - -/obj/structure/disposalpipe/sortjunction/nextdir(fromdir, sortTag) - //var/flipdir = turn(fromdir, 180) - if(fromdir != sortdir) // probably came from the negdir - - if(src.sortType == sortTag) //if destination matches filtered type... - return sortdir // exit through sortdirection - else - return posdir - else // came from sortdir - // so go with the flow to positive direction - return posdir - -/obj/structure/disposalpipe/sortjunction/transfer(obj/structure/disposalholder/H) - var/nextdir = nextdir(H.dir, H.destinationTag) - H.dir = nextdir - var/turf/T = H.nextloc() - var/obj/structure/disposalpipe/P = H.findpipe(T) - - if(P) - // find other holder in next loc, if inactive merge it with current - var/obj/structure/disposalholder/H2 = locate() in P - if(H2 && !H2.active) - H.merge(H2) - - H.loc = P - else // if wasn't a pipe, then set loc to turf - H.loc = T - return null - - return P - - -//a three-way junction that sorts objects destined for the mail office mail table (tomail = 1) -/obj/structure/disposalpipe/wrapsortjunction - - desc = "An underfloor disposal pipe which sorts wrapped and unwrapped objects." - icon_state = "pipe-j1s" - var/posdir = 0 - var/negdir = 0 - var/sortdir = 0 - -/obj/structure/disposalpipe/wrapsortjunction/New() - ..() - posdir = dir - if(stored.ptype == DISP_SORTJUNCTION) - sortdir = turn(posdir, -90) - negdir = turn(posdir, 180) - else - icon_state = "pipe-j2s" - sortdir = turn(posdir, 90) - negdir = turn(posdir, 180) - dpdir = sortdir | posdir | negdir - - update() - return - -// next direction to move -// if coming in from negdir, then next is primary dir or sortdir -// if coming in from posdir, then flip around and go back to posdir -// if coming in from sortdir, go to posdir - -/obj/structure/disposalpipe/wrapsortjunction/nextdir(fromdir, istomail) - //var/flipdir = turn(fromdir, 180) - if(fromdir != sortdir) // probably came from the negdir - - if(istomail) //if destination matches filtered type... - return sortdir // exit through sortdirection - else - return posdir - else // came from sortdir - // so go with the flow to positive direction - return posdir - -/obj/structure/disposalpipe/wrapsortjunction/transfer(obj/structure/disposalholder/H) - var/nextdir = nextdir(H.dir, H.tomail) - H.dir = nextdir - var/turf/T = H.nextloc() - var/obj/structure/disposalpipe/P = H.findpipe(T) - - if(P) - // find other holder in next loc, if inactive merge it with current - var/obj/structure/disposalholder/H2 = locate() in P - if(H2 && !H2.active) - H.merge(H2) - - H.loc = P - else // if wasn't a pipe, then set loc to turf - H.loc = T - return null - - return P - - - - - -//a trunk joining to a disposal bin or outlet on the same turf -/obj/structure/disposalpipe/trunk - icon_state = "pipe-t" - var/obj/linked // the linked obj/machinery/disposal or obj/disposaloutlet - -/obj/structure/disposalpipe/trunk/New() - ..() - dpdir = dir - spawn(1) - getlinked() - - update() - 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 - - var/obj/structure/disposaloutlet/O = locate() in src.loc - if(O) - linked = O - - update() - return - - // Override attackby so we disallow trunkremoval when somethings ontop -/obj/structure/disposalpipe/trunk/attackby(obj/item/I, mob/user, params) - - //Disposal bins or chutes - /* - These shouldn't be required - var/obj/machinery/disposal/D = locate() in src.loc - if(D && D.anchored) - return - - //Disposal outlet - var/obj/structure/disposaloutlet/O = locate() in src.loc - if(O && O.anchored) - return - */ - - //Disposal constructors - var/obj/structure/disposalconstruct/C = locate() in src.loc - if(C && C.anchored) - return - - var/turf/T = src.loc - if(T.intact) - return // prevent interaction with T-scanner revealed pipes - src.add_fingerprint(user) - if(istype(I, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/W = I - - if(linked) - user << "You need to deconstruct disposal machinery above this pipe!" - return - - if(W.remove_fuel(0,user)) - playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) - user << "You start slicing the disposal pipe..." - if(do_after(user,30, target = src)) - if(!src || !W.isOn()) return - Deconstruct() - user << "You slice the disposal pipe." - else - return - - // would transfer to next pipe segment, but we are in a trunk - // if not entering from disposal bin, - // transfer to linked object (outlet or bin) - -/obj/structure/disposalpipe/trunk/transfer(obj/structure/disposalholder/H) - - if(H.dir == DOWN) // we just entered from a disposer - return ..() // so do base transfer proc - // otherwise, go to the linked object - if(linked) - var/obj/structure/disposaloutlet/O = linked - if(istype(O) && (H)) - O.expel(H) // expel at outlet - else - var/obj/machinery/disposal/D = linked - if(H) - D.expel(H) // expel at disposal - else - if(H) - src.expel(H, src.loc, 0) // expel at turf - return null - - // nextdir - -/obj/structure/disposalpipe/trunk/nextdir(fromdir) - if(fromdir == DOWN) - return dir - else - return 0 - -// a broken pipe -/obj/structure/disposalpipe/broken - icon_state = "pipe-b" - dpdir = 0 // broken pipes have dpdir=0 so they're not found as 'real' pipes - // i.e. will be treated as an empty turf - desc = "A broken piece of disposal pipe." - -/obj/structure/disposalpipe/broken/New() - ..() - update() - return - -// the disposal outlet machine - -/obj/structure/disposalpipe/broken/Deconstruct() - qdel(src) - -/obj/structure/disposaloutlet - name = "disposal outlet" - desc = "An outlet for the pneumatic disposal system." - icon = 'icons/obj/atmospherics/pipes/disposal.dmi' - icon_state = "outlet" - density = 1 - anchored = 1 - var/active = 0 - var/turf/target // this will be where the output objects are 'thrown' to. - var/obj/structure/disposalpipe/trunk/trunk = null // the attached pipe trunk - var/obj/structure/disposalconstruct/stored - var/mode = 0 - var/start_eject = 0 - var/eject_range = 2 - -/obj/structure/disposaloutlet/New(loc, var/obj/structure/disposalconstruct/make_from) - ..() - - if(make_from) - dir = make_from.dir - make_from.loc = src - stored = make_from - else - stored = new (src, DISP_END_OUTLET,dir) - - spawn(1) - target = get_ranged_target_turf(src, dir, 10) - - trunk = locate() in src.loc - if(trunk) - trunk.linked = src // link the pipe trunk to self - -/obj/structure/disposaloutlet/Destroy() - if(trunk) - trunk.linked = null - ..() - -// expel the contents of the holder object, then delete it -// called when the holder exits the outlet -/obj/structure/disposaloutlet/proc/expel(obj/structure/disposalholder/H) - - flick("outlet-open", src) - if((start_eject + 30) < world.time) - start_eject = world.time - playsound(src, 'sound/machines/warning-buzzer.ogg', 50, 0, 0) - sleep(20) - playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) - else - sleep(20) - if(H) - for(var/atom/movable/AM in H) - AM.loc = src.loc - AM.pipe_eject(dir) - spawn(5) - if(AM) - AM.throw_at(target, eject_range, 1) - H.vent_gas(src.loc) - qdel(H) - return - -/obj/structure/disposaloutlet/attackby(obj/item/I, mob/user, params) - if(!I || !user) - return - src.add_fingerprint(user) - if(istype(I, /obj/item/weapon/screwdriver)) - if(mode==0) - mode=1 - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You remove the screws around the power connection." - return - else if(mode==1) - mode=0 - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You attach the screws around the power connection." - return - else if(istype(I,/obj/item/weapon/weldingtool) && mode==1) - var/obj/item/weapon/weldingtool/W = I - if(W.remove_fuel(0,user)) - playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) - user << "You start slicing the floorweld off \the [src]..." - if(do_after(user,20, target = src)) - if(!src || !W.isOn()) return - user << "You slice the floorweld off \the [src]." - stored.loc = loc - src.transfer_fingerprints_to(stored) - stored.update() - stored.anchored = 0 - stored.density = 1 - qdel(src) - return - else - return - - - -// called when movable is expelled from a disposal pipe or outlet -// by default does nothing, override for special behaviour - -/atom/movable/proc/pipe_eject(direction) - return - -// check if mob has client, if so restore client view on eject -/mob/pipe_eject(var/direction) - if (src.client) - src.client.perspective = MOB_PERSPECTIVE - src.client.eye = src - - return - -/obj/effect/decal/cleanable/blood/gibs/pipe_eject(direction) - var/list/dirs - if(direction) - dirs = list( direction, turn(direction, -45), turn(direction, 45)) - else - dirs = alldirs.Copy() - - src.streak(dirs) - -/obj/effect/decal/cleanable/robot_debris/gib/pipe_eject(direction) - var/list/dirs - if(direction) - dirs = list( direction, turn(direction, -45), turn(direction, 45)) - else - dirs = alldirs.Copy() - - src.streak(dirs) + +// virtual disposal object +// travels through pipes in lieu of actual items +// contents will be items flushed by the disposal +// this allows the gas flushed to be tracked + +/obj/structure/disposalholder + invisibility = 101 + var/datum/gas_mixture/gas = null // gas used to flush, will appear at exit point + var/active = 0 // true if the holder is moving, otherwise inactive + dir = 0 + var/count = 1000 //*** can travel 1000 steps before going inactive (in case of loops) + var/destinationTag = 0 // changes if contains a delivery container + var/tomail = 0 //changes if contains wrapped package + var/hasmob = 0 //If it contains a mob + +/obj/structure/disposalholder/Destroy() + qdel(gas) + active = 0 + ..() + + // initialize a holder from the contents of a disposal unit +/obj/structure/disposalholder/proc/init(obj/machinery/disposal/D) + gas = D.air_contents// transfer gas resv. into holder object + + //Check for any living mobs trigger hasmob. + //hasmob effects whether the package goes to cargo or its tagged destination. + for(var/mob/living/M in D) + if(M && M.stat != DEAD) + if(M.client) + M.client.eye = src + hasmob = 1 + + //Checks 1 contents level deep. This means that players can be sent through disposals... + //...but it should require a second person to open the package. (i.e. person inside a wrapped locker) + for(var/obj/O in D) + if(O.contents) + for(var/mob/living/M in O.contents) + if(M && M.stat != DEAD) + if(M.client) + M.client.eye = src + hasmob = 1 + + // now everything inside the disposal gets put into the holder + // note AM since can contain mobs or objs + for(var/atom/movable/AM in D) + AM.loc = src + if(istype(AM, /obj/structure/bigDelivery) && !hasmob) + var/obj/structure/bigDelivery/T = AM + src.destinationTag = T.sortTag + if(istype(AM, /obj/item/smallDelivery) && !hasmob) + var/obj/item/smallDelivery/T = AM + src.destinationTag = T.sortTag + + +// start the movement process +// argument is the disposal unit the holder started in +/obj/structure/disposalholder/proc/start(obj/machinery/disposal/D) + if(!D.trunk) + D.expel(src) // no trunk connected, so expel immediately + return + + loc = D.trunk + active = 1 + dir = DOWN + spawn(1) + move() // spawn off the movement process + + return + +// movement process, persists while holder is moving through pipes +/obj/structure/disposalholder/proc/move() + var/obj/structure/disposalpipe/last + while(active) + var/obj/structure/disposalpipe/curr = loc + last = curr + curr = curr.transfer(src) + if(!curr && active) + last.expel(src, loc, dir) + + sleep(1) + if(!(count--)) + active = 0 + return + +// find the turf which should contain the next pipe +/obj/structure/disposalholder/proc/nextloc() + return get_step(loc,dir) + +// find a matching pipe on a turf +/obj/structure/disposalholder/proc/findpipe(turf/T) + + if(!T) + return null + + var/fdir = turn(dir, 180) // flip the movement direction + for(var/obj/structure/disposalpipe/P in T) + if(fdir & P.dpdir) // find pipe direction mask that matches flipped dir + return P + // if no matching pipe, return null + return null + +// merge two holder objects +// used when a a holder meets a stuck holder +/obj/structure/disposalholder/proc/merge(obj/structure/disposalholder/other) + for(var/atom/movable/AM in other) + AM.loc = src // move everything in other holder to this one + if(ismob(AM)) + var/mob/M = AM + if(M.client) // if a client mob, update eye to follow this holder + M.client.eye = src + qdel(other) + + +// called when player tries to move while in a pipe +/obj/structure/disposalholder/relaymove(mob/user) + if (user.stat) + return + if (src.loc) + for (var/mob/M in get_hearers_in_view(src.loc.loc)) + M.show_message("CLONG, clong!", 2) + playsound(src.loc, 'sound/effects/clang.ogg', 50, 0, 0) + +// called to vent all gas in holder to a location +/obj/structure/disposalholder/proc/vent_gas(atom/location) + if(location) + location.assume_air(gas) // vent all gas to turf + air_update_turf() + return + +/obj/structure/disposalholder/allow_drop() + return 1 + +// Disposal pipes + +/obj/structure/disposalpipe + icon = 'icons/obj/atmospherics/pipes/disposal.dmi' + name = "disposal pipe" + desc = "An underfloor disposal pipe." + anchored = 1 + density = 0 + + level = 1 // underfloor only + var/dpdir = 0 // bitmask of pipe directions + dir = 0 // dir will contain dominant direction for junction pipes + var/health = 10 // health points 0-10 + layer = 2.3 // slightly lower than wires and other pipes + var/base_icon_state // initial icon state on map + var/obj/structure/disposalconstruct/stored + + // new pipe, set the icon_state as on map +/obj/structure/disposalpipe/New(loc,var/obj/structure/disposalconstruct/make_from) + ..() + + if(make_from && !make_from.gc_destroyed) + base_icon_state = make_from.base_state + dir = make_from.dir + dpdir = make_from.dpdir + make_from.loc = src + stored = make_from + else + base_icon_state = icon_state + stored = new /obj/structure/disposalconstruct(src,direction=dir) + switch(base_icon_state) + if("pipe-s") + stored.ptype = DISP_PIPE_STRAIGHT + if("pipe-c") + stored.ptype = DISP_PIPE_BENT + if("pipe-j1") + stored.ptype = DISP_JUNCTION + if("pipe-j2") + stored.ptype = DISP_JUNCTION_FLIP + if("pipe-y") + stored.ptype = DISP_YJUNCTION + if("pipe-t") + stored.ptype = DISP_END_TRUNK + if("pipe-j1s") + stored.ptype = DISP_SORTJUNCTION + if("pipe-j2s") + stored.ptype = DISP_SORTJUNCTION_FLIP + return + + + // pipe is deleted + // ensure if holder is present, it is expelled +/obj/structure/disposalpipe/Destroy() + var/obj/structure/disposalholder/H = locate() in src + if(H) + // holder was present + H.active = 0 + var/turf/T = src.loc + if(T.density) + // deleting pipe is inside a dense turf (wall) + // this is unlikely, but just dump out everything into the turf in case + + for(var/atom/movable/AM in H) + AM.loc = T + AM.pipe_eject(0) + qdel(H) + ..() + return + + // otherwise, do normal expel from turf + if(H) + expel(H, T, 0) + ..() + +// returns the direction of the next pipe object, given the entrance dir +// by default, returns the bitmask of remaining directions +/obj/structure/disposalpipe/proc/nextdir(fromdir) + return dpdir & (~turn(fromdir, 180)) + +// transfer the holder through this pipe segment +// overriden for special behaviour +// +/obj/structure/disposalpipe/proc/transfer(obj/structure/disposalholder/H) + var/nextdir = nextdir(H.dir) + H.dir = nextdir + var/turf/T = H.nextloc() + var/obj/structure/disposalpipe/P = H.findpipe(T) + + if(P) + // find other holder in next loc, if inactive merge it with current + var/obj/structure/disposalholder/H2 = locate() in P + if(H2 && !H2.active) + H.merge(H2) + + H.loc = P + else // if wasn't a pipe, then set loc to turf + H.loc = T + return null + + return P + + +// update the icon_state to reflect hidden status +/obj/structure/disposalpipe/proc/update() + var/turf/T = src.loc + hide(T.intact && !istype(T,/turf/space)) // space never hides pipes + +// hide called by levelupdate if turf intact status changes +// change visibility status and force update of icon +/obj/structure/disposalpipe/hide(var/intact) + invisibility = intact ? 101: 0 // hide if floor is intact + updateicon() + +// update actual icon_state depending on visibility +// if invisible, append "f" to icon_state to show faded version +// this will be revealed if a T-scanner is used +// if visible, use regular icon_state +/obj/structure/disposalpipe/proc/updateicon() + if(invisibility) + icon_state = "[base_icon_state]f" + else + icon_state = base_icon_state + return + + +// expel the held objects into a turf +// called when there is a break in the pipe +// + +/obj/structure/disposalpipe/proc/expel(obj/structure/disposalholder/H, turf/T, direction) + + var/turf/target + + if(istype(T, /turf/simulated/floor)) //intact floor, pop the tile + var/turf/simulated/floor/myturf = T + if(myturf.builtin_tile) + myturf.builtin_tile.loc = T + myturf.builtin_tile = null + myturf.make_plating() + + if(direction) // direction is specified + if(istype(T, /turf/space)) // if ended in space, then range is unlimited + target = get_edge_target_turf(T, direction) + else // otherwise limit to 10 tiles + target = get_ranged_target_turf(T, direction, 10) + + playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) + if(H) + for(var/atom/movable/AM in H) + AM.loc = T + AM.pipe_eject(direction) + spawn(1) + if(AM) + AM.throw_at(target, 10, 1) + + else // no specified direction, so throw in random direction + + playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) + if(H) + for(var/atom/movable/AM in H) + target = get_offset_target_turf(T, rand(5)-rand(5), rand(5)-rand(5)) + + AM.loc = T + AM.pipe_eject(0) + spawn(1) + if(AM) + AM.throw_at(target, 5, 1) + H.vent_gas(T) + qdel(H) + return + +// call to break the pipe +// will expel any holder inside at the time +// then delete the pipe +// remains : set to leave broken pipe pieces in place +/obj/structure/disposalpipe/proc/broken(remains = 0) + if(remains) + for(var/D in cardinal) + if(D & dpdir) + var/obj/structure/disposalpipe/broken/P = new(src.loc) + P.dir = D + + src.invisibility = 101 // make invisible (since we won't delete the pipe immediately) + var/obj/structure/disposalholder/H = locate() in src + if(H) + // holder was present + H.active = 0 + var/turf/T = src.loc + if(T.density) + // broken pipe is inside a dense turf (wall) + // this is unlikely, but just dump out everything into the turf in case + + for(var/atom/movable/AM in H) + AM.loc = T + AM.pipe_eject(0) + qdel(H) + return + + // otherwise, do normal expel from turf + if(H) + expel(H, T, 0) + + spawn(2) // delete pipe after 2 ticks to ensure expel proc finished + qdel(src) + + +// pipe affected by explosion +/obj/structure/disposalpipe/ex_act(severity, target) + + //pass on ex_act to our contents before calling it on ourself + var/obj/structure/disposalholder/H = locate() in src + if(H) + H.contents_explosion(severity, target) + + switch(severity) + if(1.0) + broken(0) + return + if(2.0) + health -= rand(5,15) + healthcheck() + return + if(3.0) + health -= rand(0,15) + healthcheck() + return + + +// test health for brokenness +/obj/structure/disposalpipe/proc/healthcheck() + if(health < -2) + broken(0) + else if(health<1) + broken(1) + return + +//attack by item +//weldingtool: unfasten and convert to obj/disposalconstruct + +/obj/structure/disposalpipe/attackby(obj/item/I, mob/user, params) + + var/turf/T = src.loc + if(T.intact) + return // prevent interaction with T-scanner revealed pipes + src.add_fingerprint(user) + if(istype(I, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/W = I + + if(W.remove_fuel(0,user)) + playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) + user << "You start slicing the disposal pipe..." + // check if anything changed over 2 seconds + if(do_after(user,30, target = src)) + if(!src || !W.isOn()) return + Deconstruct() + user << "You slice the disposal pipe." + else + return + +// called when pipe is cut with welder +/obj/structure/disposalpipe/Deconstruct() + if(stored) + var/turf/T = loc + stored.loc = T + transfer_fingerprints_to(stored) + stored.dir = dir + stored.density = 0 + stored.anchored = 1 + stored.update() + ..() + +/obj/structure/disposalpipe/singularity_pull(S, current_size) + if(current_size >= STAGE_FIVE) + Deconstruct() + +// *** TEST verb +//client/verb/dispstop() +// for(var/obj/structure/disposalholder/H in world) +// H.active = 0 + +// a straight or bent segment +/obj/structure/disposalpipe/segment + icon_state = "pipe-s" + +/obj/structure/disposalpipe/segment/New() + ..() + if(stored.ptype == DISP_PIPE_STRAIGHT) + dpdir = dir | turn(dir, 180) + else + dpdir = dir | turn(dir, -90) + + update() + return + + + + +//a three-way junction with dir being the dominant direction +/obj/structure/disposalpipe/junction + icon_state = "pipe-j1" + +/obj/structure/disposalpipe/junction/New() + ..() + switch(stored.ptype) + if(DISP_JUNCTION) + dpdir = dir | turn(dir, -90) | turn(dir,180) + if(DISP_JUNCTION_FLIP) + dpdir = dir | turn(dir, 90) | turn(dir,180) + if(DISP_YJUNCTION) + dpdir = dir | turn(dir,90) | turn(dir, -90) + update() + return + + +// next direction to move +// if coming in from secondary dirs, then next is primary dir +// if coming in from primary dir, then next is equal chance of other dirs + +/obj/structure/disposalpipe/junction/nextdir(fromdir) + var/flipdir = turn(fromdir, 180) + if(flipdir != dir) // came from secondary dir + return dir // so exit through primary + else // came from primary + // so need to choose either secondary exit + var/mask = ..(fromdir) + + // find a bit which is set + var/setbit = 0 + if(mask & NORTH) + setbit = NORTH + else if(mask & SOUTH) + setbit = SOUTH + else if(mask & EAST) + setbit = EAST + else + setbit = WEST + + if(prob(50)) // 50% chance to choose the found bit or the other one + return setbit + else + return mask & (~setbit) + +//a three-way junction that sorts objects +/obj/structure/disposalpipe/sortjunction + + icon_state = "pipe-j1s" + var/sortType = 0 //Look at the list called TAGGERLOCATIONS in setup.dm + var/posdir = 0 + var/negdir = 0 + var/sortdir = 0 + +/obj/structure/disposalpipe/sortjunction/proc/updatedesc() + desc = "An underfloor disposal pipe with a package sorting mechanism." + if(sortType>0) + var/tag = uppertext(TAGGERLOCATIONS[sortType]) + desc += "\nIt's tagged with [tag]" + +/obj/structure/disposalpipe/sortjunction/proc/updatedir() + posdir = dir + negdir = turn(posdir, 180) + + if(stored.ptype == DISP_SORTJUNCTION) + sortdir = turn(posdir, -90) + else + icon_state = "pipe-j2s" + sortdir = turn(posdir, 90) + + dpdir = sortdir | posdir | negdir + +/obj/structure/disposalpipe/sortjunction/New() + ..() + updatedir() + updatedesc() + update() + return + +/obj/structure/disposalpipe/sortjunction/attackby(obj/item/I, mob/user, params) + if(..()) + return + + if(istype(I, /obj/item/device/destTagger)) + var/obj/item/device/destTagger/O = I + + if(O.currTag > 0)// Tag set + sortType = O.currTag + playsound(src.loc, 'sound/machines/twobeep.ogg', 100, 1) + var/tag = uppertext(TAGGERLOCATIONS[O.currTag]) + user << "Changed filter to [tag]." + updatedesc() + + +// next direction to move +// if coming in from negdir, then next is primary dir or sortdir +// if coming in from posdir, then flip around and go back to posdir +// if coming in from sortdir, go to posdir + +/obj/structure/disposalpipe/sortjunction/nextdir(fromdir, sortTag) + //var/flipdir = turn(fromdir, 180) + if(fromdir != sortdir) // probably came from the negdir + + if(src.sortType == sortTag) //if destination matches filtered type... + return sortdir // exit through sortdirection + else + return posdir + else // came from sortdir + // so go with the flow to positive direction + return posdir + +/obj/structure/disposalpipe/sortjunction/transfer(obj/structure/disposalholder/H) + var/nextdir = nextdir(H.dir, H.destinationTag) + H.dir = nextdir + var/turf/T = H.nextloc() + var/obj/structure/disposalpipe/P = H.findpipe(T) + + if(P) + // find other holder in next loc, if inactive merge it with current + var/obj/structure/disposalholder/H2 = locate() in P + if(H2 && !H2.active) + H.merge(H2) + + H.loc = P + else // if wasn't a pipe, then set loc to turf + H.loc = T + return null + + return P + + +//a three-way junction that sorts objects destined for the mail office mail table (tomail = 1) +/obj/structure/disposalpipe/wrapsortjunction + + desc = "An underfloor disposal pipe which sorts wrapped and unwrapped objects." + icon_state = "pipe-j1s" + var/posdir = 0 + var/negdir = 0 + var/sortdir = 0 + +/obj/structure/disposalpipe/wrapsortjunction/New() + ..() + posdir = dir + if(stored.ptype == DISP_SORTJUNCTION) + sortdir = turn(posdir, -90) + negdir = turn(posdir, 180) + else + icon_state = "pipe-j2s" + sortdir = turn(posdir, 90) + negdir = turn(posdir, 180) + dpdir = sortdir | posdir | negdir + + update() + return + +// next direction to move +// if coming in from negdir, then next is primary dir or sortdir +// if coming in from posdir, then flip around and go back to posdir +// if coming in from sortdir, go to posdir + +/obj/structure/disposalpipe/wrapsortjunction/nextdir(fromdir, istomail) + //var/flipdir = turn(fromdir, 180) + if(fromdir != sortdir) // probably came from the negdir + + if(istomail) //if destination matches filtered type... + return sortdir // exit through sortdirection + else + return posdir + else // came from sortdir + // so go with the flow to positive direction + return posdir + +/obj/structure/disposalpipe/wrapsortjunction/transfer(obj/structure/disposalholder/H) + var/nextdir = nextdir(H.dir, H.tomail) + H.dir = nextdir + var/turf/T = H.nextloc() + var/obj/structure/disposalpipe/P = H.findpipe(T) + + if(P) + // find other holder in next loc, if inactive merge it with current + var/obj/structure/disposalholder/H2 = locate() in P + if(H2 && !H2.active) + H.merge(H2) + + H.loc = P + else // if wasn't a pipe, then set loc to turf + H.loc = T + return null + + return P + + + + + +//a trunk joining to a disposal bin or outlet on the same turf +/obj/structure/disposalpipe/trunk + icon_state = "pipe-t" + var/obj/linked // the linked obj/machinery/disposal or obj/disposaloutlet + +/obj/structure/disposalpipe/trunk/New() + ..() + dpdir = dir + spawn(1) + getlinked() + + update() + 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 + + var/obj/structure/disposaloutlet/O = locate() in src.loc + if(O) + linked = O + + update() + return + + // Override attackby so we disallow trunkremoval when somethings ontop +/obj/structure/disposalpipe/trunk/attackby(obj/item/I, mob/user, params) + + //Disposal bins or chutes + /* + These shouldn't be required + var/obj/machinery/disposal/D = locate() in src.loc + if(D && D.anchored) + return + + //Disposal outlet + var/obj/structure/disposaloutlet/O = locate() in src.loc + if(O && O.anchored) + return + */ + + //Disposal constructors + var/obj/structure/disposalconstruct/C = locate() in src.loc + if(C && C.anchored) + return + + var/turf/T = src.loc + if(T.intact) + return // prevent interaction with T-scanner revealed pipes + src.add_fingerprint(user) + if(istype(I, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/W = I + + if(linked) + user << "You need to deconstruct disposal machinery above this pipe!" + return + + if(W.remove_fuel(0,user)) + playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) + user << "You start slicing the disposal pipe..." + if(do_after(user,30, target = src)) + if(!src || !W.isOn()) return + Deconstruct() + user << "You slice the disposal pipe." + else + return + + // would transfer to next pipe segment, but we are in a trunk + // if not entering from disposal bin, + // transfer to linked object (outlet or bin) + +/obj/structure/disposalpipe/trunk/transfer(obj/structure/disposalholder/H) + + if(H.dir == DOWN) // we just entered from a disposer + return ..() // so do base transfer proc + // otherwise, go to the linked object + if(linked) + var/obj/structure/disposaloutlet/O = linked + if(istype(O) && (H)) + O.expel(H) // expel at outlet + else + var/obj/machinery/disposal/D = linked + if(H) + D.expel(H) // expel at disposal + else + if(H) + src.expel(H, src.loc, 0) // expel at turf + return null + + // nextdir + +/obj/structure/disposalpipe/trunk/nextdir(fromdir) + if(fromdir == DOWN) + return dir + else + return 0 + +// a broken pipe +/obj/structure/disposalpipe/broken + icon_state = "pipe-b" + dpdir = 0 // broken pipes have dpdir=0 so they're not found as 'real' pipes + // i.e. will be treated as an empty turf + desc = "A broken piece of disposal pipe." + +/obj/structure/disposalpipe/broken/New() + ..() + update() + return + +// the disposal outlet machine + +/obj/structure/disposalpipe/broken/Deconstruct() + qdel(src) + +/obj/structure/disposaloutlet + name = "disposal outlet" + desc = "An outlet for the pneumatic disposal system." + icon = 'icons/obj/atmospherics/pipes/disposal.dmi' + icon_state = "outlet" + density = 1 + anchored = 1 + var/active = 0 + var/turf/target // this will be where the output objects are 'thrown' to. + var/obj/structure/disposalpipe/trunk/trunk = null // the attached pipe trunk + var/obj/structure/disposalconstruct/stored + var/mode = 0 + var/start_eject = 0 + var/eject_range = 2 + +/obj/structure/disposaloutlet/New(loc, var/obj/structure/disposalconstruct/make_from) + ..() + + if(make_from) + dir = make_from.dir + make_from.loc = src + stored = make_from + else + stored = new (src, DISP_END_OUTLET,dir) + + spawn(1) + target = get_ranged_target_turf(src, dir, 10) + + trunk = locate() in src.loc + if(trunk) + trunk.linked = src // link the pipe trunk to self + +/obj/structure/disposaloutlet/Destroy() + if(trunk) + trunk.linked = null + ..() + +// expel the contents of the holder object, then delete it +// called when the holder exits the outlet +/obj/structure/disposaloutlet/proc/expel(obj/structure/disposalholder/H) + + flick("outlet-open", src) + if((start_eject + 30) < world.time) + start_eject = world.time + playsound(src, 'sound/machines/warning-buzzer.ogg', 50, 0, 0) + sleep(20) + playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) + else + sleep(20) + if(H) + for(var/atom/movable/AM in H) + AM.loc = src.loc + AM.pipe_eject(dir) + spawn(5) + if(AM) + AM.throw_at(target, eject_range, 1) + H.vent_gas(src.loc) + qdel(H) + return + +/obj/structure/disposaloutlet/attackby(obj/item/I, mob/user, params) + if(!I || !user) + return + src.add_fingerprint(user) + if(istype(I, /obj/item/weapon/screwdriver)) + if(mode==0) + mode=1 + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "You remove the screws around the power connection." + return + else if(mode==1) + mode=0 + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "You attach the screws around the power connection." + return + else if(istype(I,/obj/item/weapon/weldingtool) && mode==1) + var/obj/item/weapon/weldingtool/W = I + if(W.remove_fuel(0,user)) + playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) + user << "You start slicing the floorweld off \the [src]..." + if(do_after(user,20, target = src)) + if(!src || !W.isOn()) return + user << "You slice the floorweld off \the [src]." + stored.loc = loc + src.transfer_fingerprints_to(stored) + stored.update() + stored.anchored = 0 + stored.density = 1 + qdel(src) + return + else + return + + + +// called when movable is expelled from a disposal pipe or outlet +// by default does nothing, override for special behaviour + +/atom/movable/proc/pipe_eject(direction) + return + +// check if mob has client, if so restore client view on eject +/mob/pipe_eject(var/direction) + if (src.client) + src.client.perspective = MOB_PERSPECTIVE + src.client.eye = src + + return + +/obj/effect/decal/cleanable/blood/gibs/pipe_eject(direction) + var/list/dirs + if(direction) + dirs = list( direction, turn(direction, -45), turn(direction, 45)) + else + dirs = alldirs.Copy() + + src.streak(dirs) + +/obj/effect/decal/cleanable/robot_debris/gib/pipe_eject(direction) + var/list/dirs + if(direction) + dirs = list( direction, turn(direction, -45), turn(direction, 45)) + else + dirs = alldirs.Copy() + + src.streak(dirs) diff --git a/code/modules/recycling/disposal-unit.dm b/code/modules/recycling/disposal-unit.dm new file mode 100644 index 00000000000..a348aa86165 --- /dev/null +++ b/code/modules/recycling/disposal-unit.dm @@ -0,0 +1,540 @@ + +//disposal bin and Delivery chute. + +#define SEND_PRESSURE 0.05*ONE_ATMOSPHERE + +/obj/machinery/disposal + icon = 'icons/obj/atmospherics/pipes/disposal.dmi' + anchored = 1 + density = 1 + var/datum/gas_mixture/air_contents // internal reservoir + var/mode = 1 // mode -1=screws removed 0=off 1=charging 2=charged + var/flush = 0 // true if flush handle is pulled + var/obj/structure/disposalpipe/trunk/trunk = null // the attached pipe trunk + var/flushing = 0 // true if flushing in progress + var/flush_every_ticks = 30 //Every 30 ticks it will look whether it is ready to flush + var/flush_count = 0 //this var adds 1 once per tick. When it reaches flush_every_ticks it resets and tries to flush. + var/last_sound = 0 + var/obj/structure/disposalconstruct/stored + // create a new disposal + // find the attached trunk (if present) and init gas resvr. + +/obj/machinery/disposal/New(loc, var/obj/structure/disposalconstruct/make_from) + ..() + + if(make_from) + dir = make_from.dir + make_from.loc = 0 + stored = make_from + else + stored = new /obj/structure/disposalconstruct(0,DISP_END_BIN,dir) + + trunk_check() + + air_contents = new/datum/gas_mixture() + //gas.volume = 1.05 * CELLSTANDARD + update() + +/obj/machinery/disposal/proc/trunk_check() + trunk = locate() in src.loc + if(!trunk) + mode = 0 + flush = 0 + else + mode = initial(mode) + flush = initial(flush) + trunk.linked = src // link the pipe trunk to self + +/obj/machinery/disposal/Destroy() + eject() + if(trunk) + trunk.linked = null + ..() + +/obj/machinery/disposal/singularity_pull(S, current_size) + if(current_size >= STAGE_FIVE) + Deconstruct() + +/obj/machinery/disposal/initialize() + // this will get a copy of the air turf and take a SEND PRESSURE amount of air from it + var/atom/L = loc + var/datum/gas_mixture/env = new + env.copy_from(L.return_air()) + var/datum/gas_mixture/removed = env.remove(SEND_PRESSURE + 1) + air_contents.merge(removed) + trunk_check() + +/obj/machinery/disposal/attackby(obj/item/I, mob/user, params) + if(stat & BROKEN || !I || !user) + return + + add_fingerprint(user) + if(mode<=0) // It's off + if(istype(I, /obj/item/weapon/screwdriver)) + if(contents.len > 0) + user << "Eject the items first!" + return + if(mode==0) + mode=-1 + else + mode=0 + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "You [mode==0?"attach":"remove"] the screws around the power connection." + return + else if(istype(I,/obj/item/weapon/weldingtool) && mode==-1) + var/obj/item/weapon/weldingtool/W = I + if(W.remove_fuel(0,user)) + if(contents.len > 0) + user << "Eject the items first!" + return + playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) + user << "You start slicing the floorweld off \the [src]..." + if(do_after(user,20, target = src)) + if(!W.isOn()) + return + user << "You slice the floorweld off \the [src]." + Deconstruct() + return + return 1 + +// mouse drop another mob or self +// +/obj/machinery/disposal/MouseDrop_T(mob/living/target, mob/living/user) + if(istype(target) && user == target) + stuff_mob_in(target, user) + +/obj/machinery/disposal/proc/stuff_mob_in(mob/living/target, mob/living/user) + if(!iscarbon(user) && !user.ventcrawler) //only carbon and ventcrawlers can climb into disposal by themselves. + return + if(target.buckled) + return + if(target.mob_size > MOB_SIZE_HUMAN) + user << "[target] doesn't fit inside [src]!" + return + add_fingerprint(user) + if(user == target) + user.visible_message("[user] starts climbing into [src].", \ + "You start climbing into [src]...") + else + target.visible_message("[user] starts putting [target] into [src].", \ + "[user] starts putting you into [src]!") + if(do_mob(user, target, 20)) + if (!loc) + return + if (target.client) + target.client.perspective = EYE_PERSPECTIVE + target.client.eye = src + target.loc = src + if(user == target) + user.visible_message("[user] climbs into [src].", \ + "You climb into [src].") + else + target.visible_message("[user] has placed [target] in [src].", \ + "[user] has placed [target] in [src].") + add_logs(user, target, "stuffed", addition="into [src]") + update() + +// can breath normally in the disposal +/obj/machinery/disposal/alter_health() + return get_turf(src) + +/obj/machinery/disposal/relaymove(mob/user) + attempt_escape(user) + +// resist to escape the bin +/obj/machinery/disposal/container_resist() + attempt_escape(usr) + +/obj/machinery/disposal/proc/attempt_escape(mob/user) + if(src.flushing) + return + go_out(user) + return + +// leave the disposal +/obj/machinery/disposal/proc/go_out(mob/user) + + if (user.client) + user.client.eye = user.client.mob + user.client.perspective = MOB_PERSPECTIVE + user.loc = src.loc + update() + return + + +// monkeys and xenos can only pull the flush lever +/obj/machinery/disposal/attack_paw(mob/user) + if(stat & BROKEN) + return + flush = !flush + update() + +// ai as human but can't flush +/obj/machinery/disposal/attack_ai(mob/user) + interact(user, 1) + +// human interact with machine +/obj/machinery/disposal/attack_hand(mob/user) + if(user && user.loc == src) + usr << "You cannot reach the controls from inside!" + return + /* + if(mode==-1) + usr << "\red The disposal units power is disabled." + return + */ + interact(user, 0) + +// hostile mob escape from disposals +/obj/machinery/disposal/attack_animal(mob/living/simple_animal/M) + if(M.environment_smash) + M.do_attack_animation(src) + visible_message("[M.name] smashes \the [src] apart!") + qdel(src) + return + +// eject the contents of the disposal unit +/obj/machinery/disposal/proc/eject() + for(var/atom/movable/AM in src) + AM.loc = src.loc + AM.pipe_eject(0) + update() + +// update the icon & overlays to reflect mode & status +/obj/machinery/disposal/proc/update() + return + +/obj/machinery/disposal/proc/flush() + flushing = 1 + flushAnimation() + sleep(10) + if(last_sound < world.time + 1) + playsound(src, 'sound/machines/disposalflush.ogg', 50, 0, 0) + last_sound = world.time + sleep(5) + if(gc_destroyed) + return + var/obj/structure/disposalholder/H = new() + newHolderDestination(H) + H.init(src) + air_contents = new() + H.start(src) + flushing = 0 + flush = 0 + +/obj/machinery/disposal/bin/flush() + ..() + if(mode == 2) + mode = 1 + update() + +/obj/machinery/disposal/proc/newHolderDestination(obj/structure/disposalholder/H) + for(var/obj/item/smallDelivery/O in src) + H.tomail = 1 + return + +/obj/machinery/disposal/proc/flushAnimation() + flick("[icon_state]-flush", src) + +// called when area power changes +/obj/machinery/disposal/power_change() + ..() // do default setting/reset of stat NOPOWER bit + update() // update icon + return + + +// called when holder is expelled from a disposal +// should usually only occur if the pipe network is modified +/obj/machinery/disposal/proc/expel(obj/structure/disposalholder/H) + + var/turf/target + playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) + if(H) // Somehow, someone managed to flush a window which broke mid-transit and caused the disposal to go in an infinite loop trying to expel null, hopefully this fixes it + for(var/atom/movable/AM in H) + target = get_offset_target_turf(src.loc, rand(5)-rand(5), rand(5)-rand(5)) + + AM.loc = src.loc + AM.pipe_eject(0) + spawn(1) + if(AM) + AM.throw_at(target, 5, 1) + + H.vent_gas(loc) + qdel(H) + +/obj/machinery/disposal/Deconstruct() + if(stored) + var/turf/T = loc + stored.loc = T + src.transfer_fingerprints_to(stored) + stored.anchored = 0 + stored.density = 1 + stored.update() + ..() + +//How disposal handles getting a storage dump from a storage object +/obj/machinery/disposal/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user) + for(var/obj/item/I in src_object) + src_object.remove_from_storage(I, src) + return 1 + + +// Disposal bin +// Holds items for disposal into pipe system +// Draws air from turf, gradually charges internal reservoir +// Once full (~1 atm), uses air resv to flush items into the pipes +// Automatically recharges air (unless off), will flush when ready if pre-set +// Can hold items and human size things, no other draggables + +/obj/machinery/disposal/bin + name = "disposal unit" + desc = "A pneumatic waste disposal unit." + icon_state = "disposal" + + // attack by item places it in to disposal +/obj/machinery/disposal/bin/attackby(obj/item/I, mob/user, params) + if(!..()) + return + + if(istype(I, /obj/item/weapon/storage/bag/trash)) + var/obj/item/weapon/storage/bag/trash/T = I + user << "You empty the bag." + for(var/obj/item/O in T.contents) + T.remove_from_storage(O,src) + T.update_icon() + update() + return + + var/obj/item/weapon/grab/G = I + if(istype(G)) // handle grabbed mob + if(ismob(G.affecting)) + stuff_mob_in(G.affecting, user) + return + + if(!user.drop_item()) + return + + I.loc = src + user.visible_message("[user.name] places \the [I] into \the [src].", \ + "You place \the [I] into \the [src].") + + update() + +// user interaction +/obj/machinery/disposal/bin/interact(mob/user, ai=0) + src.add_fingerprint(user) + if(stat & BROKEN) + user.unset_machine() + return + + var/dat = "Waste Disposal UnitWaste Disposal Unit
" + + if(!ai) // AI can't pull flush handle + if(flush) + dat += "Disposal handle: Disengage Engaged" + else + dat += "Disposal handle: Disengaged Engage" + + dat += "

Eject contents
" + + if(mode <= 0) + dat += "Pump: Off On
" + else if(mode == 1) + dat += "Pump: Off On (pressurizing)
" + else + dat += "Pump: Off On (idle)
" + + var/per = Clamp(100* air_contents.return_pressure() / (SEND_PRESSURE), 0, 100) + + dat += "Pressure: [round(per, 1)]%
" + + + user.set_machine(src) + user << browse(dat, "window=disposal;size=360x170") + onclose(user, "disposal") + +// handle machine interaction + +/obj/machinery/disposal/bin/Topic(href, href_list) + if(..()) + return + if(usr.loc == src) + usr << "You cannot reach the controls from inside!" + return + + if(mode==-1 && !href_list["eject"]) // only allow ejecting if mode is -1 + usr << "\The [src]'s power is disabled." + return + ..() + usr.set_machine(src) + + if(href_list["close"]) + usr.unset_machine() + usr << browse(null, "window=disposal") + return + + if(href_list["pump"]) + if(text2num(href_list["pump"])) + mode = 1 + else + mode = 0 + update() + + if(href_list["handle"]) + flush = text2num(href_list["handle"]) + update() + + if(href_list["eject"]) + eject() + return + +/obj/machinery/disposal/bin/CanPass(atom/movable/mover, turf/target, height=0) + if (istype(mover,/obj/item) && mover.throwing) + var/obj/item/I = mover + if(istype(I, /obj/item/projectile)) + return + if(prob(75)) + I.loc = src + visible_message("\the [I] lands in \the [src].") + update() + else + visible_message("\the [I] bounces off of \the [src]'s rim!") + return 0 + else + return ..(mover, target, height) + +/obj/machinery/disposal/bin/update() + overlays.Cut() + if(stat & BROKEN) + mode = 0 + flush = 0 + return + + // flush handle + if(flush) + overlays += image('icons/obj/atmospherics/pipes/disposal.dmi', "dispover-handle") + + // only handle is shown if no power + if(stat & NOPOWER || mode == -1) + return + + // check for items in disposal - occupied light + if(contents.len > 0) + overlays += image('icons/obj/atmospherics/pipes/disposal.dmi', "dispover-full") + + // charging and ready light + if(mode == 1) + overlays += image('icons/obj/atmospherics/pipes/disposal.dmi', "dispover-charge") + else if(mode == 2) + overlays += image('icons/obj/atmospherics/pipes/disposal.dmi', "dispover-ready") + + +// timed process +// charge the gas reservoir and perform flush if ready +/obj/machinery/disposal/bin/process() + if(stat & BROKEN) // nothing can happen if broken + return + + flush_count++ + if( flush_count >= flush_every_ticks ) + if( contents.len ) + if(mode == 2) + spawn(0) + feedback_inc("disposal_auto_flush",1) + flush() + flush_count = 0 + + src.updateDialog() + + if(flush && air_contents.return_pressure() >= SEND_PRESSURE ) // flush can happen even without power + spawn(0) + flush() + + if(stat & NOPOWER) // won't charge if no power + return + + use_power(100) // base power usage + + if(mode != 1) // if off or ready, no need to charge + return + + // otherwise charge + use_power(500) // charging power usage + + var/atom/L = loc // recharging from loc turf + + var/datum/gas_mixture/env = L.return_air() + var/pressure_delta = (SEND_PRESSURE*1.01) - air_contents.return_pressure() + + if(env.temperature > 0) + var/transfer_moles = 0.1 * pressure_delta*air_contents.volume/(env.temperature * R_IDEAL_GAS_EQUATION) + + //Actually transfer the gas + var/datum/gas_mixture/removed = env.remove(transfer_moles) + air_contents.merge(removed) + air_update_turf() + + + // if full enough, switch to ready mode + if(air_contents.return_pressure() >= SEND_PRESSURE) + mode = 2 + update() + return + + +//Delivery Chute + +/obj/machinery/disposal/deliveryChute + name = "delivery chute" + desc = "A chute for big and small packages alike!" + density = 1 + icon_state = "intake" + mode = 0 // the chute doesn't need charging and always works + +/obj/machinery/disposal/deliveryChute/New(loc,var/obj/structure/disposalconstruct/make_from) + ..() + stored.ptype = DISP_END_CHUTE + spawn(5) + trunk = locate() in loc + if(trunk) + trunk.linked = src // link the pipe trunk to self + +/obj/machinery/disposal/deliveryChute/Bumped(atom/movable/AM) //Go straight into the chute + if(!AM.disposalEnterTry()) + return + switch(dir) + if(NORTH) + if(AM.loc.y != loc.y+1) return + if(EAST) + if(AM.loc.x != loc.x+1) return + if(SOUTH) + if(AM.loc.y != loc.y-1) return + if(WEST) + if(AM.loc.x != loc.x-1) return + + if(istype(AM, /obj)) + var/obj/O = AM + O.loc = src + else if(istype(AM, /mob)) + var/mob/M = AM + if(prob(2)) // to prevent mobs being stuck in infinite loops + M << "You hit the edge of the chute." + return + M.loc = src + flush() + +/atom/movable/proc/disposalEnterTry() + return 1 + +/obj/item/projectile/disposalEnterTry() + return + +/obj/effect/disposalEnterTry() + return + +/obj/mecha/disposalEnterTry() + return + +/obj/machinery/disposal/deliveryChute/newHolderDestination(obj/structure/disposalholder/H) + H.destinationTag = 1 + diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index fc8b12cbe5b..df47b62e337 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -230,99 +230,6 @@ currTag = n openwindow(usr) -/obj/machinery/disposal/deliveryChute - name = "delivery chute" - desc = "A chute for big and small packages alike!" - density = 1 - icon_state = "intake" - var/c_mode = 0 - -/obj/machinery/disposal/deliveryChute/New(loc,var/obj/structure/disposalconstruct/make_from) - ..() - stored.ptype = DISP_END_CHUTE - spawn(5) - trunk = locate() in loc - if(trunk) - trunk.linked = src // link the pipe trunk to self - -/obj/machinery/disposal/deliveryChute/Destroy() - if(trunk) - trunk.linked = null - ..() - -/obj/machinery/disposal/deliveryChute/interact() - return - -/obj/machinery/disposal/deliveryChute/update() - return - -/obj/machinery/disposal/deliveryChute/Bumped(atom/movable/AM) //Go straight into the chute - if(!AM.disposalEnterTry()) - return - switch(dir) - if(NORTH) - if(AM.loc.y != loc.y+1) return - if(EAST) - if(AM.loc.x != loc.x+1) return - if(SOUTH) - if(AM.loc.y != loc.y-1) return - if(WEST) - if(AM.loc.x != loc.x-1) return - - if(istype(AM, /obj)) - var/obj/O = AM - O.loc = src - else if(istype(AM, /mob)) - var/mob/M = AM - M.loc = src - flush() - -/atom/movable/proc/disposalEnterTry() - return 1 - -/obj/item/projectile/disposalEnterTry() - return - -/obj/mecha/disposalEnterTry() - return - -/obj/machinery/disposal/deliveryChute/flushAnimation() - flick("intake-closing", src) - -/obj/machinery/disposal/deliveryChute/newHolderDestination(obj/structure/disposalholder/H) - H.destinationTag = 1 - -/obj/machinery/disposal/deliveryChute/attackby(obj/item/I, mob/user, params) - if(!I || !user) - return - - if(istype(I, /obj/item/weapon/screwdriver)) - if(c_mode==0) - c_mode=1 - playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You remove the screws around the power connection." - return - else if(c_mode==1) - c_mode=0 - playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You attach the screws around the power connection." - return - else if(istype(I,/obj/item/weapon/weldingtool) && c_mode==1) - var/obj/item/weapon/weldingtool/W = I - - if(W.remove_fuel(0,user)) - playsound(loc, 'sound/items/Welder2.ogg', 100, 1) - user << "You start slicing the floorweld off the delivery chute..." - if(do_after(user,20, target = src)) - if(!src || !W.isOn()) return - Deconstruct() - user << "You slice the floorweld off the delivery chute." - return - else - return - -/obj/machinery/disposal/deliveryChute/process() - return PROCESS_KILL /obj/item/weapon/c_tube name = "cardboard tube" diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 8c0cfe30ea1..75202c87387 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -12,6 +12,16 @@ build_path = /obj/item/weapon/circuitboard/smes category = list ("Engineering Machinery") +/datum/design/announcement_system + name = "Machine Design (Automated Announcement System Board)" + desc = "The circuit board for an automated announcement system." + id = "automated_announcement" + req_tech = list("programming" = 3, "bluespace" = 2) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000, "sacid" = 20) + build_path = /obj/item/weapon/circuitboard/announcement_system + category = list("Subspace Telecomms") + /datum/design/turbine_computer name = "Computer Design (Power Turbine Console Board)" desc = "The circuit board for a power turbine console." diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index e5c5a93dfb2..e57a3762319 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -512,7 +512,7 @@ trackedIan.loc = src.loc investigate_log("Experimentor has stolen Ian!", "experimentor") //...if anyone ever fixes it... else - new /mob/living/simple_animal/pet/corgi(src.loc) + new /mob/living/simple_animal/pet/dog/corgi(src.loc) investigate_log("Experimentor has spawned a new corgi.", "experimentor") ejectItem(TRUE) if(globalMalf > 36 && globalMalf < 50) @@ -658,7 +658,7 @@ /obj/item/weapon/relic/proc/corgicannon(mob/user) playsound(src.loc, "sparks", rand(25,50), 1) - var/mob/living/simple_animal/pet/dog/corgi/C = new/mob/living/simple_animal/pet/corgi(get_turf(user)) + var/mob/living/simple_animal/pet/dog/corgi/C = new/mob/living/simple_animal/pet/dog/corgi(get_turf(user)) C.throw_at(pick(oview(10,user)),10,rand(3,8)) throwSmoke(get_turf(C)) warn_admins(user, "Corgi Cannon", 0) @@ -681,7 +681,7 @@ user << message var/animals = rand(1,25) var/counter - var/list/valid_animals = list(/mob/living/simple_animal/parrot,/mob/living/simple_animal/butterfly,/mob/living/simple_animal/pet/cat,/mob/living/simple_animal/pet/corgi,/mob/living/simple_animal/crab,/mob/living/simple_animal/pet/fox,/mob/living/simple_animal/lizard,/mob/living/simple_animal/mouse,/mob/living/simple_animal/pet/pug,/mob/living/simple_animal/hostile/bear,/mob/living/simple_animal/hostile/poison/bees,/mob/living/simple_animal/hostile/carp) + var/list/valid_animals = list(/mob/living/simple_animal/parrot,/mob/living/simple_animal/butterfly,/mob/living/simple_animal/pet/cat,/mob/living/simple_animal/pet/dog/corgi,/mob/living/simple_animal/crab,/mob/living/simple_animal/pet/fox,/mob/living/simple_animal/lizard,/mob/living/simple_animal/mouse,/mob/living/simple_animal/pet/pug,/mob/living/simple_animal/hostile/bear,/mob/living/simple_animal/hostile/poison/bees,/mob/living/simple_animal/hostile/carp) for(counter = 1; counter < animals; counter++) var/mobType = pick(valid_animals) new mobType(get_turf(src)) diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 07ab76f7b5d..0e998a0cb1b 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -165,18 +165,16 @@ Note: Must be placed west/left of and R&D console to function. var/obj/item/stack/sheet/stack = O var/amount = round(input("How many sheets do you want to add?") as num)//No decimals - if(!stack || stack.amount <= 0 || amount <= 0) + if(!stack || stack.amount <= 0 || amount <= 0 || !in_range(src, stack) || !user.Adjacent(src)) return if(amount > stack.amount) amount = stack.amount if(max_material_storage - TotalMaterials() < (amount*stack.perunit))//Can't overfill amount = min(stack.amount, round((max_material_storage-TotalMaterials())/stack.perunit)) - icon_state = "protolathe" busy = 1 use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount/10))) user << "You add [amount] sheets to the [src.name]." - icon_state = "protolathe" if(istype(stack, /obj/item/stack/sheet/metal)) m_amount += amount * MINERAL_MATERIAL_AMOUNT else if(istype(stack, /obj/item/stack/sheet/glass)) @@ -196,11 +194,10 @@ Note: Must be placed west/left of and R&D console to function. else if(istype(stack, /obj/item/stack/sheet/mineral/adamantine)) adamantine_amount += amount * MINERAL_MATERIAL_AMOUNT stack.use(amount) - busy = 0 - src.updateUsrDialog() + updateUsrDialog() - src.overlays += "protolathe_[stack.name]" + overlays += "protolathe_[stack.name]" sleep(10) - src.overlays -= "protolathe_[stack.name]" + overlays -= "protolathe_[stack.name]" + busy = 0 - return diff --git a/code/modules/surgery/organs/cybernetic_implants.dm b/code/modules/surgery/organs/cybernetic_implants.dm index 61a58711ac8..273543bbae1 100644 --- a/code/modules/surgery/organs/cybernetic_implants.dm +++ b/code/modules/surgery/organs/cybernetic_implants.dm @@ -383,8 +383,7 @@ desc = "A sleek, sturdy box." icon_state = "cyber_implants" var/list/boxed = list(/obj/item/cybernetic_implant/eyes/xray,/obj/item/cybernetic_implant/eyes/thermals, - /obj/item/cybernetic_implant/brain/anti_drop, /obj/item/cybernetic_implant/brain/anti_stun, - /obj/item/cybernetic_implant/chest/nutriment/plus, /obj/item/cybernetic_implant/chest/reviver) + /obj/item/cybernetic_implant/brain/anti_stun, /obj/item/cybernetic_implant/chest/reviver) var/amount = 5 /obj/item/weapon/storage/box/cyber_implants/New() diff --git a/config/access levels.txt b/config/access levels.txt index 69ed681aa62..01977cbff33 100644 --- a/config/access levels.txt +++ b/config/access levels.txt @@ -1,50 +1,50 @@ -HOW TO CONVERT A MAP TO THE NEW (june 2008) ACCESS LEVEL SYSTEM -1. Open the .dmp file up in Notepad -2. Find all the "access = blahblah" attributes of doors. -3. Delete them. -4. Open the map up in Dream Maker. If you didn't get them all, it'll tell you so. -5. Assign the existing doors new access permissions using the method below. - -HOW TO MAKE A MAP USING THE NEW (june 2008) ACCESS LEVEL SYSTEM -1. Make a map as normal -2. Select a door that you want to not be accessible to everybody -3. Right click on it and edit its attributes -4. Make the "req_access_txt" attribute be a semicolon-separated list of the permissions required to open the doors -5. Repeat for all doors. - -For example, a brig door would have it be "2" while a door that requires you have toxins and teleporter access (for whatever reason) would have it be "9;20" - -Here is a list of the permissions and their numbers (this may be out of date, see code/game/access.dm for an updated version): - - access_security = 1 - access_brig = 2 - access_security_lockers = 3 - access_forensics_lockers= 4 - access_security_records = 5 - access_medical_supplies = 6 - access_medical_records = 7 - access_morgue = 8 - access_tox = 9 - access_tox_storage = 10 - access_medlab = 11 - access_engine = 12 - access_eject_engine = 13 - access_maint_tunnels = 14 - access_external_airlocks = 15 - access_emergency_storage = 16 - access_apcs = 17 - access_change_ids = 18 - access_ai_upload = 19 - access_teleporter = 20 - access_eva = 21 - access_heads = 22 - access_captain = 23 - access_all_personal_lockers = 24 - access_chapel_office = 25 - access_tech_storage = 26 - access_atmospherics = 27 - access_bar = 28 - access_janitor = 29 - access_disposal_units = 30 - access_hydroponics = 35 +HOW TO CONVERT A MAP TO THE NEW (june 2008) ACCESS LEVEL SYSTEM +1. Open the .dmp file up in Notepad +2. Find all the "access = blahblah" attributes of doors. +3. Delete them. +4. Open the map up in Dream Maker. If you didn't get them all, it'll tell you so. +5. Assign the existing doors new access permissions using the method below. + +HOW TO MAKE A MAP USING THE NEW (june 2008) ACCESS LEVEL SYSTEM +1. Make a map as normal +2. Select a door that you want to not be accessible to everybody +3. Right click on it and edit its attributes +4. Make the "req_access_txt" attribute be a semicolon-separated list of the permissions required to open the doors +5. Repeat for all doors. + +For example, a brig door would have it be "2" while a door that requires you have toxins and teleporter access (for whatever reason) would have it be "9;20" + +Here is a list of the permissions and their numbers (this may be out of date, see code/game/access.dm for an updated version): + + access_security = 1 + access_brig = 2 + access_security_lockers = 3 + access_forensics_lockers= 4 + access_security_records = 5 + access_medical_supplies = 6 + access_medical_records = 7 + access_morgue = 8 + access_tox = 9 + access_tox_storage = 10 + access_medlab = 11 + access_engine = 12 + access_eject_engine = 13 + access_maint_tunnels = 14 + access_external_airlocks = 15 + access_emergency_storage = 16 + access_apcs = 17 + access_change_ids = 18 + access_ai_upload = 19 + access_teleporter = 20 + access_eva = 21 + access_heads = 22 + access_captain = 23 + access_all_personal_lockers = 24 + access_chapel_office = 25 + access_tech_storage = 26 + access_atmospherics = 27 + access_bar = 28 + access_janitor = 29 + access_disposal_units = 30 + access_hydroponics = 35 access_manufacturing = 36 \ No newline at end of file diff --git a/config/admin_ranks.txt b/config/admin_ranks.txt index 67c08182b01..7bcb2df9995 100644 --- a/config/admin_ranks.txt +++ b/config/admin_ranks.txt @@ -1,40 +1,40 @@ -############################################################################################################## -# ADMIN RANK DEFINES # -# The format of this is very simple. Rank name goes first. # -# Rank is CASE-SENSITIVE, all punctuation save for '-', '_' and '@' will be stripped so spaces don't matter. # -# You can then define permissions for each rank by adding a '=' followed by keywords # -# These keywords represent groups of verbs and abilities. # -# keywords are preceded by either a '+' or a '-', + adds permissions, - takes them away. # -# +@ (or +prev) is a special shorthand which adds all the rights of the rank above it. # -# You can also specify verbs like so +/client/proc/some_added_verb or -/client/proc/some_restricted_verb # -# Ranks with no keywords will just be given the most basic verbs and abilities ~Carn # -############################################################################################################## -# PLEASE NOTE: depending on config options, some abilities will be unavailable regardless if you have permission to use them! - -# KEYWORDS: -# +ADMIN = general admin tools, verbs etc -# +FUN = events, other event-orientated actions. Access to the fun secrets in the secrets panel. -# +BAN = the ability to ban, jobban and fullban -# +STEALTH = the ability to stealthmin (make yourself appear with a fake name to everyone but other admins -# +POSSESS = the ability to possess objects -# +REJUV (or +REJUVINATE) = the ability to heal, respawn, modify damage and use godmode -# +BUILD (or +BUILDMODE) = the ability to use buildmode -# +SERVER = higher-risk admin verbs and abilities, such as those which affect the server configuration. -# +DEBUG = debug tools used for diagnosing and fixing problems. It's useful to give this to coders so they can investigate problems on a live server. -# +VAREDIT = everyone may view viewvars/debugvars/whatever you call it. This keyword allows you to actually EDIT those variables. -# +RIGHTS (or +PERMISSIONS) = allows you to promote and/or demote people. -# +SOUND (or +SOUNDS) = allows you to upload and play sounds -# +SPAWN (or +CREATE) = mob transformations, spawning of most atoms including mobs (high-risk atoms, e.g. blackholes, will require the +FUN flag too) -# +EVERYTHING (or +HOST or +ALL) = Simply gives you everything without having to type every flag - -Admin Observer -Moderator = +ADMIN -Admin Candidate = +@ -Trial Admin = +@ +SPAWN +REJUV +VAREDIT +BAN -Badmin = +@ +POSSESS +BUILDMODE +SERVER +FUN -Game Admin = +@ +STEALTH +SOUNDS +DEBUG -Game Master = +EVERYTHING - -Host = +EVERYTHING - +############################################################################################################## +# ADMIN RANK DEFINES # +# The format of this is very simple. Rank name goes first. # +# Rank is CASE-SENSITIVE, all punctuation save for '-', '_' and '@' will be stripped so spaces don't matter. # +# You can then define permissions for each rank by adding a '=' followed by keywords # +# These keywords represent groups of verbs and abilities. # +# keywords are preceded by either a '+' or a '-', + adds permissions, - takes them away. # +# +@ (or +prev) is a special shorthand which adds all the rights of the rank above it. # +# You can also specify verbs like so +/client/proc/some_added_verb or -/client/proc/some_restricted_verb # +# Ranks with no keywords will just be given the most basic verbs and abilities ~Carn # +############################################################################################################## +# PLEASE NOTE: depending on config options, some abilities will be unavailable regardless if you have permission to use them! + +# KEYWORDS: +# +ADMIN = general admin tools, verbs etc +# +FUN = events, other event-orientated actions. Access to the fun secrets in the secrets panel. +# +BAN = the ability to ban, jobban and fullban +# +STEALTH = the ability to stealthmin (make yourself appear with a fake name to everyone but other admins +# +POSSESS = the ability to possess objects +# +REJUV (or +REJUVINATE) = the ability to heal, respawn, modify damage and use godmode +# +BUILD (or +BUILDMODE) = the ability to use buildmode +# +SERVER = higher-risk admin verbs and abilities, such as those which affect the server configuration. +# +DEBUG = debug tools used for diagnosing and fixing problems. It's useful to give this to coders so they can investigate problems on a live server. +# +VAREDIT = everyone may view viewvars/debugvars/whatever you call it. This keyword allows you to actually EDIT those variables. +# +RIGHTS (or +PERMISSIONS) = allows you to promote and/or demote people. +# +SOUND (or +SOUNDS) = allows you to upload and play sounds +# +SPAWN (or +CREATE) = mob transformations, spawning of most atoms including mobs (high-risk atoms, e.g. blackholes, will require the +FUN flag too) +# +EVERYTHING (or +HOST or +ALL) = Simply gives you everything without having to type every flag + +Admin Observer +Moderator = +ADMIN +Admin Candidate = +@ +Trial Admin = +@ +SPAWN +REJUV +VAREDIT +BAN +Badmin = +@ +POSSESS +BUILDMODE +SERVER +FUN +Game Admin = +@ +STEALTH +SOUNDS +DEBUG +Game Master = +EVERYTHING + +Host = +EVERYTHING + Coder = +DEBUG +VAREDIT +SERVER +SPAWN \ No newline at end of file diff --git a/config/admins.txt b/config/admins.txt index 4622411760a..f708dcc3df4 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -90,4 +90,5 @@ shadowlight213 = Game Master drovidicorv = Game Master Dunc = Game Master MMMiracles = Game Master -bear1ake = Game Master \ No newline at end of file +bear1ake = Game Master +CoreOverload = Game Master \ No newline at end of file diff --git a/config/config.txt b/config/config.txt index f7ec7eda026..c40c7cc783f 100644 --- a/config/config.txt +++ b/config/config.txt @@ -1,196 +1,196 @@ -## Server name: This appears at the top of the screen in-game. Remove the # infront of SERVERNAME and replace 'tgstation' with the name of your choice -# SERVERNAME tgstation - -## Station name: The name of the station as it is referred to in-game. If commented out, the game will generate a random name instead. -STATIONNAME Space Station 13 - -# Lobby time: This is the amount of time between rounds that players have to setup their characters and be ready. -LOBBY_COUNTDOWN 120 - -## Add a # infront of this if you want to use the SQL based admin system, the legacy system uses admins.txt. You need to set up your database to use the SQL based system. -ADMIN_LEGACY_SYSTEM - -## Add a # infront of this if you want to use the SQL based banning system. The legacy systems use the files in the data folder. You need to set up your database to use the SQL based system. -BAN_LEGACY_SYSTEM - -## Unhash this entry to have certain jobs require your account to be at least a certain number of days old to select. You can configure the exact age requirement for different jobs by editing -## the minimal_player_age variable in the files in folder /code/game/jobs/job/.. for the job you want to edit. Set minimal_player_age to 0 to disable age requirement for that job. -## REQUIRES the database set up to work. Keep it hashed if you don't have a database set up. -## NOTE: If you have just set-up the database keep this DISABLED, as player age is determined from the first time they connect to the server with the database up. If you just set it up, it means -## you have noone older than 0 days, since noone has been logged yet. Only turn this on once you have had the database up for 30 days. -#USE_AGE_RESTRICTION_FOR_JOBS - -## log OOC channel -LOG_OOC - -## log client Say -LOG_SAY - -## log admin actions -LOG_ADMIN - -## log client access (logon/logoff) -LOG_ACCESS - -## log game actions (start of round, results, etc.) -LOG_GAME - -## log player votes -LOG_VOTE - -## log client Whisper -LOG_WHISPER - -## log emotes -LOG_EMOTE - -## log attack messages -LOG_ATTACK - -## log pda messages -LOG_PDA - -## log prayers -LOG_PRAYER - -## log lawchanges -LOG_LAW - -## log all Topic() calls (for use by coders in tracking down Topic issues) -# LOG_HREFS - -## disconnect players who did nothing during 10 minutes -# KICK_INACTIVE - -## Comment this out to stop admins being able to choose their personal ooccolor -ALLOW_ADMIN_OOCCOLOR - -## If metadata is supported -ALLOW_METADATA - -## allow players to initiate a restart vote -#ALLOW_VOTE_RESTART - -## allow players to initate a mode-change start -#ALLOW_VOTE_MODE - -## min delay (deciseconds) between voting sessions (default 10 minutes) -VOTE_DELAY 6000 - -## time period (deciseconds) which voting session will last (default 1 minute) -VOTE_PERIOD 600 - -## prevents dead players from voting or starting votes -# NO_DEAD_VOTE - -## players' votes default to "No vote" (otherwise, default to "No change") -# DEFAULT_NO_VOTE - -## disable abandon mob -NORESPAWN - -## disables calling del(src) on newmobs if they logout before spawnin in -# DONT_DEL_NEWMOB - -## set a hosted by name for unix platforms -HOSTEDBY Yournamehere - -## Set to jobban "Guest-" accounts from Captain, HoS, HoP, CE, RD, CMO, Warden, Security, Detective, and AI positions. -## Set to 1 to jobban them from those positions, set to 0 to allow them. -# GUEST_JOBBAN - -## Uncomment this to stop people connecting to your server without a registered ckey. (i.e. guest-* are all blocked from connecting) -GUEST_BAN - -## Set to jobban everyone who's key is not listed in data/whitelist.txt from Captain, HoS, HoP, CE, RD, CMO, Warden, Security, Detective, and AI positions. -## Uncomment to 1 to jobban, leave commented out to allow these positions for everyone (but see GUEST_JOBBAN above and regular jobbans) -# USEWHITELIST - -## set a server location for world reboot. Don't include the byond://, just give the address and port. -# Don't set this to the same server, BYOND will automatically restart players to the server when it has restarted. -# SERVER ss13.example.com:2506 - -## forum address -# FORUMURL http://tgstation13.org/phpBB/index.php - -## Wiki address -# WIKIURL http://www.tgstation13.org/wiki - -##Rules address -# RULESURL http://www.tgstation13.org/wiki/Rules - -##Github address -# GITHUBURL https://www.github.com/tgstation/-tg-station - -## Ban appeals URL - usually for a forum or wherever people should go to contact your admins. -# BANAPPEALS http://justanotherday.example.com - -## In-game features -##Toggle for having jobs load up from the .txt -# LOAD_JOBS_FROM_TXT - -##Remove the # mark infront of this to forbid admins from possessing the singularity. -#FORBID_SINGULO_POSSESSION - -## Remove the # to show a popup 'reply to' window to every non-admin that recieves an adminPM. -## The intention is to make adminPMs more visible. (although I fnd popups annoying so this defaults to off) -#POPUP_ADMIN_PM - -## Remove the # to allow special 'Easter-egg' events on special holidays such as seasonal holidays and stuff like 'Talk Like a Pirate Day' :3 YAARRR -ALLOW_HOLIDAYS - -##Remove the # mark if you are going to use the SVN irc bot to relay adminhelps -#USEIRCBOT - -##Defines the ticklag for the world. 0.9 is the normal one, 0.5 is smoother. -TICKLAG 0.9 - -## Defines if Tick Compensation is used. It results in a minor slowdown of movement of all mobs, but attempts to result in a level movement speed across all ticks. Recommended if tickrate is lowered. -TICKCOMP 0 - -## Comment this out to disable automuting -#AUTOMUTE_ON - -## Communication key for receiving data through world/Topic(), you don't want to give this out -#COMMS_KEY default_pwd - -## Uncomment this to let players see their own notes (they can still be set by admins only) -#SEE_OWN_NOTES - -##Note: all population caps can be used with each other if desired. - -## Uncomment for 'soft' population caps, players will be warned while joining if the living crew exceeds the listed number. -#SOFT_POPCAP 100 - -## Message for soft cap -SOFT_POPCAP_MESSAGE Be warned that the server is currently serving a high number of users, consider using alternative game servers. - -## Uncomment for 'hard' population caps, players will not be allowed to spawn if the living crew exceeds the listed number, though they may still observe or wait for the living crew to decrease in size. -#HARD_POPCAP 150 - -## Message for hard cap -HARD_POPCAP_MESSAGE The server is currently serving a high number of users, You cannot currently join. You may wait for the number of living crew to decline, observe, or find alternative servers. - -## Uncomment for 'extreme' population caps, players will not be allowed to join the server if living crew exceeds the listed number. -#EXTREME_POPCAP 200 - -## Message for extreme cap -EXTREME_POPCAP_MESSAGE The server is currently serving a high number of users, find alternative servers. - -## Notify admins when a new player connects for the first x days a player's been around. (0 for first connection only, -1 for never) -## Requres database -NOTIFY_NEW_PLAYER_AGE 0 - -## Notify the irc channel when a new player makes their first connection -## Requres database -#IRC_FIRST_CONNECTION_ALERT - -## Deny all new connections by ckeys we haven't seen before (exempts admins and only denies the connection if the database is enabled and connected) -## Requires database -#PANIC_BUNKER - -## Uncomment to have the changelog file automatically open when a user connects and hasn't seen the latest changelog -#AGGRESSIVE_CHANGELOG - -## Uncomment to have the game log runtimes to the log folder. (Note: this disables normal output in dd/ds, so it should be left off for testing. +## Server name: This appears at the top of the screen in-game. Remove the # infront of SERVERNAME and replace 'tgstation' with the name of your choice +# SERVERNAME tgstation + +## Station name: The name of the station as it is referred to in-game. If commented out, the game will generate a random name instead. +STATIONNAME Space Station 13 + +# Lobby time: This is the amount of time between rounds that players have to setup their characters and be ready. +LOBBY_COUNTDOWN 120 + +## Add a # infront of this if you want to use the SQL based admin system, the legacy system uses admins.txt. You need to set up your database to use the SQL based system. +ADMIN_LEGACY_SYSTEM + +## Add a # infront of this if you want to use the SQL based banning system. The legacy systems use the files in the data folder. You need to set up your database to use the SQL based system. +BAN_LEGACY_SYSTEM + +## Unhash this entry to have certain jobs require your account to be at least a certain number of days old to select. You can configure the exact age requirement for different jobs by editing +## the minimal_player_age variable in the files in folder /code/game/jobs/job/.. for the job you want to edit. Set minimal_player_age to 0 to disable age requirement for that job. +## REQUIRES the database set up to work. Keep it hashed if you don't have a database set up. +## NOTE: If you have just set-up the database keep this DISABLED, as player age is determined from the first time they connect to the server with the database up. If you just set it up, it means +## you have noone older than 0 days, since noone has been logged yet. Only turn this on once you have had the database up for 30 days. +#USE_AGE_RESTRICTION_FOR_JOBS + +## log OOC channel +LOG_OOC + +## log client Say +LOG_SAY + +## log admin actions +LOG_ADMIN + +## log client access (logon/logoff) +LOG_ACCESS + +## log game actions (start of round, results, etc.) +LOG_GAME + +## log player votes +LOG_VOTE + +## log client Whisper +LOG_WHISPER + +## log emotes +LOG_EMOTE + +## log attack messages +LOG_ATTACK + +## log pda messages +LOG_PDA + +## log prayers +LOG_PRAYER + +## log lawchanges +LOG_LAW + +## log all Topic() calls (for use by coders in tracking down Topic issues) +# LOG_HREFS + +## disconnect players who did nothing during 10 minutes +# KICK_INACTIVE + +## Comment this out to stop admins being able to choose their personal ooccolor +ALLOW_ADMIN_OOCCOLOR + +## If metadata is supported +ALLOW_METADATA + +## allow players to initiate a restart vote +#ALLOW_VOTE_RESTART + +## allow players to initate a mode-change start +#ALLOW_VOTE_MODE + +## min delay (deciseconds) between voting sessions (default 10 minutes) +VOTE_DELAY 6000 + +## time period (deciseconds) which voting session will last (default 1 minute) +VOTE_PERIOD 600 + +## prevents dead players from voting or starting votes +# NO_DEAD_VOTE + +## players' votes default to "No vote" (otherwise, default to "No change") +# DEFAULT_NO_VOTE + +## disable abandon mob +NORESPAWN + +## disables calling del(src) on newmobs if they logout before spawnin in +# DONT_DEL_NEWMOB + +## set a hosted by name for unix platforms +HOSTEDBY Yournamehere + +## Set to jobban "Guest-" accounts from Captain, HoS, HoP, CE, RD, CMO, Warden, Security, Detective, and AI positions. +## Set to 1 to jobban them from those positions, set to 0 to allow them. +# GUEST_JOBBAN + +## Uncomment this to stop people connecting to your server without a registered ckey. (i.e. guest-* are all blocked from connecting) +GUEST_BAN + +## Set to jobban everyone who's key is not listed in data/whitelist.txt from Captain, HoS, HoP, CE, RD, CMO, Warden, Security, Detective, and AI positions. +## Uncomment to 1 to jobban, leave commented out to allow these positions for everyone (but see GUEST_JOBBAN above and regular jobbans) +# USEWHITELIST + +## set a server location for world reboot. Don't include the byond://, just give the address and port. +# Don't set this to the same server, BYOND will automatically restart players to the server when it has restarted. +# SERVER ss13.example.com:2506 + +## forum address +# FORUMURL http://tgstation13.org/phpBB/index.php + +## Wiki address +# WIKIURL http://www.tgstation13.org/wiki + +##Rules address +# RULESURL http://www.tgstation13.org/wiki/Rules + +##Github address +# GITHUBURL https://www.github.com/tgstation/-tg-station + +## Ban appeals URL - usually for a forum or wherever people should go to contact your admins. +# BANAPPEALS http://justanotherday.example.com + +## In-game features +##Toggle for having jobs load up from the .txt +# LOAD_JOBS_FROM_TXT + +##Remove the # mark infront of this to forbid admins from possessing the singularity. +#FORBID_SINGULO_POSSESSION + +## Remove the # to show a popup 'reply to' window to every non-admin that recieves an adminPM. +## The intention is to make adminPMs more visible. (although I fnd popups annoying so this defaults to off) +#POPUP_ADMIN_PM + +## Remove the # to allow special 'Easter-egg' events on special holidays such as seasonal holidays and stuff like 'Talk Like a Pirate Day' :3 YAARRR +ALLOW_HOLIDAYS + +##Remove the # mark if you are going to use the SVN irc bot to relay adminhelps +#USEIRCBOT + +##Defines the ticklag for the world. 0.9 is the normal one, 0.5 is smoother. +TICKLAG 0.9 + +## Defines if Tick Compensation is used. It results in a minor slowdown of movement of all mobs, but attempts to result in a level movement speed across all ticks. Recommended if tickrate is lowered. +TICKCOMP 0 + +## Comment this out to disable automuting +#AUTOMUTE_ON + +## Communication key for receiving data through world/Topic(), you don't want to give this out +#COMMS_KEY default_pwd + +## Uncomment this to let players see their own notes (they can still be set by admins only) +#SEE_OWN_NOTES + +##Note: all population caps can be used with each other if desired. + +## Uncomment for 'soft' population caps, players will be warned while joining if the living crew exceeds the listed number. +#SOFT_POPCAP 100 + +## Message for soft cap +SOFT_POPCAP_MESSAGE Be warned that the server is currently serving a high number of users, consider using alternative game servers. + +## Uncomment for 'hard' population caps, players will not be allowed to spawn if the living crew exceeds the listed number, though they may still observe or wait for the living crew to decrease in size. +#HARD_POPCAP 150 + +## Message for hard cap +HARD_POPCAP_MESSAGE The server is currently serving a high number of users, You cannot currently join. You may wait for the number of living crew to decline, observe, or find alternative servers. + +## Uncomment for 'extreme' population caps, players will not be allowed to join the server if living crew exceeds the listed number. +#EXTREME_POPCAP 200 + +## Message for extreme cap +EXTREME_POPCAP_MESSAGE The server is currently serving a high number of users, find alternative servers. + +## Notify admins when a new player connects for the first x days a player's been around. (0 for first connection only, -1 for never) +## Requres database +NOTIFY_NEW_PLAYER_AGE 0 + +## Notify the irc channel when a new player makes their first connection +## Requres database +#IRC_FIRST_CONNECTION_ALERT + +## Deny all new connections by ckeys we haven't seen before (exempts admins and only denies the connection if the database is enabled and connected) +## Requires database +#PANIC_BUNKER + +## Uncomment to have the changelog file automatically open when a user connects and hasn't seen the latest changelog +#AGGRESSIVE_CHANGELOG + +## Uncomment to have the game log runtimes to the log folder. (Note: this disables normal output in dd/ds, so it should be left off for testing. #LOG_RUNTIMES \ No newline at end of file diff --git a/config/dbconfig.txt b/config/dbconfig.txt index dbc09df51df..cc28dc483de 100644 --- a/config/dbconfig.txt +++ b/config/dbconfig.txt @@ -1,33 +1,33 @@ -## MySQL Connection Configuration -## This is used for stats, feedback gathering, -## administration, and the in game library. - -## Should SQL be enabled? Uncomment to enable. -#SQL_ENABLED - -## Server the MySQL database can be found at. -# Examples: localhost, 200.135.5.43, www.mysqldb.com, etc. -ADDRESS localhost - -## MySQL server port (default is 3306). -PORT 3306 - -## Database for all SQL functions, not just feedback. -FEEDBACK_DATABASE feedback - -## Prefix to be added to the name of every table, older databases will require this be set to erro_ -## if left out defaults to erro_ for legacy reasons, if you want no table prefix, give a blank prefix rather then comment out -## 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 SS13_ -## -## Leave as is if you are using the standard schema file. -FEEDBACK_TABLEPREFIX - -## Username/Login used to access the database. -FEEDBACK_LOGIN username - -## Password used to access the database. +## MySQL Connection Configuration +## This is used for stats, feedback gathering, +## administration, and the in game library. + +## Should SQL be enabled? Uncomment to enable. +#SQL_ENABLED + +## Server the MySQL database can be found at. +# Examples: localhost, 200.135.5.43, www.mysqldb.com, etc. +ADDRESS localhost + +## MySQL server port (default is 3306). +PORT 3306 + +## Database for all SQL functions, not just feedback. +FEEDBACK_DATABASE feedback + +## Prefix to be added to the name of every table, older databases will require this be set to erro_ +## if left out defaults to erro_ for legacy reasons, if you want no table prefix, give a blank prefix rather then comment out +## 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 SS13_ +## +## Leave as is if you are using the standard schema file. +FEEDBACK_TABLEPREFIX + +## Username/Login used to access the database. +FEEDBACK_LOGIN username + +## Password used to access the database. FEEDBACK_PASSWORD password \ No newline at end of file diff --git a/config/game_options.txt b/config/game_options.txt index aa4f48f5dd3..54472c969bf 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -1,300 +1,300 @@ -### HEALTH ### - -# level of health at which a mob becomes unconscious (crit) -HEALTH_THRESHOLD_CRIT 0 - -# level of health at which a mob becomes dead -HEALTH_THRESHOLD_DEAD -100 - - -### REVIVAL ### - -# whether pod plants work or not -REVIVAL_POD_PLANTS 1 - -# whether cloning tubes work or not -REVIVAL_CLONING 1 - -# amount of time (in hundredths of seconds) for which a brain retains the "spark of life" after the person's death (set to -1 for infinite) -REVIVAL_BRAIN_LIFE -1 - -### RENAMING ### - -#Uncomment to allow cyborgs to rename themselves at roundstart. Has no effect on roboticists renaming cyborgs the normal way. -#RENAME_CYBORG - -### OOC DURING ROUND ### -#Comment this out if you want OOC to be automatically disabled during the round, it will be enabled during the lobby and after the round end results. -OOC_DURING_ROUND - -### EMOJI ### -#Comment this out if you want to disable emojis -EMOJIS - -### MOB MOVEMENT ### - -## We suggest editing these variables ingame to find a good speed for your server. -## To do this you must be a high level admin. Open the 'debug' tab ingame. -## Select "Debug Controller" and then, in the popup, select "Configuration". These variables should have the same name. - -## These values get directly added to values and totals ingame. -## To speed things up make the number negative, to slow things down, make the number positive. - -## These modify the run/walk speed of all mobs before the mob-specific modifiers are applied. -RUN_DELAY 1 -WALK_DELAY 4 - -## The variables below affect the movement of specific mob types. -HUMAN_DELAY 0 -ROBOT_DELAY 0 -MONKEY_DELAY 0 -ALIEN_DELAY 0 -SLIME_DELAY 0 -ANIMAL_DELAY 0 - - -### NAMES ### -## If uncommented this adds a random surname to a player's name if they only specify one name. -#HUMANS_NEED_SURNAMES - -## If uncommented, this forces all players to use random names !and appearances!. -#FORCE_RANDOM_NAMES - - -### ALERT LEVELS ### -ALERT_GREEN All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced. -ALERT_BLUE_UPTO The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted. -ALERT_BLUE_DOWNTO The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed. -ALERT_RED_UPTO There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised. -ALERT_RED_DOWNTO The station's destruction has been averted. There is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised. -ALERT_DELTA Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill. - - - -### GAME MODES ### - -## Probablities for game modes chosen in 'secret' and 'random' modes. -## Default probablity is 1, increase to make that mode more likely to be picked. -## Set to 0 to disable that mode. - -PROBABILITY TRAITOR 5 -PROBABILITY TRAITORCHAN 4 -PROBABILITY DOUBLE_AGENTS 3 -PROBABILITY NUCLEAR 2 -PROBABILITY REVOLUTION 2 -PROBABILITY SHADOWLING 2 -PROBABILITY GANG 2 -PROBABILITY CULT 2 -PROBABILITY CHANGELING 2 -PROBABILITY WIZARD 4 -PROBABILITY MALFUNCTION 1 -PROBABILITY BLOB 2 -PROBABILITY RAGINMAGES 2 -PROBABILITY MONKEY 0 -PROBABILITY METEOR 0 -PROBABILITY EXTENDED 0 - -## You probably want to keep sandbox off by default for secret and random. -PROBABILITY SANDBOX 0 - - -## Toggles for continuous modes. -## Modes that aren't continuous will end the instant all antagonists are dead. - -CONTINUOUS TRAITOR -CONTINUOUS TRAITORCHAN -CONTINUOUS DOUBLE_AGENTS -#CONTINUOUS NUCLEAR -#CONTINUOUS REVOLUTION -#CONTINUOUS SHADOWLING -CONTINUOUS GANG -CONTINUOUS CULT -CONTINUOUS CHANGELING -CONTINUOUS WIZARD -CONTINUOUS MALFUNCTION -CONTINUOUS BLOB -#CONTINUOUS RAGINMAGES -#CONTINUOUS MONKEY - -##Note: do not toggle continuous off for these modes, as they have no antagonists and would thus end immediately! - -CONTINUOUS METEOR -CONTINUOUS EXTENDED - - -## Toggles for allowing midround antagonists (aka mulligan antagonists). -## In modes that are continuous, if all antagonists should die then a new set of antagonists will be created. - -MIDROUND_ANTAG TRAITOR -MIDROUND_ANTAG TRAITORCHAN -MIDROUND_ANTAG DOUBLE_AGENTS -#MIDROUND_ANTAG NUCLEAR -#MIDROUND_ANTAG REVOLUTION -#MIDROUND_ANTAG SHADOWLING -#MIDROUND_ANTAG GANG -MIDROUND_ANTAG CULT -MIDROUND_ANTAG CHANGELING -MIDROUND_ANTAG WIZARD -MIDROUND_ANTAG MALFUNCTION -MIDROUND_ANTAG BLOB -#MIDROUND_ANTAG RAGINMAGES -#MIDROUND_ANTAG MONKEY - - -## The amount of time it takes for the emergency shuttle to be called, from round start. -SHUTTLE_REFUEL_DELAY 12000 - -## Variables calculate how number of antagonists will scale to population. -## Used as (Antagonists = Population / Coeff) -## Set to 0 to disable scaling and use default numbers instead. -TRAITOR_SCALING_COEFF 6 -CHANGELING_SCALING_COEFF 6 - -## Variables calculate how number of open security officer positions will scale to population. -## Used as (Officers = Population / Coeff) -## Set to 0 to disable scaling and use default numbers instead. -SECURITY_SCALING_COEFF 8 - -# The number of objectives traitors get. -# Not including escaping/hijacking. -TRAITOR_OBJECTIVES_AMOUNT 2 - -## Uncomment to prohibit jobs that start with loyalty -## implants from being most antagonists. -#PROTECT_ROLES_FROM_ANTAGONIST - -## Uncomment to prohibit assistants from becoming most antagonists. -#PROTECT_ASSISTANT_FROM_ANTAGONIST - -## If non-human species are barred from joining as a head of staff -#ENFORCE_HUMAN_AUTHORITY - -## If late-joining players have a chance to become a traitor/changeling -ALLOW_LATEJOIN_ANTAGONISTS - -## Uncomment to allow players to see the set odds of different rounds in secret/random in the get server revision screen. This will NOT tell the current roundtype. -#SHOW_GAME_TYPE_ODDS - -### RANDOM EVENTS ### - -## Comment this to disable random events during the round. -ALLOW_RANDOM_EVENTS - - -### AI ### - -## Allow the AI job to be picked. -ALLOW_AI - - - -### AWAY MISSIONS ### - -## How long the delay is before the Away Mission gate opens. Default is half an hour. -## 600 is one minute. -GATEWAY_DELAY 18000 - - -### ACCESS ### - -## If the number of players ready at round starts exceeds this threshold, JOBS_HAVE_MINIMAL_ACCESS will automatically be enabled. Otherwise, it will be disabled. -## This is useful for accomodating both low and high population rounds on the same server. -## Comment out or set to 0 to disable this automatic toggle. -MINIMAL_ACCESS_THRESHOLD 20 - -## Comment this out if you wish to use the setup where jobs have more access. -## This is intended for servers with low populations - where there are not enough -## players to fill all roles, so players need to do more than just one job. -## This option is ignored if MINIMAL_ACCESS_THRESHOLD is used. -#JOBS_HAVE_MINIMAL_ACCESS - -## Uncomment to give assistants maint access. -#ASSISTANTS_HAVE_MAINT_ACCESS - -## Uncoment to give security maint access. Note that if you comment JOBS_HAVE_MINIMAL_ACCESS security already gets maint from that. -#SECURITY_HAS_MAINT_ACCESS - -## Uncomment to give everyone maint access. -#EVERYONE_HAS_MAINT_ACCESS - -## Comment this to make security officers spawn in departmental security posts -SEC_START_BRIG - - -### GHOST INTERACTION ### -## Uncomment to let ghosts spin chairs. You may be wondering why this is a config option. Don't ask. -#GHOST_INTERACTION - -### NON-VOCAL SILICONS ### -## Uncomment to stop the AI, or cyborgs, from having vocal communication. -#SILENT_AI -#SILENT_BORG - -### SANDBOX PANEL AUTOCLOSE ### -## The sandbox panel's item spawning dialog now stays open even after you click an option. -## If you find that your players are abusing the sandbox panel, this option may slow them down -## without preventing people from using it properly. -## Only functions in sandbox game mode. -#SANDBOX_AUTOCLOSE - -### ROUNDSTART SILICON LAWS ### -## This controls what the AI's laws are at the start of the round. -## Set to 0/commented for "off", silicons will just start with Asimov. -## Set to 1 for "custom", silicons will start with the custom laws defined in silicon_laws.txt. (If silicon_laws.txt is empty, the AI will spawn with asimov and Custom boards will auto-delete.) -## Set to 2 for "random", silicons will start with a random lawset picked from (at the time of writing): P.A.L.A.D.I.N., Corporate, Asimov. More can be added by changing the law datum paths in ai_laws.dm. -DEFAULT_LAWS 1 - -### SILICON LAW MAX AMOUNT ### -## The maximum number of laws a silicon can have -## Attempting to upload laws past this point will fail unless the AI is reset -SILICON_MAX_LAW_AMOUNT 12 - -## Uncomment to give players the choice of their species before they join the game -#JOIN_WITH_MUTANT_RACE - -## Uncomment to give players the choice of joining as a human with mutant bodyparts before they join the game -#JOIN_WITH_MUTANT_HUMANS - -## Assistant slot cap. Set to -1 for unlimited. -ASSISTANT_CAP -1 - -## Starlight for exterior walls and breaches. Uncomment for starlight! -STARLIGHT - -## Uncomment to bring back old grey suit assistants instead of the now default rainbow colored assistants. -#GREY_ASSISTANTS - -### Midround Antag (aka Mulligan antag) config options ### - -## A time, in minutes, after which the midround antag system stops attempting to run and continuous rounds end immediately upon completion. -MIDROUND_ANTAG_TIME_CHECK 60 - -## A ratio of living to total crew members, the lower this is, the more people will have to die in order for midround antag to be skipped -MIDROUND_ANTAG_LIFE_CHECK 0.7 - -###Limit Spell Choices## -## Uncomment to disallow wizards from using certain spells that may be too chaotic/fun for your playerbase - -#NO_SUMMON_GUNS -#NO_SUMMON_MAGIC -#NO_SUMMON_EVENTS - -//Comment for "normal" explosions, which ignore obstacles -//Uncomment for explosions that react to doors and walls -REACTIONARY_EXPLOSIONS - -### Configure the bomb cap -## This caps all explosions to the specified range. Used for both balance reasons and to prevent overloading the server and lagging the game out. -## This is given as the 3rd number(light damage) in the standard (1,2,3) explosion notation. The other numbers are derived by dividing by 2 and 4. -## eg: If you give the number 20. The bomb cap will be 5,10,20. -## Can be any number between 4 and 128, some examples are provided below. - -## Default (3,7,14) -BOMBCAP 14 -## One 'step' up (4,8,16) (recommended if you enable REACTIONARY_EXPLOSIONS above) -#BOMBCAP 16 -## LagHell (7,14,28) -#BOMBCAP 28 - - - +### HEALTH ### + +# level of health at which a mob becomes unconscious (crit) +HEALTH_THRESHOLD_CRIT 0 + +# level of health at which a mob becomes dead +HEALTH_THRESHOLD_DEAD -100 + + +### REVIVAL ### + +# whether pod plants work or not +REVIVAL_POD_PLANTS 1 + +# whether cloning tubes work or not +REVIVAL_CLONING 1 + +# amount of time (in hundredths of seconds) for which a brain retains the "spark of life" after the person's death (set to -1 for infinite) +REVIVAL_BRAIN_LIFE -1 + +### RENAMING ### + +#Uncomment to allow cyborgs to rename themselves at roundstart. Has no effect on roboticists renaming cyborgs the normal way. +#RENAME_CYBORG + +### OOC DURING ROUND ### +#Comment this out if you want OOC to be automatically disabled during the round, it will be enabled during the lobby and after the round end results. +OOC_DURING_ROUND + +### EMOJI ### +#Comment this out if you want to disable emojis +EMOJIS + +### MOB MOVEMENT ### + +## We suggest editing these variables ingame to find a good speed for your server. +## To do this you must be a high level admin. Open the 'debug' tab ingame. +## Select "Debug Controller" and then, in the popup, select "Configuration". These variables should have the same name. + +## These values get directly added to values and totals ingame. +## To speed things up make the number negative, to slow things down, make the number positive. + +## These modify the run/walk speed of all mobs before the mob-specific modifiers are applied. +RUN_DELAY 1 +WALK_DELAY 4 + +## The variables below affect the movement of specific mob types. +HUMAN_DELAY 0 +ROBOT_DELAY 0 +MONKEY_DELAY 0 +ALIEN_DELAY 0 +SLIME_DELAY 0 +ANIMAL_DELAY 0 + + +### NAMES ### +## If uncommented this adds a random surname to a player's name if they only specify one name. +#HUMANS_NEED_SURNAMES + +## If uncommented, this forces all players to use random names !and appearances!. +#FORCE_RANDOM_NAMES + + +### ALERT LEVELS ### +ALERT_GREEN All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced. +ALERT_BLUE_UPTO The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted. +ALERT_BLUE_DOWNTO The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed. +ALERT_RED_UPTO There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised. +ALERT_RED_DOWNTO The station's destruction has been averted. There is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised. +ALERT_DELTA Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill. + + + +### GAME MODES ### + +## Probablities for game modes chosen in 'secret' and 'random' modes. +## Default probablity is 1, increase to make that mode more likely to be picked. +## Set to 0 to disable that mode. + +PROBABILITY TRAITOR 5 +PROBABILITY TRAITORCHAN 4 +PROBABILITY DOUBLE_AGENTS 3 +PROBABILITY NUCLEAR 2 +PROBABILITY REVOLUTION 2 +PROBABILITY SHADOWLING 2 +PROBABILITY GANG 2 +PROBABILITY CULT 2 +PROBABILITY CHANGELING 2 +PROBABILITY WIZARD 4 +PROBABILITY MALFUNCTION 1 +PROBABILITY BLOB 2 +PROBABILITY RAGINMAGES 2 +PROBABILITY MONKEY 0 +PROBABILITY METEOR 0 +PROBABILITY EXTENDED 0 + +## You probably want to keep sandbox off by default for secret and random. +PROBABILITY SANDBOX 0 + + +## Toggles for continuous modes. +## Modes that aren't continuous will end the instant all antagonists are dead. + +CONTINUOUS TRAITOR +CONTINUOUS TRAITORCHAN +CONTINUOUS DOUBLE_AGENTS +#CONTINUOUS NUCLEAR +#CONTINUOUS REVOLUTION +#CONTINUOUS SHADOWLING +CONTINUOUS GANG +CONTINUOUS CULT +CONTINUOUS CHANGELING +CONTINUOUS WIZARD +CONTINUOUS MALFUNCTION +CONTINUOUS BLOB +#CONTINUOUS RAGINMAGES +#CONTINUOUS MONKEY + +##Note: do not toggle continuous off for these modes, as they have no antagonists and would thus end immediately! + +CONTINUOUS METEOR +CONTINUOUS EXTENDED + + +## Toggles for allowing midround antagonists (aka mulligan antagonists). +## In modes that are continuous, if all antagonists should die then a new set of antagonists will be created. + +MIDROUND_ANTAG TRAITOR +MIDROUND_ANTAG TRAITORCHAN +MIDROUND_ANTAG DOUBLE_AGENTS +#MIDROUND_ANTAG NUCLEAR +#MIDROUND_ANTAG REVOLUTION +#MIDROUND_ANTAG SHADOWLING +#MIDROUND_ANTAG GANG +MIDROUND_ANTAG CULT +MIDROUND_ANTAG CHANGELING +MIDROUND_ANTAG WIZARD +MIDROUND_ANTAG MALFUNCTION +MIDROUND_ANTAG BLOB +#MIDROUND_ANTAG RAGINMAGES +#MIDROUND_ANTAG MONKEY + + +## The amount of time it takes for the emergency shuttle to be called, from round start. +SHUTTLE_REFUEL_DELAY 12000 + +## Variables calculate how number of antagonists will scale to population. +## Used as (Antagonists = Population / Coeff) +## Set to 0 to disable scaling and use default numbers instead. +TRAITOR_SCALING_COEFF 6 +CHANGELING_SCALING_COEFF 6 + +## Variables calculate how number of open security officer positions will scale to population. +## Used as (Officers = Population / Coeff) +## Set to 0 to disable scaling and use default numbers instead. +SECURITY_SCALING_COEFF 8 + +# The number of objectives traitors get. +# Not including escaping/hijacking. +TRAITOR_OBJECTIVES_AMOUNT 2 + +## Uncomment to prohibit jobs that start with loyalty +## implants from being most antagonists. +#PROTECT_ROLES_FROM_ANTAGONIST + +## Uncomment to prohibit assistants from becoming most antagonists. +#PROTECT_ASSISTANT_FROM_ANTAGONIST + +## If non-human species are barred from joining as a head of staff +#ENFORCE_HUMAN_AUTHORITY + +## If late-joining players have a chance to become a traitor/changeling +ALLOW_LATEJOIN_ANTAGONISTS + +## Uncomment to allow players to see the set odds of different rounds in secret/random in the get server revision screen. This will NOT tell the current roundtype. +#SHOW_GAME_TYPE_ODDS + +### RANDOM EVENTS ### + +## Comment this to disable random events during the round. +ALLOW_RANDOM_EVENTS + + +### AI ### + +## Allow the AI job to be picked. +ALLOW_AI + + + +### AWAY MISSIONS ### + +## How long the delay is before the Away Mission gate opens. Default is half an hour. +## 600 is one minute. +GATEWAY_DELAY 18000 + + +### ACCESS ### + +## If the number of players ready at round starts exceeds this threshold, JOBS_HAVE_MINIMAL_ACCESS will automatically be enabled. Otherwise, it will be disabled. +## This is useful for accomodating both low and high population rounds on the same server. +## Comment out or set to 0 to disable this automatic toggle. +MINIMAL_ACCESS_THRESHOLD 20 + +## Comment this out if you wish to use the setup where jobs have more access. +## This is intended for servers with low populations - where there are not enough +## players to fill all roles, so players need to do more than just one job. +## This option is ignored if MINIMAL_ACCESS_THRESHOLD is used. +#JOBS_HAVE_MINIMAL_ACCESS + +## Uncomment to give assistants maint access. +#ASSISTANTS_HAVE_MAINT_ACCESS + +## Uncoment to give security maint access. Note that if you comment JOBS_HAVE_MINIMAL_ACCESS security already gets maint from that. +#SECURITY_HAS_MAINT_ACCESS + +## Uncomment to give everyone maint access. +#EVERYONE_HAS_MAINT_ACCESS + +## Comment this to make security officers spawn in departmental security posts +SEC_START_BRIG + + +### GHOST INTERACTION ### +## Uncomment to let ghosts spin chairs. You may be wondering why this is a config option. Don't ask. +#GHOST_INTERACTION + +### NON-VOCAL SILICONS ### +## Uncomment to stop the AI, or cyborgs, from having vocal communication. +#SILENT_AI +#SILENT_BORG + +### SANDBOX PANEL AUTOCLOSE ### +## The sandbox panel's item spawning dialog now stays open even after you click an option. +## If you find that your players are abusing the sandbox panel, this option may slow them down +## without preventing people from using it properly. +## Only functions in sandbox game mode. +#SANDBOX_AUTOCLOSE + +### ROUNDSTART SILICON LAWS ### +## This controls what the AI's laws are at the start of the round. +## Set to 0/commented for "off", silicons will just start with Asimov. +## Set to 1 for "custom", silicons will start with the custom laws defined in silicon_laws.txt. (If silicon_laws.txt is empty, the AI will spawn with asimov and Custom boards will auto-delete.) +## Set to 2 for "random", silicons will start with a random lawset picked from (at the time of writing): P.A.L.A.D.I.N., Corporate, Asimov. More can be added by changing the law datum paths in ai_laws.dm. +DEFAULT_LAWS 1 + +### SILICON LAW MAX AMOUNT ### +## The maximum number of laws a silicon can have +## Attempting to upload laws past this point will fail unless the AI is reset +SILICON_MAX_LAW_AMOUNT 12 + +## Uncomment to give players the choice of their species before they join the game +#JOIN_WITH_MUTANT_RACE + +## Uncomment to give players the choice of joining as a human with mutant bodyparts before they join the game +#JOIN_WITH_MUTANT_HUMANS + +## Assistant slot cap. Set to -1 for unlimited. +ASSISTANT_CAP -1 + +## Starlight for exterior walls and breaches. Uncomment for starlight! +STARLIGHT + +## Uncomment to bring back old grey suit assistants instead of the now default rainbow colored assistants. +#GREY_ASSISTANTS + +### Midround Antag (aka Mulligan antag) config options ### + +## A time, in minutes, after which the midround antag system stops attempting to run and continuous rounds end immediately upon completion. +MIDROUND_ANTAG_TIME_CHECK 60 + +## A ratio of living to total crew members, the lower this is, the more people will have to die in order for midround antag to be skipped +MIDROUND_ANTAG_LIFE_CHECK 0.7 + +###Limit Spell Choices## +## Uncomment to disallow wizards from using certain spells that may be too chaotic/fun for your playerbase + +#NO_SUMMON_GUNS +#NO_SUMMON_MAGIC +#NO_SUMMON_EVENTS + +//Comment for "normal" explosions, which ignore obstacles +//Uncomment for explosions that react to doors and walls +REACTIONARY_EXPLOSIONS + +### Configure the bomb cap +## This caps all explosions to the specified range. Used for both balance reasons and to prevent overloading the server and lagging the game out. +## This is given as the 3rd number(light damage) in the standard (1,2,3) explosion notation. The other numbers are derived by dividing by 2 and 4. +## eg: If you give the number 20. The bomb cap will be 5,10,20. +## Can be any number between 4 and 128, some examples are provided below. + +## Default (3,7,14) +BOMBCAP 14 +## One 'step' up (4,8,16) (recommended if you enable REACTIONARY_EXPLOSIONS above) +#BOMBCAP 16 +## LagHell (7,14,28) +#BOMBCAP 28 + + + diff --git a/config/jobs.txt b/config/jobs.txt index c694bce28d0..a2676df629f 100644 --- a/config/jobs.txt +++ b/config/jobs.txt @@ -1,39 +1,39 @@ -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 -Clown=1 -Mime=1 - -Warden=1 -Detective=1 -Security Officer=5 - -Assistant=-1 -Atmospheric Technician=4 -Cargo Technician=3 -Chaplain=1 -Lawyer=2 -Librarian=1 - -AI=1 +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 +Clown=1 +Mime=1 + +Warden=1 +Detective=1 +Security Officer=5 + +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/motd.txt b/config/motd.txt index dd3234cbb69..c5b8a594972 100644 --- a/config/motd.txt +++ b/config/motd.txt @@ -1,5 +1,5 @@ - - -

Welcome to Space Station 13!

- -This server is running a /tg/station 13 Git build. + + +

Welcome to Space Station 13!

+ +This server is running a /tg/station 13 Git build. diff --git a/config/names/adjectives.txt b/config/names/adjectives.txt index ab0b4ba1806..73b6a4076db 100644 --- a/config/names/adjectives.txt +++ b/config/names/adjectives.txt @@ -1,397 +1,397 @@ -adorable -adventurous -aggressive -alert -attractive -average -beautiful -blue-eyed -bloody -blushing -bright -clean -clear -cloudy -colorful -crowded -cute -dark -drab -distinct -dull -elegant -excited -fancy -filthy -glamorous -gleaming -gorgeous -graceful -grotesque -handsome -homely -light -long -magnificent -misty -motionless -muddy -old-fashioned -plain -poised -precious -quaint -shiny -smoggy -sparkling -spotless -stormy -strange -ugly -ugliest -unsightly -unusual -wide-eyed -alive -annoying -bad -better -beautiful -brainy -breakable -busy -careful -cautious -clever -clumsy -concerned -crazy -curious -dead -different -difficult -doubtful -easy -expensive -famous -fragile -frail -gifted -helpful -helpless -horrible -important -impossible -inexpensive -innocent -inquisitive -modern -mushy -odd -open -outstanding -poor -powerful -prickly -puzzled -real -rich -shy -sleepy -stupid -super -talented -tame -tender -tough -uninterested -vast -wandering -wild -wrong - -angry -annoyed -anxious -arrogant -ashamed -awful -bad -bewildered -black -blue -bored -clumsy -combative -condemned -confused -crazy,flipped-out -creepy -cruel -dangerous -defeated -defiant -depressed -disgusted -disturbed -dizzy -dull -embarrassed -envious -evil -fierce -foolish -frantic -frightened -grieving -grumpy -helpless -homeless -hungry -hurt -ill -itchy -jealous -jittery -lazy -lonely -mysterious -nasty -naughty -nervous -nutty -obnoxious -outrageous -panicky -repulsive -scary -selfish -sore -tense -terrible -testy -thoughtless -tired -troubled -upset -uptight -weary -wicked -worried -agreeable -amused -brave -calm -charming -cheerful -comfortable -cooperative -courageous -delightful -determined -eager -elated -enchanting -encouraging -energetic -enthusiastic -excited -exuberant -fair -faithful -fantastic -fine -friendly -funny -gentle -glorious -good -happy -healthy -helpful -hilarious -jolly -joyous -kind -lively -lovely -lucky -nice -obedient -perfect -pleasant -proud -relieved -silly -smiling -splendid -successful -thankful -thoughtful -victorious -vivacious -witty -wonderful -zealous -zany -broad -chubby -crooked -curved -deep -flat -high -hollow -low -narrow -round -shallow -skinny -square -steep -straight -wide -big -colossal -fat -gigantic -great -huge -immense -large -little -mammoth -massive -miniature -petite -puny -scrawny -short -small -tall -teeny -teeny-tiny -tiny -cooing -deafening -faint -harsh -high-pitched -hissing -hushed -husky -loud -melodic -moaning -mute -noisy -purring -quiet -raspy -resonant -screeching -shrill -silent -soft -squealing -thundering -voiceless -whispering -ancient -brief -early -fast -late -long -modern -old -old-fashioned -quick -rapid -short -slow -swift -young -Taste/Touch -bitter -delicious -fresh -juicy -ripe -rotten -salty -sour -spicy -stale -sticky -strong -sweet -tart -tasteless -tasty -thirsty -fluttering -fuzzy -greasy -grubby -hard -hot -icy -loose -melted -nutritious -plastic -prickly -rainy -rough -scattered -shaggy -shaky -sharp -shivering -silky -slimy -slippery -smooth -soft -solid -steady -sticky -tender -tight -uneven -weak -wet -wooden -yummy -boiling -breezy -broken -bumpy -chilly -cold -cool -creepy -crooked -cuddly -curly -damaged -damp -dirty -dry -dusty -filthy -flaky -fluffy -freezing -hot -warm -wet -abundant -empty -few -heavy -light -many -numerous +adorable +adventurous +aggressive +alert +attractive +average +beautiful +blue-eyed +bloody +blushing +bright +clean +clear +cloudy +colorful +crowded +cute +dark +drab +distinct +dull +elegant +excited +fancy +filthy +glamorous +gleaming +gorgeous +graceful +grotesque +handsome +homely +light +long +magnificent +misty +motionless +muddy +old-fashioned +plain +poised +precious +quaint +shiny +smoggy +sparkling +spotless +stormy +strange +ugly +ugliest +unsightly +unusual +wide-eyed +alive +annoying +bad +better +beautiful +brainy +breakable +busy +careful +cautious +clever +clumsy +concerned +crazy +curious +dead +different +difficult +doubtful +easy +expensive +famous +fragile +frail +gifted +helpful +helpless +horrible +important +impossible +inexpensive +innocent +inquisitive +modern +mushy +odd +open +outstanding +poor +powerful +prickly +puzzled +real +rich +shy +sleepy +stupid +super +talented +tame +tender +tough +uninterested +vast +wandering +wild +wrong + +angry +annoyed +anxious +arrogant +ashamed +awful +bad +bewildered +black +blue +bored +clumsy +combative +condemned +confused +crazy,flipped-out +creepy +cruel +dangerous +defeated +defiant +depressed +disgusted +disturbed +dizzy +dull +embarrassed +envious +evil +fierce +foolish +frantic +frightened +grieving +grumpy +helpless +homeless +hungry +hurt +ill +itchy +jealous +jittery +lazy +lonely +mysterious +nasty +naughty +nervous +nutty +obnoxious +outrageous +panicky +repulsive +scary +selfish +sore +tense +terrible +testy +thoughtless +tired +troubled +upset +uptight +weary +wicked +worried +agreeable +amused +brave +calm +charming +cheerful +comfortable +cooperative +courageous +delightful +determined +eager +elated +enchanting +encouraging +energetic +enthusiastic +excited +exuberant +fair +faithful +fantastic +fine +friendly +funny +gentle +glorious +good +happy +healthy +helpful +hilarious +jolly +joyous +kind +lively +lovely +lucky +nice +obedient +perfect +pleasant +proud +relieved +silly +smiling +splendid +successful +thankful +thoughtful +victorious +vivacious +witty +wonderful +zealous +zany +broad +chubby +crooked +curved +deep +flat +high +hollow +low +narrow +round +shallow +skinny +square +steep +straight +wide +big +colossal +fat +gigantic +great +huge +immense +large +little +mammoth +massive +miniature +petite +puny +scrawny +short +small +tall +teeny +teeny-tiny +tiny +cooing +deafening +faint +harsh +high-pitched +hissing +hushed +husky +loud +melodic +moaning +mute +noisy +purring +quiet +raspy +resonant +screeching +shrill +silent +soft +squealing +thundering +voiceless +whispering +ancient +brief +early +fast +late +long +modern +old +old-fashioned +quick +rapid +short +slow +swift +young +Taste/Touch +bitter +delicious +fresh +juicy +ripe +rotten +salty +sour +spicy +stale +sticky +strong +sweet +tart +tasteless +tasty +thirsty +fluttering +fuzzy +greasy +grubby +hard +hot +icy +loose +melted +nutritious +plastic +prickly +rainy +rough +scattered +shaggy +shaky +sharp +shivering +silky +slimy +slippery +smooth +soft +solid +steady +sticky +tender +tight +uneven +weak +wet +wooden +yummy +boiling +breezy +broken +bumpy +chilly +cold +cool +creepy +crooked +cuddly +curly +damaged +damp +dirty +dry +dusty +filthy +flaky +fluffy +freezing +hot +warm +wet +abundant +empty +few +heavy +light +many +numerous substantial \ No newline at end of file diff --git a/config/names/ai.txt b/config/names/ai.txt index ea9f63c0a9e..01c65cf1b7f 100644 --- a/config/names/ai.txt +++ b/config/names/ai.txt @@ -1,147 +1,147 @@ -1-Rover-1 -16-20 -7-Zark-7 -790 -AM -AMEE -ASTAR -Adaptive Manipulator -Allied Mastercomputer -Alpha 5 -Alpha 6 -Alpha 7 -AmigoBot -Android -Aniel -Asimov -Astor -B-4 -B-9 -B.O.B. -B166ER -Bender -Bishop -Blitz -Box -Brackenridge -C-3PO -Cassandra One -Cell -Chii -Chip -Computer -Conky 2000 -Cutie -Data -Dee Model -Deep Thought -Dor-15 -Dorfl -Dot Matrix -Duey -E.D.I. -ED-209 -E-Man -Emma-2 -Erasmus -Ez-27 -FRIEND COMPUTER -Fagor -Faith -Fi -Frost -Fum -Futura -G2 -George -Gnut -Gort -H.A.R.L.I.E. -H.E.L.P.eR. -H.E.R.B.I.E. -HAL 9000 -Hadaly -Huey -Irona -Jay-Dub -Jinx -Johnny 5 -K-9 -KITT -Klapaucius -Kryten 2X4B-523P -L-76 -L-Ron -LUH 3417 -Louie -MARK13 -Maria -Marvin -Master Control Program -Max 404 -Maximillian -Mechagodzilla -Mechani-Kong -Metalhead -Mr. R.I.N.G. -NCH -Necron-99 -Norby -OMM 0910 -Orange v 3.5 -PTO -Project 2501 -R.I.C. 2.0 -R2-D2 -R4-P17 -Revelation -Ro-Man -Robbie -S.A.M. -S.H.O.C.K. -S.H.R.O.U.D. -S.O.P.H.I.E. -SEN 5241 -SHODAN -SID 6.7 -Setaur -Shrike -Solo -Speedy -Super 17 -Surgeon General Kraken -T-1000 -T-800 -T-850 -THX 1138 -TWA -Terminus -Tidy -Tik-Tok -Tobor -Trurl -ULTRABOT -Ulysses -Uniblab -V.I.N.CENT. -Voltes V -W1k1 -Wikipedia -Windows 3.1 -X-5 -XERXES -XR -Yod -Z-1 -Z-2 -Z-3 -Zed -Zord -Mugsy3000 -Terminus -Decimus -Robot Devil -Optimus -Megatron -Soundwave -Ironhide +1-Rover-1 +16-20 +7-Zark-7 +790 +AM +AMEE +ASTAR +Adaptive Manipulator +Allied Mastercomputer +Alpha 5 +Alpha 6 +Alpha 7 +AmigoBot +Android +Aniel +Asimov +Astor +B-4 +B-9 +B.O.B. +B166ER +Bender +Bishop +Blitz +Box +Brackenridge +C-3PO +Cassandra One +Cell +Chii +Chip +Computer +Conky 2000 +Cutie +Data +Dee Model +Deep Thought +Dor-15 +Dorfl +Dot Matrix +Duey +E.D.I. +ED-209 +E-Man +Emma-2 +Erasmus +Ez-27 +FRIEND COMPUTER +Fagor +Faith +Fi +Frost +Fum +Futura +G2 +George +Gnut +Gort +H.A.R.L.I.E. +H.E.L.P.eR. +H.E.R.B.I.E. +HAL 9000 +Hadaly +Huey +Irona +Jay-Dub +Jinx +Johnny 5 +K-9 +KITT +Klapaucius +Kryten 2X4B-523P +L-76 +L-Ron +LUH 3417 +Louie +MARK13 +Maria +Marvin +Master Control Program +Max 404 +Maximillian +Mechagodzilla +Mechani-Kong +Metalhead +Mr. R.I.N.G. +NCH +Necron-99 +Norby +OMM 0910 +Orange v 3.5 +PTO +Project 2501 +R.I.C. 2.0 +R2-D2 +R4-P17 +Revelation +Ro-Man +Robbie +S.A.M. +S.H.O.C.K. +S.H.R.O.U.D. +S.O.P.H.I.E. +SEN 5241 +SHODAN +SID 6.7 +Setaur +Shrike +Solo +Speedy +Super 17 +Surgeon General Kraken +T-1000 +T-800 +T-850 +THX 1138 +TWA +Terminus +Tidy +Tik-Tok +Tobor +Trurl +ULTRABOT +Ulysses +Uniblab +V.I.N.CENT. +Voltes V +W1k1 +Wikipedia +Windows 3.1 +X-5 +XERXES +XR +Yod +Z-1 +Z-2 +Z-3 +Zed +Zord +Mugsy3000 +Terminus +Decimus +Robot Devil +Optimus +Megatron +Soundwave +Ironhide diff --git a/config/names/clown.txt b/config/names/clown.txt index 90c1f07e27c..c29fca74ba3 100644 --- a/config/names/clown.txt +++ b/config/names/clown.txt @@ -1,37 +1,37 @@ -Gigglesworth -Honkel the III -Goose McSunny -Mr. Shoe -Toodles Sharperton -Dinky Doodle -Honkerbelle -Bo Bo Sassy -Baby Cakes -Ladybug Honks -Ziggy Yoyo -Razzle Dazzle -Buster Frown -Pepinpop -Silly Willy -Jo Jo Bobo Bo -Pocket -Patches -Checkers -Freckle -Honker -Bonker -Skiddle -Scootaloo -Sprinkledinkle -Ronnie Pace -Miss Stockings -Slippy Joe -Redshirt McBeat -Flop O'Honker -Speckles -Bubble -Button -Sparkle -Giggles -Jingle +Gigglesworth +Honkel the III +Goose McSunny +Mr. Shoe +Toodles Sharperton +Dinky Doodle +Honkerbelle +Bo Bo Sassy +Baby Cakes +Ladybug Honks +Ziggy Yoyo +Razzle Dazzle +Buster Frown +Pepinpop +Silly Willy +Jo Jo Bobo Bo +Pocket +Patches +Checkers +Freckle +Honker +Bonker +Skiddle +Scootaloo +Sprinkledinkle +Ronnie Pace +Miss Stockings +Slippy Joe +Redshirt McBeat +Flop O'Honker +Speckles +Bubble +Button +Sparkle +Giggles +Jingle Candy \ No newline at end of file diff --git a/config/names/death_commando.txt b/config/names/death_commando.txt index e3d1f34f327..b10e181b5e8 100644 --- a/config/names/death_commando.txt +++ b/config/names/death_commando.txt @@ -1,70 +1,70 @@ -Killiam Shakespeare -Stabby McGee -Sgt. Slaughter -Maxx Power -Sir Killaslot -Slab Bulkhead -Fridge Largemeat -Punt Speedchunk -Butch Deadlift -Bold Bigflank -Splint Chesthair -Flint Ironstag -Bolt Vanderhuge -Thick McRunfast -Blast Hardcheese -Buff Drinklots -Trunk Slamchest -Fist Rockbone -Stump Beefgnaw -Smash Lampjaw -Punch Rockgroin -Buck Plankchest -Stump Chunkman -Dirk Hardpeck -Rip Steakface -Slate Slabrock -Crud Bonemeal -Brick Hardmeat -Rip Sidecheek -Punch Sideiron -Gristle McThornBody -Slake Fistcrunch -Buff Hardback -Blast Thickneck -Crunch Buttsteak -Slab Squatthrust -Lump Beefrock -Touch Rustrod -Reef Blastbody -Smoke Manmuscle -Beat Punchbeef -Pack Blowfist -Roll Fizzlebeef -Lance Killiam -George Melons -Maximilian Murderface -Bob Johnson -Crush McStompbones -Hank Chesthair -Killing McKillingalot -Mancrush McBrorape -Rex Dudekiller VII -Seamus McTosterone -Hans Testosteroneson -Max Pain -Theodore Pain -Sarah Pain -GORE Vidal -Leonardo Da Viking -Noam Bombsky -Al "Otta" Gore -Gibbs McLargehuge -Evil Martin Luther King -Evil Bob Marley -Duke Killington -AMERICA -Toolboxl Rose -Zombie Gandhi -A whole bunch of spiders in a SWAT suit +Killiam Shakespeare +Stabby McGee +Sgt. Slaughter +Maxx Power +Sir Killaslot +Slab Bulkhead +Fridge Largemeat +Punt Speedchunk +Butch Deadlift +Bold Bigflank +Splint Chesthair +Flint Ironstag +Bolt Vanderhuge +Thick McRunfast +Blast Hardcheese +Buff Drinklots +Trunk Slamchest +Fist Rockbone +Stump Beefgnaw +Smash Lampjaw +Punch Rockgroin +Buck Plankchest +Stump Chunkman +Dirk Hardpeck +Rip Steakface +Slate Slabrock +Crud Bonemeal +Brick Hardmeat +Rip Sidecheek +Punch Sideiron +Gristle McThornBody +Slake Fistcrunch +Buff Hardback +Blast Thickneck +Crunch Buttsteak +Slab Squatthrust +Lump Beefrock +Touch Rustrod +Reef Blastbody +Smoke Manmuscle +Beat Punchbeef +Pack Blowfist +Roll Fizzlebeef +Lance Killiam +George Melons +Maximilian Murderface +Bob Johnson +Crush McStompbones +Hank Chesthair +Killing McKillingalot +Mancrush McBrorape +Rex Dudekiller VII +Seamus McTosterone +Hans Testosteroneson +Max Pain +Theodore Pain +Sarah Pain +GORE Vidal +Leonardo Da Viking +Noam Bombsky +Al "Otta" Gore +Gibbs McLargehuge +Evil Martin Luther King +Evil Bob Marley +Duke Killington +AMERICA +Toolboxl Rose +Zombie Gandhi +A whole bunch of spiders in a SWAT suit THAT DAMN FAGGOT TRAITOR GEORGE MELONS \ No newline at end of file diff --git a/config/names/first.txt b/config/names/first.txt index eb59a135854..a33e181146f 100644 --- a/config/names/first.txt +++ b/config/names/first.txt @@ -1,1502 +1,1502 @@ -Abel -Adolph -Aida -Alan -Alden -Alex -Alexa -Alexandria -Alexis -Alexus -Alfred -Alfreda -Alger -Alisa -Alisya -Allegra -Allegria -Allen -Alma -Alysha -Alyssia -Amaryllis -Ambrosine -Amos -Angel -Anjelica -Anne -Arabella -Archie -Arielle -Arleen -Arn -Art -Ashlie -Astor -Aubrey -Avalon -Averill -Baldric -Barbra -Bartholomew -Beckah -Becky -Bernice -Bertrand -Bethney -Betsy -Bidelia -Bill -Blake -Brayden -Breanne -Brendan -Brittani -Bronte -Brooke -Bryce -Burt -Byrne -Byron -Bysshe -Cadence -Calanthia -Caleigh -Camryn -Candace -Candice -Candis -Canute -Carly -Carlyle -Carolyn -Carry -Carter -Caryl -Casimir -Cassian -Cecily -Charlton -Cherette -Cheri -Cherry -Chip -Christa -Christiana -Christobel -Claribel -Clark -Claudius -Clement -Cleveland -Cliff -Clinton -Clitus -Clover -Collin -Coreen -Corrine -Cy -Cynthia -Dalya -Damian -Daniella -Danny -Darcey -Darell -Daria -Darin -Dayna -Deangelo -Debbi -Dee -Deena -Della -Delma -Denholm -Denys -Desmond -Devin -Diamond -Dina -Dolores -Dominic -Donella -Donna -Donny -Dorothy -Dortha -Driscoll -Duncan -Easter -Ebba -Edgar -Effie -Eliot -Eliott -Elizabeth -Elle -Elric -Elspet -Elwood -Emma -Emmanuel -Ermintrude -Esmeralda -Eugenia -Euphemia -Eustace -Eveleen -Evelina -Fay -Fitz -Flick -Floella -Flora -Flossie -Fortune -Francis -Frankie -Fulton -Garret -Gaye -Gaylord -Genette -Georgene -Geraldine -Gervase -Gina -Ginger -Gladwyn -Glenna -Goddard -Godwin -Goodwin -Gordon -Graeme -Gratian -Greta -Griselda -Gwenda -Gwenevere -Hadley -Haidee -Hailey -Hal -Haleigh -Happy -Hartley -Hayley -Heather -Hedley -Helen -Henderson -Hepsie -Hervey -Holden -Homer -Hope -Horatio -Hortensia -Huffie -Hugo -Iantha -Ileen -Innocent -Irene -Irvine -Jacaline -Jacquetta -Jacqui -Jake -Jakki -Jalen -Jamar -Jamie -Jamison -Janel -Janelle -Janette -Janie -Janina -Janine -Jasmine -Jaydon -Jaye -Jaylee -Jayne -Jaynie -Jeanna -Jeannie -Jeannine -Jeb -Jed -Jemmy -Jenifer -Jennie -Jera -Jere -Jeri -Jermaine -Jerrie -Jillian -Jillie -Jim -Joachim -Joetta -Joey -Johnathan -Johnny -Joi -Jonathon -Joni -Josepha -Josh -Josiah -Joye -Julia -July -Kaelea -Kaleigh -Karenza -Karly -Karyn -Kat -Kathy -Katlyn -Kayleigh -Keegan -Keira -Keith -Kellie -Kennard -Kerena -Kerensa -Keturah -Keziah -Kimberley -Lacy -Lakeisha -Lalla -Lanny -Latanya -Launce -Laurencia -Laurissa -Leeann -Leia -Leland -Lennox -Leroi -Lessie -Leta -Lexia -Lexus -Linden -Lindsie -Lindy -Linton -Lockie -Loreto -Lori -Lorin -Lou -Luanne -Lucian -Luvenia -Lyndsey -Lynn -Lynsey -Lynwood -Mabelle -Macey -Madyson -Maegan -Malachi -Malcolm -Manley -Marcia -Mariabella -Marilene -Marion -Marion -Marje -Marjory -Marlowe -Marlyn -Marshall -Maryann -Maudie -Maurene -May -Maynard -Melvyn -Merideth -Merrilyn -Meryl -Micheal -Mike -Milton -Minnie -Monna -Montague -Monte -Monty -Muriel -Mya -Myriam -Myrtie -Nan -Nathaniel -Nelle -Nena -Nerissa -Netta -Nettie -Nikolas -Noah -Nonie -Nova -Nowell -Nydia -Olive -Oralie -Osbert -Osborn -Osborne -Osmund -Paget -Patience -Patrick -Patton -Pauleen -Pene -Percival -Peregrine -Pheobe -Phoebe -Phyliss -Phyllida -Phyllis -Porsche -Prosper -Prue -Quanah -Quiana -Raelene -Rain -Randa -Randal -Rastus -Rayner -Rebeckah -Reene -Renie -Reuben -Rexana -Reynard -Rhetta -Rich -Richie -Rick -Rickena -Rickey -Rickie -Rodger -Roger -Romayne -Ronnette -Roscoe -Rosemary -Roswell -Royce -Rubye -Rusty -Sabella -Sachie -Sal -Sally -Saranna -Sawyer -Scotty -Seneca -Seymour -Shan -Shana -Shanika -Shannah -Shannon -Shantae -Sharalyn -Sharla -Sheri -Sherie -Sherill -Sherri -Shiloh -Simon -Sissy -Sloan -Sophie -Sorrel -Spike -Star -Steph -Stephany -Sue -Sukie -Sunshine -Susanna -Susannah -Suzan -Suzy -Sybil -Syd -Sydney -Tamika -Tamsin -Tania -Tansy -Tatyanna -Taylor -Tel -Terrell -Tiffany -Tod -Tolly -Topaz -Tori -Tracee -Tracey -Trinity -Tye -Uland -Ulric -Ulyssa -Valary -Vaughn -Verna -Vince -Vinnie -Vivyan -Walter -Ward -Warner -Wayne -Wendi -Whitaker -William -Willy -Winifred -Wisdom -Woodrow -Woody -Wynonna -Wynter -Yasmin -Yolanda -Ysabel -Zack -Zeke -Zelda -Zune -Jacob -Michael -Ethan -Joshua -Daniel -Alexander -Anthony -William -Christopher -Matthew -Jayden -Andrew -Joseph -David -Noah -Aiden -James -Ryan -Logan -John -Nathan -Elijah -Christian -Gabriel -Benjamin -Jonathan -Tyler -Samuel -Nicholas -Gavin -Dylan -Jackson -Brandon -Caleb -Mason -Angel -Isaac -Evan -Jack -Kevin -Jose -Isaiah -Luke -Landon -Justin -Lucas -Zachary -Jordan -Robert -Aaron -Brayden -Thomas -Cameron -Hunter -Austin -Adrian -Connor -Owen -Aidan -Jason -Julian -Wyatt -Charles -Luis -Carter -Juan -Chase -Diego -Jeremiah -Brody -Xavier -Adam -Carlos -Sebastian -Liam -Hayden -Nathaniel -Henry -Jesus -Ian -Tristan -Bryan -Sean -Cole -Alex -Eric -Brian -Jaden -Carson -Blake -Ayden -Cooper -Dominic -Brady -Caden -Josiah -Kyle -Colton -Kaden -Eli -Miguel -Antonio -Parker -Steven -Alejandro -Riley -Richard -Timothy -Devin -Jesse -Victor -Jake -Joel -Colin -Kaleb -Bryce -Levi -Oliver -Oscar -Vincent -Ashton -Cody -Micah -Preston -Marcus -Max -Patrick -Seth -Jeremy -Peyton -Nolan -Ivan -Damian -Maxwell -Alan -Kenneth -Jonah -Jorge -Mark -Giovanni -Eduardo -Grant -Collin -Gage -Omar -Emmanuel -Trevor -Edward -Ricardo -Cristian -Nicolas -Kayden -George -Jaxon -Paul -Braden -Elias -Andres -Derek -Garrett -Tanner -Malachi -Conner -Fernando -Cesar -Javier -Miles -Jaiden -Alexis -Leonardo -Santiago -Francisco -Cayden -Shane -Edwin -Hudson -Travis -Bryson -Erick -Jace -Hector -Josue -Peter -Jaylen -Mario -Manuel -Abraham -Grayson -Damien -Kaiden -Spencer -Stephen -Edgar -Wesley -Shawn -Trenton -Jared -Jeffrey -Landen -Johnathan -Bradley -Braxton -Ryder -Camden -Roman -Asher -Brendan -Maddox -Sergio -Israel -Andy -Lincoln -Erik -Donovan -Raymond -Avery -Rylan -Dalton -Harrison -Andre -Martin -Keegan -Marco -Jude -Sawyer -Dakota -Leo -Calvin -Kai -Drake -Troy -Zion -Clayton -Roberto -Zane -Gregory -Tucker -Rafael -Kingston -Dominick -Ezekiel -Griffin -Devon -Drew -Lukas -Johnny -Ty -Pedro -Tyson -Caiden -Mateo -Braylon -Cash -Aden -Chance -Taylor -Marcos -Maximus -Ruben -Emanuel -Simon -Corbin -Brennan -Dillon -Skyler -Myles -Xander -Jaxson -Dawson -Kameron -Kyler -Axel -Colby -Jonas -Joaquin -Payton -Brock -Frank -Enrique -Quinn -Emilio -Malik -Grady -Angelo -Julio -Derrick -Raul -Fabian -Corey -Gerardo -Dante -Ezra -Armando -Allen -Theodore -Gael -Amir -Zander -Adan -Maximilian -Randy -Easton -Dustin -Luca -Phillip -Julius -Charlie -Ronald -Jakob -Cade -Brett -Trent -Silas -Keith -Emiliano -Trey -Jalen -Darius -Lane -Jerry -Jaime -Scott -Graham -Weston -Braydon -Anderson -Rodrigo -Pablo -Saul -Danny -Donald -Elliot -Brayan -Dallas -Lorenzo -Casey -Mitchell -Alberto -Tristen -Rowan -Jayson -Gustavo -Aaden -Amari -Dean -Braeden -Declan -Chris -Ismael -Dane -Louis -Arturo -Brenden -Felix -Jimmy -Cohen -Tony -Holden -Reid -Abel -Bennett -Zackary -Arthur -Nehemiah -Ricky -Esteban -Cruz -Finn -Mauricio -Dennis -Keaton -Albert -Marvin -Mathew -Larry -Moises -Issac -Philip -Quentin -Curtis -Greyson -Jameson -Everett -Jayce -Darren -Elliott -Uriel -Alfredo -Hugo -Alec -Jamari -Marshall -Walter -Judah -Jay -Lance -Beau -Ali -Landyn -Yahir -Phoenix -Nickolas -Kobe -Bryant -Maurice -Russell -Leland -Colten -Reed -Davis -Joe -Ernesto -Desmond -Kade -Reece -Morgan -Ramon -Rocco -Orlando -Ryker -Brodie -Paxton -Jacoby -Douglas -Kristopher -Gary -Lawrence -Izaiah -Solomon -Nikolas -Mekhi -Justice -Tate -Jaydon -Salvador -Shaun -Alvin -Eddie -Kane -Davion -Zachariah -Dorian -Titus -Kellen -Camron -Isiah -Javon -Nasir -Milo -Johan -Byron -Jasper -Jonathon -Chad -Marc -Kelvin -Chandler -Sam -Cory -Deandre -River -Reese -Roger -Quinton -Talon -Romeo -Franklin -Noel -Alijah -Guillermo -Gunner -Damon -Jadon -Emerson -Micheal -Bruce -Terry -Kolton -Melvin -Beckett -Porter -August -Brycen -Dayton -Jamarion -Leonel -Karson -Zayden -Keagan -Carl -Khalil -Cristopher -Nelson -Braiden -Moses -Isaias -Roy -Triston -Walker -Kale -Emma -Isabella -Emily -Madison -Ava -Olivia -Sophia -Abigail -Elizabeth -Chloe -Samantha -Addison -Natalie -Mia -Alexis -Alyssa -Hannah -Ashley -Ella -Sarah -Grace -Taylor -Brianna -Lily -Hailey -Anna -Victoria -Kayla -Lillian -Lauren -Kaylee -Allison -Savannah -Nevaeh -Gabriella -Sofia -Makayla -Avery -Riley -Julia -Leah -Aubrey -Jasmine -Audrey -Katherine -Morgan -Brooklyn -Destiny -Sydney -Alexa -Kylie -Brooke -Kaitlyn -Evelyn -Layla -Madeline -Kimberly -Zoe -Jessica -Peyton -Alexandra -Claire -Madelyn -Maria -Mackenzie -Arianna -Jocelyn -Amelia -Angelina -Trinity -Andrea -Maya -Valeria -Sophie -Rachel -Vanessa -Aaliyah -Mariah -Gabrielle -Katelyn -Ariana -Bailey -Camila -Jennifer -Melanie -Gianna -Charlotte -Paige -Autumn -Payton -Faith -Sara -Isabelle -Caroline -Genesis -Isabel -Mary -Zoey -Gracie -Megan -Haley -Mya -Michelle -Molly -Stephanie -Nicole -Jenna -Natalia -Sadie -Jada -Serenity -Lucy -Ruby -Eva -Kennedy -Rylee -Jayla -Naomi -Rebecca -Lydia -Daniela -Bella -Keira -Adriana -Lilly -Hayden -Miley -Katie -Jade -Jordan -Gabriela -Amy -Angela -Melissa -Valerie -Giselle -Diana -Amanda -Kate -Laila -Reagan -Jordyn -Kylee -Danielle -Briana -Marley -Leslie -Kendall -Catherine -Liliana -Mckenzie -Jacqueline -Ashlyn -Reese -Marissa -London -Juliana -Shelby -Cheyenne -Angel -Daisy -Makenzie -Miranda -Erin -Amber -Alana -Ellie -Breanna -Ana -Mikayla -Summer -Piper -Adrianna -Jillian -Sierra -Jayden -Sienna -Alicia -Lila -Margaret -Alivia -Brooklynn -Karen -Violet -Sabrina -Stella -Aniyah -Annabelle -Alexandria -Kathryn -Skylar -Aliyah -Delilah -Julianna -Kelsey -Khloe -Carly -Amaya -Mariana -Christina -Alondra -Tessa -Eliana -Bianca -Jazmin -Clara -Vivian -Josephine -Delaney -Scarlett -Elena -Cadence -Alexia -Maggie -Laura -Nora -Ariel -Elise -Nadia -Mckenna -Chelsea -Lyla -Alaina -Jasmin -Hope -Leila -Caitlyn -Cassidy -Makenna -Allie -Izabella -Eden -Callie -Haylee -Caitlin -Kendra -Karina -Kyra -Kayleigh -Addyson -Kiara -Jazmine -Karla -Camryn -Alina -Lola -Kyla -Kelly -Fatima -Tiffany -Kira -Crystal -Mallory -Esmeralda -Alejandra -Eleanor -Angelica -Jayda -Abby -Kara -Veronica -Carmen -Jamie -Ryleigh -Valentina -Allyson -Dakota -Kamryn -Courtney -Cecilia -Madeleine -Aniya -Alison -Esther -Heaven -Aubree -Lindsey -Leilani -Nina -Melody -Macy -Ashlynn -Joanna -Cassandra -Alayna -Kaydence -Madilyn -Aurora -Heidi -Emerson -Kimora -Madalyn -Erica -Josie -Katelynn -Guadalupe -Harper -Ivy -Lexi -Camille -Savanna -Dulce -Daniella -Lucia -Emely -Joselyn -Kiley -Kailey -Miriam -Cynthia -Rihanna -Georgia -Rylie -Harmony -Kiera -Kyleigh -Monica -Bethany -Kaylie -Cameron -Teagan -Cora -Brynn -Ciara -Genevieve -Alice -Maddison -Eliza -Tatiana -Jaelyn -Erika -Ximena -April -Marely -Julie -Danica -Presley -Brielle -Julissa -Angie -Iris -Brenda -Hazel -Rose -Malia -Shayla -Fiona -Phoebe -Nayeli -Paola -Kaelyn -Selena -Audrina -Rebekah -Carolina -Janiyah -Michaela -Penelope -Janiya -Anastasia -Adeline -Ruth -Sasha -Denise -Holly -Madisyn -Hanna -Tatum -Marlee -Nataly -Helen -Janelle -Lizbeth -Serena -Anya -Jaslene -Kaylin -Jazlyn -Nancy -Lindsay -Desiree -Hayley -Itzel -Imani -Madelynn -Asia -Kadence -Madyson -Talia -Jane -Kayden -Annie -Amari -Bridget -Raegan -Jadyn -Celeste -Jimena -Luna -Yasmin -Emilia -Annika -Estrella -Sarai -Lacey -Ayla -Alessandra -Willow -Nyla -Dayana -Lilah -Lilliana -Natasha -Hadley -Harley -Priscilla -Claudia -Allisson -Baylee -Brenna -Brittany -Skyler -Fernanda -Danna -Melany -Cali -Lia -Macie -Lyric -Logan -Gloria -Lana -Mylee -Cindy -Lilian -Amira -Anahi -Alissa -Anaya -Lena -Ainsley -Sandra -Noelle -Marisol -Meredith -Kailyn -Lesly -Johanna -Diamond -Evangeline -Juliet -Kathleen -Meghan -Paisley -Athena -Hailee -Rosa -Wendy -Emilee -Sage -Alanna -Elaina -Cara -Nia -Paris -Casey -Dana -Emery -Rowan -Aubrie -Kaitlin -Jaden -Kenzie -Kiana -Viviana -Norah -Lauryn -Perla -Amiyah -Alyson -Rachael -Shannon -Aileen -Miracle -Lillie -Danika -Heather -Kassidy -Taryn -Tori -Francesca -Kristen -Amya -Elle -Kristina -Cheyanne -Haylie -Patricia -Anne -Samara +Abel +Adolph +Aida +Alan +Alden +Alex +Alexa +Alexandria +Alexis +Alexus +Alfred +Alfreda +Alger +Alisa +Alisya +Allegra +Allegria +Allen +Alma +Alysha +Alyssia +Amaryllis +Ambrosine +Amos +Angel +Anjelica +Anne +Arabella +Archie +Arielle +Arleen +Arn +Art +Ashlie +Astor +Aubrey +Avalon +Averill +Baldric +Barbra +Bartholomew +Beckah +Becky +Bernice +Bertrand +Bethney +Betsy +Bidelia +Bill +Blake +Brayden +Breanne +Brendan +Brittani +Bronte +Brooke +Bryce +Burt +Byrne +Byron +Bysshe +Cadence +Calanthia +Caleigh +Camryn +Candace +Candice +Candis +Canute +Carly +Carlyle +Carolyn +Carry +Carter +Caryl +Casimir +Cassian +Cecily +Charlton +Cherette +Cheri +Cherry +Chip +Christa +Christiana +Christobel +Claribel +Clark +Claudius +Clement +Cleveland +Cliff +Clinton +Clitus +Clover +Collin +Coreen +Corrine +Cy +Cynthia +Dalya +Damian +Daniella +Danny +Darcey +Darell +Daria +Darin +Dayna +Deangelo +Debbi +Dee +Deena +Della +Delma +Denholm +Denys +Desmond +Devin +Diamond +Dina +Dolores +Dominic +Donella +Donna +Donny +Dorothy +Dortha +Driscoll +Duncan +Easter +Ebba +Edgar +Effie +Eliot +Eliott +Elizabeth +Elle +Elric +Elspet +Elwood +Emma +Emmanuel +Ermintrude +Esmeralda +Eugenia +Euphemia +Eustace +Eveleen +Evelina +Fay +Fitz +Flick +Floella +Flora +Flossie +Fortune +Francis +Frankie +Fulton +Garret +Gaye +Gaylord +Genette +Georgene +Geraldine +Gervase +Gina +Ginger +Gladwyn +Glenna +Goddard +Godwin +Goodwin +Gordon +Graeme +Gratian +Greta +Griselda +Gwenda +Gwenevere +Hadley +Haidee +Hailey +Hal +Haleigh +Happy +Hartley +Hayley +Heather +Hedley +Helen +Henderson +Hepsie +Hervey +Holden +Homer +Hope +Horatio +Hortensia +Huffie +Hugo +Iantha +Ileen +Innocent +Irene +Irvine +Jacaline +Jacquetta +Jacqui +Jake +Jakki +Jalen +Jamar +Jamie +Jamison +Janel +Janelle +Janette +Janie +Janina +Janine +Jasmine +Jaydon +Jaye +Jaylee +Jayne +Jaynie +Jeanna +Jeannie +Jeannine +Jeb +Jed +Jemmy +Jenifer +Jennie +Jera +Jere +Jeri +Jermaine +Jerrie +Jillian +Jillie +Jim +Joachim +Joetta +Joey +Johnathan +Johnny +Joi +Jonathon +Joni +Josepha +Josh +Josiah +Joye +Julia +July +Kaelea +Kaleigh +Karenza +Karly +Karyn +Kat +Kathy +Katlyn +Kayleigh +Keegan +Keira +Keith +Kellie +Kennard +Kerena +Kerensa +Keturah +Keziah +Kimberley +Lacy +Lakeisha +Lalla +Lanny +Latanya +Launce +Laurencia +Laurissa +Leeann +Leia +Leland +Lennox +Leroi +Lessie +Leta +Lexia +Lexus +Linden +Lindsie +Lindy +Linton +Lockie +Loreto +Lori +Lorin +Lou +Luanne +Lucian +Luvenia +Lyndsey +Lynn +Lynsey +Lynwood +Mabelle +Macey +Madyson +Maegan +Malachi +Malcolm +Manley +Marcia +Mariabella +Marilene +Marion +Marion +Marje +Marjory +Marlowe +Marlyn +Marshall +Maryann +Maudie +Maurene +May +Maynard +Melvyn +Merideth +Merrilyn +Meryl +Micheal +Mike +Milton +Minnie +Monna +Montague +Monte +Monty +Muriel +Mya +Myriam +Myrtie +Nan +Nathaniel +Nelle +Nena +Nerissa +Netta +Nettie +Nikolas +Noah +Nonie +Nova +Nowell +Nydia +Olive +Oralie +Osbert +Osborn +Osborne +Osmund +Paget +Patience +Patrick +Patton +Pauleen +Pene +Percival +Peregrine +Pheobe +Phoebe +Phyliss +Phyllida +Phyllis +Porsche +Prosper +Prue +Quanah +Quiana +Raelene +Rain +Randa +Randal +Rastus +Rayner +Rebeckah +Reene +Renie +Reuben +Rexana +Reynard +Rhetta +Rich +Richie +Rick +Rickena +Rickey +Rickie +Rodger +Roger +Romayne +Ronnette +Roscoe +Rosemary +Roswell +Royce +Rubye +Rusty +Sabella +Sachie +Sal +Sally +Saranna +Sawyer +Scotty +Seneca +Seymour +Shan +Shana +Shanika +Shannah +Shannon +Shantae +Sharalyn +Sharla +Sheri +Sherie +Sherill +Sherri +Shiloh +Simon +Sissy +Sloan +Sophie +Sorrel +Spike +Star +Steph +Stephany +Sue +Sukie +Sunshine +Susanna +Susannah +Suzan +Suzy +Sybil +Syd +Sydney +Tamika +Tamsin +Tania +Tansy +Tatyanna +Taylor +Tel +Terrell +Tiffany +Tod +Tolly +Topaz +Tori +Tracee +Tracey +Trinity +Tye +Uland +Ulric +Ulyssa +Valary +Vaughn +Verna +Vince +Vinnie +Vivyan +Walter +Ward +Warner +Wayne +Wendi +Whitaker +William +Willy +Winifred +Wisdom +Woodrow +Woody +Wynonna +Wynter +Yasmin +Yolanda +Ysabel +Zack +Zeke +Zelda +Zune +Jacob +Michael +Ethan +Joshua +Daniel +Alexander +Anthony +William +Christopher +Matthew +Jayden +Andrew +Joseph +David +Noah +Aiden +James +Ryan +Logan +John +Nathan +Elijah +Christian +Gabriel +Benjamin +Jonathan +Tyler +Samuel +Nicholas +Gavin +Dylan +Jackson +Brandon +Caleb +Mason +Angel +Isaac +Evan +Jack +Kevin +Jose +Isaiah +Luke +Landon +Justin +Lucas +Zachary +Jordan +Robert +Aaron +Brayden +Thomas +Cameron +Hunter +Austin +Adrian +Connor +Owen +Aidan +Jason +Julian +Wyatt +Charles +Luis +Carter +Juan +Chase +Diego +Jeremiah +Brody +Xavier +Adam +Carlos +Sebastian +Liam +Hayden +Nathaniel +Henry +Jesus +Ian +Tristan +Bryan +Sean +Cole +Alex +Eric +Brian +Jaden +Carson +Blake +Ayden +Cooper +Dominic +Brady +Caden +Josiah +Kyle +Colton +Kaden +Eli +Miguel +Antonio +Parker +Steven +Alejandro +Riley +Richard +Timothy +Devin +Jesse +Victor +Jake +Joel +Colin +Kaleb +Bryce +Levi +Oliver +Oscar +Vincent +Ashton +Cody +Micah +Preston +Marcus +Max +Patrick +Seth +Jeremy +Peyton +Nolan +Ivan +Damian +Maxwell +Alan +Kenneth +Jonah +Jorge +Mark +Giovanni +Eduardo +Grant +Collin +Gage +Omar +Emmanuel +Trevor +Edward +Ricardo +Cristian +Nicolas +Kayden +George +Jaxon +Paul +Braden +Elias +Andres +Derek +Garrett +Tanner +Malachi +Conner +Fernando +Cesar +Javier +Miles +Jaiden +Alexis +Leonardo +Santiago +Francisco +Cayden +Shane +Edwin +Hudson +Travis +Bryson +Erick +Jace +Hector +Josue +Peter +Jaylen +Mario +Manuel +Abraham +Grayson +Damien +Kaiden +Spencer +Stephen +Edgar +Wesley +Shawn +Trenton +Jared +Jeffrey +Landen +Johnathan +Bradley +Braxton +Ryder +Camden +Roman +Asher +Brendan +Maddox +Sergio +Israel +Andy +Lincoln +Erik +Donovan +Raymond +Avery +Rylan +Dalton +Harrison +Andre +Martin +Keegan +Marco +Jude +Sawyer +Dakota +Leo +Calvin +Kai +Drake +Troy +Zion +Clayton +Roberto +Zane +Gregory +Tucker +Rafael +Kingston +Dominick +Ezekiel +Griffin +Devon +Drew +Lukas +Johnny +Ty +Pedro +Tyson +Caiden +Mateo +Braylon +Cash +Aden +Chance +Taylor +Marcos +Maximus +Ruben +Emanuel +Simon +Corbin +Brennan +Dillon +Skyler +Myles +Xander +Jaxson +Dawson +Kameron +Kyler +Axel +Colby +Jonas +Joaquin +Payton +Brock +Frank +Enrique +Quinn +Emilio +Malik +Grady +Angelo +Julio +Derrick +Raul +Fabian +Corey +Gerardo +Dante +Ezra +Armando +Allen +Theodore +Gael +Amir +Zander +Adan +Maximilian +Randy +Easton +Dustin +Luca +Phillip +Julius +Charlie +Ronald +Jakob +Cade +Brett +Trent +Silas +Keith +Emiliano +Trey +Jalen +Darius +Lane +Jerry +Jaime +Scott +Graham +Weston +Braydon +Anderson +Rodrigo +Pablo +Saul +Danny +Donald +Elliot +Brayan +Dallas +Lorenzo +Casey +Mitchell +Alberto +Tristen +Rowan +Jayson +Gustavo +Aaden +Amari +Dean +Braeden +Declan +Chris +Ismael +Dane +Louis +Arturo +Brenden +Felix +Jimmy +Cohen +Tony +Holden +Reid +Abel +Bennett +Zackary +Arthur +Nehemiah +Ricky +Esteban +Cruz +Finn +Mauricio +Dennis +Keaton +Albert +Marvin +Mathew +Larry +Moises +Issac +Philip +Quentin +Curtis +Greyson +Jameson +Everett +Jayce +Darren +Elliott +Uriel +Alfredo +Hugo +Alec +Jamari +Marshall +Walter +Judah +Jay +Lance +Beau +Ali +Landyn +Yahir +Phoenix +Nickolas +Kobe +Bryant +Maurice +Russell +Leland +Colten +Reed +Davis +Joe +Ernesto +Desmond +Kade +Reece +Morgan +Ramon +Rocco +Orlando +Ryker +Brodie +Paxton +Jacoby +Douglas +Kristopher +Gary +Lawrence +Izaiah +Solomon +Nikolas +Mekhi +Justice +Tate +Jaydon +Salvador +Shaun +Alvin +Eddie +Kane +Davion +Zachariah +Dorian +Titus +Kellen +Camron +Isiah +Javon +Nasir +Milo +Johan +Byron +Jasper +Jonathon +Chad +Marc +Kelvin +Chandler +Sam +Cory +Deandre +River +Reese +Roger +Quinton +Talon +Romeo +Franklin +Noel +Alijah +Guillermo +Gunner +Damon +Jadon +Emerson +Micheal +Bruce +Terry +Kolton +Melvin +Beckett +Porter +August +Brycen +Dayton +Jamarion +Leonel +Karson +Zayden +Keagan +Carl +Khalil +Cristopher +Nelson +Braiden +Moses +Isaias +Roy +Triston +Walker +Kale +Emma +Isabella +Emily +Madison +Ava +Olivia +Sophia +Abigail +Elizabeth +Chloe +Samantha +Addison +Natalie +Mia +Alexis +Alyssa +Hannah +Ashley +Ella +Sarah +Grace +Taylor +Brianna +Lily +Hailey +Anna +Victoria +Kayla +Lillian +Lauren +Kaylee +Allison +Savannah +Nevaeh +Gabriella +Sofia +Makayla +Avery +Riley +Julia +Leah +Aubrey +Jasmine +Audrey +Katherine +Morgan +Brooklyn +Destiny +Sydney +Alexa +Kylie +Brooke +Kaitlyn +Evelyn +Layla +Madeline +Kimberly +Zoe +Jessica +Peyton +Alexandra +Claire +Madelyn +Maria +Mackenzie +Arianna +Jocelyn +Amelia +Angelina +Trinity +Andrea +Maya +Valeria +Sophie +Rachel +Vanessa +Aaliyah +Mariah +Gabrielle +Katelyn +Ariana +Bailey +Camila +Jennifer +Melanie +Gianna +Charlotte +Paige +Autumn +Payton +Faith +Sara +Isabelle +Caroline +Genesis +Isabel +Mary +Zoey +Gracie +Megan +Haley +Mya +Michelle +Molly +Stephanie +Nicole +Jenna +Natalia +Sadie +Jada +Serenity +Lucy +Ruby +Eva +Kennedy +Rylee +Jayla +Naomi +Rebecca +Lydia +Daniela +Bella +Keira +Adriana +Lilly +Hayden +Miley +Katie +Jade +Jordan +Gabriela +Amy +Angela +Melissa +Valerie +Giselle +Diana +Amanda +Kate +Laila +Reagan +Jordyn +Kylee +Danielle +Briana +Marley +Leslie +Kendall +Catherine +Liliana +Mckenzie +Jacqueline +Ashlyn +Reese +Marissa +London +Juliana +Shelby +Cheyenne +Angel +Daisy +Makenzie +Miranda +Erin +Amber +Alana +Ellie +Breanna +Ana +Mikayla +Summer +Piper +Adrianna +Jillian +Sierra +Jayden +Sienna +Alicia +Lila +Margaret +Alivia +Brooklynn +Karen +Violet +Sabrina +Stella +Aniyah +Annabelle +Alexandria +Kathryn +Skylar +Aliyah +Delilah +Julianna +Kelsey +Khloe +Carly +Amaya +Mariana +Christina +Alondra +Tessa +Eliana +Bianca +Jazmin +Clara +Vivian +Josephine +Delaney +Scarlett +Elena +Cadence +Alexia +Maggie +Laura +Nora +Ariel +Elise +Nadia +Mckenna +Chelsea +Lyla +Alaina +Jasmin +Hope +Leila +Caitlyn +Cassidy +Makenna +Allie +Izabella +Eden +Callie +Haylee +Caitlin +Kendra +Karina +Kyra +Kayleigh +Addyson +Kiara +Jazmine +Karla +Camryn +Alina +Lola +Kyla +Kelly +Fatima +Tiffany +Kira +Crystal +Mallory +Esmeralda +Alejandra +Eleanor +Angelica +Jayda +Abby +Kara +Veronica +Carmen +Jamie +Ryleigh +Valentina +Allyson +Dakota +Kamryn +Courtney +Cecilia +Madeleine +Aniya +Alison +Esther +Heaven +Aubree +Lindsey +Leilani +Nina +Melody +Macy +Ashlynn +Joanna +Cassandra +Alayna +Kaydence +Madilyn +Aurora +Heidi +Emerson +Kimora +Madalyn +Erica +Josie +Katelynn +Guadalupe +Harper +Ivy +Lexi +Camille +Savanna +Dulce +Daniella +Lucia +Emely +Joselyn +Kiley +Kailey +Miriam +Cynthia +Rihanna +Georgia +Rylie +Harmony +Kiera +Kyleigh +Monica +Bethany +Kaylie +Cameron +Teagan +Cora +Brynn +Ciara +Genevieve +Alice +Maddison +Eliza +Tatiana +Jaelyn +Erika +Ximena +April +Marely +Julie +Danica +Presley +Brielle +Julissa +Angie +Iris +Brenda +Hazel +Rose +Malia +Shayla +Fiona +Phoebe +Nayeli +Paola +Kaelyn +Selena +Audrina +Rebekah +Carolina +Janiyah +Michaela +Penelope +Janiya +Anastasia +Adeline +Ruth +Sasha +Denise +Holly +Madisyn +Hanna +Tatum +Marlee +Nataly +Helen +Janelle +Lizbeth +Serena +Anya +Jaslene +Kaylin +Jazlyn +Nancy +Lindsay +Desiree +Hayley +Itzel +Imani +Madelynn +Asia +Kadence +Madyson +Talia +Jane +Kayden +Annie +Amari +Bridget +Raegan +Jadyn +Celeste +Jimena +Luna +Yasmin +Emilia +Annika +Estrella +Sarai +Lacey +Ayla +Alessandra +Willow +Nyla +Dayana +Lilah +Lilliana +Natasha +Hadley +Harley +Priscilla +Claudia +Allisson +Baylee +Brenna +Brittany +Skyler +Fernanda +Danna +Melany +Cali +Lia +Macie +Lyric +Logan +Gloria +Lana +Mylee +Cindy +Lilian +Amira +Anahi +Alissa +Anaya +Lena +Ainsley +Sandra +Noelle +Marisol +Meredith +Kailyn +Lesly +Johanna +Diamond +Evangeline +Juliet +Kathleen +Meghan +Paisley +Athena +Hailee +Rosa +Wendy +Emilee +Sage +Alanna +Elaina +Cara +Nia +Paris +Casey +Dana +Emery +Rowan +Aubrie +Kaitlin +Jaden +Kenzie +Kiana +Viviana +Norah +Lauryn +Perla +Amiyah +Alyson +Rachael +Shannon +Aileen +Miracle +Lillie +Danika +Heather +Kassidy +Taryn +Tori +Francesca +Kristen +Amya +Elle +Kristina +Cheyanne +Haylie +Patricia +Anne +Samara diff --git a/config/names/first_female.txt b/config/names/first_female.txt index b500f027efc..69057409915 100644 --- a/config/names/first_female.txt +++ b/config/names/first_female.txt @@ -1,807 +1,807 @@ -Aida -Alexa -Alexandria -Alexis -Alexus -Alfreda -Alisa -Alisya -Allegra -Allegria -Alma -Alysha -Alyssia -Amaryllis -Ambrosine -Angel -Anjelica -Anne -Arabella -Arielle -Arleen -Ashlie -Astor -Aubrey -Avalona -Averill -Barbara -Beckah -Becky -Bernice -Bethney -Betsy -Bidelia -Breanne -Brittani -Brooke -Cadence -Calanthia -Caleigh -Candace -Candice -Carly -Carlyle -Carolyn -Carry -Caryl -Cecily -Cherette -Cheri -Cherry -Christa -Christiana -Christobelle -Claribel -Clover -Coreen -Corrine -Cynthia -Dalya -Daniella -Daria -Dayna -Debbi -Dee -Deena -Della -Delma -Denys -Diamond -Dina -Dolores -Donella -Donna -Dorothy -Dortha -Easter -Ebba -Effie -Elizabeth -Elle -Emma -Ermintrude -Esmeralda -Eugenia -Euphemia -Eustace -Eveleen -Evelina -Fay -Floella -Flora -Flossie -Fortune -Genette -Georgene -Geraldine -Gervase -Gina -Ginger -Gladwyn -Glenna -Greta -Griselda -Gwenda -Gwenevere -Hadley -Haidee -Hailey -Hal -Haleigh -Hayley -Heather -Hedley -Helen -Hepsie -Hortensia -Iantha -Ileen -Innocent -Irene -Jacaline -Jacquetta -Jacqui -Jakki -Jalen -Janelle -Janette -Janie -Janina -Janine -Jasmine -Jaylee -Jaynie -Jeanna -Jeannie -Jeannine -Jenifer -Jennie -Jera -Jere -Jeri -Jillian -Jillie -Joetta -Joi -Joni -Josepha -Joye -Julia -July -Kaelea -Kaleigh -Karenza -Karly -Karyn -Kat -Kathy -Katlyn -Kayleigh -Keegan -Keira -Keith -Kellie -Kerena -Kerensa -Keturah -Kimberley -Lacy -Lakeisha -Lalla -Latanya -Laurencia -Laurissa -Leeann -Leia -Lessie -Leta -Lexia -Lexus -Lindsie -Lindy -Lockie -Lori -Lorin -Luanne -Lucian -Luvenia -Lyndsey -Lynn -Lynsey -Lynwood -Mabelle -Macey -Madyson -Maegan -Marcia -Mariabella -Marilene -Marion -Marje -Marjory -Marlowe -Marlyn -Marshall -Maryann -Maudie -Maurene -May -Merideth -Merrilyn -Meryl -Minnie -Monna -Muriel -Mya -Myriam -Myrtie -Nan -Nelle -Nena -Nerissa -Netta -Nettie -Nonie -Nova -Nowell -Nydia -Olive -Oralie -Patience -Pauleen -Pene -Peregrine -Pheobe -Phoebe -Phyliss -Phyllida -Phyllis -Porsche -Prosper -Prue -Quanah -Quiana -Raelene -Rain -Randa -Randal -Rebeckah -Reene -Renie -Rexana -Rhetta -Ronnette -Rosemary -Rubye -Sabella -Sachie -Sally -Saranna -Seneca -Shana -Shanika -Shannah -Shannon -Shantae -Sharalyn -Sharla -Sheri -Sherie -Sherill -Sherri -Sissy -Sophie -Star -Steph -Stephany -Sue -Sukie -Sunshine -Susanna -Susannah -Suzan -Suzy -Sydney -Tamika -Tania -Tansy -Tatyanna -Tiffany -Tolly -Topaz -Tori -Tracee -Tracey -Ulyssa -Valary -Verna -Vinnie -Vivyan -Wendi -Wisdom -Wynonna -Wynter -Yasmin -Yolanda -Ysabel -Zelda -Zune -Emma -Isabella -Emily -Madison -Ava -Olivia -Sophia -Abigail -Elizabeth -Chloe -Samantha -Addison -Natalie -Mia -Alexis -Alyssa -Hannah -Ashley -Ella -Sarah -Grace -Taylor -Brianna -Lily -Hailey -Anna -Victoria -Kayla -Lillian -Lauren -Kaylee -Allison -Savannah -Nevaeh -Gabriella -Sofia -Makayla -Avery -Riley -Julia -Leah -Aubrey -Jasmine -Audrey -Katherine -Morgan -Brooklyn -Destiny -Sydney -Alexa -Kylie -Brooke -Kaitlyn -Evelyn -Layla -Madeline -Kimberly -Zoe -Jessica -Peyton -Alexandra -Claire -Madelyn -Maria -Mackenzie -Arianna -Jocelyn -Amelia -Angelina -Trinity -Andrea -Maya -Valeria -Sophie -Rachel -Vanessa -Aaliyah -Mariah -Gabrielle -Katelyn -Ariana -Bailey -Camila -Jennifer -Melanie -Gianna -Charlotte -Paige -Autumn -Payton -Faith -Sara -Isabelle -Caroline -Isabel -Mary -Zoey -Gracie -Megan -Haley -Mya -Michelle -Molly -Stephanie -Nicole -Jenna -Natalia -Sadie -Jada -Serenity -Lucy -Ruby -Eva -Kennedy -Rylee -Jayla -Naomi -Rebecca -Lydia -Daniela -Bella -Keira -Adriana -Lilly -Hayden -Miley -Katie -Jade -Jordan -Gabriela -Amy -Angela -Melissa -Valerie -Giselle -Diana -Amanda -Kate -Laila -Reagan -Jordyn -Kylee -Danielle -Briana -Marley -Leslie -Kendall -Catherine -Liliana -Mckenzie -Jacqueline -Ashlyn -Reese -Marissa -London -Juliana -Shelby -Cheyenne -Angel -Daisy -Makenzie -Miranda -Erin -Amber -Alana -Ellie -Breanna -Ana -Mikayla -Summer -Piper -Adrianna -Jillian -Sierra -Jayden -Sienna -Alicia -Lila -Margaret -Alivia -Brooklynn -Karen -Violet -Sabrina -Stella -Aniyah -Annabelle -Alexandria -Kathryn -Skylar -Aliyah -Delilah -Julianna -Kelsey -Khloe -Carly -Amaya -Mariana -Christina -Alondra -Tessa -Eliana -Bianca -Jazmin -Clara -Vivian -Josephine -Delaney -Scarlett -Elena -Cadence -Alexia -Maggie -Laura -Nora -Ariel -Elise -Nadia -Mckenna -Chelsea -Lyla -Alaina -Jasmin -Hope -Leila -Caitlyn -Cassidy -Makenna -Allie -Izabella -Eden -Callie -Haylee -Caitlin -Kendra -Karina -Kyra -Kayleigh -Addyson -Kiara -Jazmine -Karla -Camryn -Alina -Lola -Kyla -Kelly -Fatima -Tiffany -Kira -Crystal -Mallory -Esmeralda -Alejandra -Eleanor -Angelica -Jayda -Abby -Kara -Veronica -Carmen -Jamie -Ryleigh -Valentina -Allyson -Dakota -Kamryn -Courtney -Cecilia -Madeleine -Aniya -Alison -Esther -Heaven -Aubree -Lindsey -Leilani -Nina -Melody -Macy -Ashlynn -Joanna -Cassandra -Alayna -Kaydence -Madilyn -Aurora -Heidi -Emerson -Kimora -Madalyn -Erica -Josie -Katelynn -Guadalupe -Harper -Ivy -Lexi -Camille -Savanna -Dulce -Daniella -Lucia -Emely -Joselyn -Kiley -Kailey -Miriam -Cynthia -Rihanna -Georgia -Rylie -Harmony -Kiera -Kyleigh -Monica -Bethany -Kaylie -Cameron -Teagan -Cora -Brynn -Ciara -Genevieve -Alice -Maddison -Eliza -Tatiana -Jaelyn -Erika -Ximena -April -Marely -Julie -Danica -Presley -Brielle -Julissa -Angie -Iris -Brenda -Hazel -Rose -Malia -Shayla -Fiona -Phoebe -Nayeli -Paola -Kaelyn -Selena -Audrina -Rebekah -Carolina -Janiyah -Michaela -Penelope -Janiya -Anastasia -Adeline -Ruth -Sasha -Denise -Holly -Madisyn -Hanna -Tatum -Marlee -Nataly -Helen -Janelle -Lizbeth -Serena -Anya -Jaslene -Kaylin -Jazlyn -Nancy -Lindsay -Desiree -Hayley -Itzel -Imani -Madelynn -Asia -Kadence -Madyson -Talia -Jane -Kayden -Annie -Amari -Bridget -Raegan -Jadyn -Celeste -Jimena -Luna -Yasmin -Emilia -Annika -Estrella -Sarai -Lacey -Ayla -Alessandra -Willow -Nyla -Dayana -Lilah -Lilliana -Natasha -Hadley -Harley -Priscilla -Claudia -Allisson -Baylee -Brenna -Brittany -Skyler -Fernanda -Danna -Melany -Cali -Lia -Macie -Lyric -Logan -Gloria -Lana -Mylee -Cindy -Lilian -Amira -Anahi -Alissa -Anaya -Lena -Ainsley -Sandra -Noelle -Marisol -Meredith -Kailyn -Lesly -Johanna -Diamond -Evangeline -Juliet -Kathleen -Meghan -Paisley -Athena -Hailee -Rosa -Wendy -Emilee -Sage -Alanna -Elaina -Cara -Nia -Paris -Casey -Dana -Emery -Rowan -Aubrie -Kaitlin -Jaden -Kenzie -Kiana -Viviana -Norah -Lauryn -Perla -Amiyah -Alyson -Rachael -Shannon -Aileen -Miracle -Lillie -Danika -Heather -Kassidy -Taryn -Tori -Francesca -Kristen -Amya -Elle -Kristina -Cheyanne -Haylie -Patricia -Anne +Aida +Alexa +Alexandria +Alexis +Alexus +Alfreda +Alisa +Alisya +Allegra +Allegria +Alma +Alysha +Alyssia +Amaryllis +Ambrosine +Angel +Anjelica +Anne +Arabella +Arielle +Arleen +Ashlie +Astor +Aubrey +Avalona +Averill +Barbara +Beckah +Becky +Bernice +Bethney +Betsy +Bidelia +Breanne +Brittani +Brooke +Cadence +Calanthia +Caleigh +Candace +Candice +Carly +Carlyle +Carolyn +Carry +Caryl +Cecily +Cherette +Cheri +Cherry +Christa +Christiana +Christobelle +Claribel +Clover +Coreen +Corrine +Cynthia +Dalya +Daniella +Daria +Dayna +Debbi +Dee +Deena +Della +Delma +Denys +Diamond +Dina +Dolores +Donella +Donna +Dorothy +Dortha +Easter +Ebba +Effie +Elizabeth +Elle +Emma +Ermintrude +Esmeralda +Eugenia +Euphemia +Eustace +Eveleen +Evelina +Fay +Floella +Flora +Flossie +Fortune +Genette +Georgene +Geraldine +Gervase +Gina +Ginger +Gladwyn +Glenna +Greta +Griselda +Gwenda +Gwenevere +Hadley +Haidee +Hailey +Hal +Haleigh +Hayley +Heather +Hedley +Helen +Hepsie +Hortensia +Iantha +Ileen +Innocent +Irene +Jacaline +Jacquetta +Jacqui +Jakki +Jalen +Janelle +Janette +Janie +Janina +Janine +Jasmine +Jaylee +Jaynie +Jeanna +Jeannie +Jeannine +Jenifer +Jennie +Jera +Jere +Jeri +Jillian +Jillie +Joetta +Joi +Joni +Josepha +Joye +Julia +July +Kaelea +Kaleigh +Karenza +Karly +Karyn +Kat +Kathy +Katlyn +Kayleigh +Keegan +Keira +Keith +Kellie +Kerena +Kerensa +Keturah +Kimberley +Lacy +Lakeisha +Lalla +Latanya +Laurencia +Laurissa +Leeann +Leia +Lessie +Leta +Lexia +Lexus +Lindsie +Lindy +Lockie +Lori +Lorin +Luanne +Lucian +Luvenia +Lyndsey +Lynn +Lynsey +Lynwood +Mabelle +Macey +Madyson +Maegan +Marcia +Mariabella +Marilene +Marion +Marje +Marjory +Marlowe +Marlyn +Marshall +Maryann +Maudie +Maurene +May +Merideth +Merrilyn +Meryl +Minnie +Monna +Muriel +Mya +Myriam +Myrtie +Nan +Nelle +Nena +Nerissa +Netta +Nettie +Nonie +Nova +Nowell +Nydia +Olive +Oralie +Patience +Pauleen +Pene +Peregrine +Pheobe +Phoebe +Phyliss +Phyllida +Phyllis +Porsche +Prosper +Prue +Quanah +Quiana +Raelene +Rain +Randa +Randal +Rebeckah +Reene +Renie +Rexana +Rhetta +Ronnette +Rosemary +Rubye +Sabella +Sachie +Sally +Saranna +Seneca +Shana +Shanika +Shannah +Shannon +Shantae +Sharalyn +Sharla +Sheri +Sherie +Sherill +Sherri +Sissy +Sophie +Star +Steph +Stephany +Sue +Sukie +Sunshine +Susanna +Susannah +Suzan +Suzy +Sydney +Tamika +Tania +Tansy +Tatyanna +Tiffany +Tolly +Topaz +Tori +Tracee +Tracey +Ulyssa +Valary +Verna +Vinnie +Vivyan +Wendi +Wisdom +Wynonna +Wynter +Yasmin +Yolanda +Ysabel +Zelda +Zune +Emma +Isabella +Emily +Madison +Ava +Olivia +Sophia +Abigail +Elizabeth +Chloe +Samantha +Addison +Natalie +Mia +Alexis +Alyssa +Hannah +Ashley +Ella +Sarah +Grace +Taylor +Brianna +Lily +Hailey +Anna +Victoria +Kayla +Lillian +Lauren +Kaylee +Allison +Savannah +Nevaeh +Gabriella +Sofia +Makayla +Avery +Riley +Julia +Leah +Aubrey +Jasmine +Audrey +Katherine +Morgan +Brooklyn +Destiny +Sydney +Alexa +Kylie +Brooke +Kaitlyn +Evelyn +Layla +Madeline +Kimberly +Zoe +Jessica +Peyton +Alexandra +Claire +Madelyn +Maria +Mackenzie +Arianna +Jocelyn +Amelia +Angelina +Trinity +Andrea +Maya +Valeria +Sophie +Rachel +Vanessa +Aaliyah +Mariah +Gabrielle +Katelyn +Ariana +Bailey +Camila +Jennifer +Melanie +Gianna +Charlotte +Paige +Autumn +Payton +Faith +Sara +Isabelle +Caroline +Isabel +Mary +Zoey +Gracie +Megan +Haley +Mya +Michelle +Molly +Stephanie +Nicole +Jenna +Natalia +Sadie +Jada +Serenity +Lucy +Ruby +Eva +Kennedy +Rylee +Jayla +Naomi +Rebecca +Lydia +Daniela +Bella +Keira +Adriana +Lilly +Hayden +Miley +Katie +Jade +Jordan +Gabriela +Amy +Angela +Melissa +Valerie +Giselle +Diana +Amanda +Kate +Laila +Reagan +Jordyn +Kylee +Danielle +Briana +Marley +Leslie +Kendall +Catherine +Liliana +Mckenzie +Jacqueline +Ashlyn +Reese +Marissa +London +Juliana +Shelby +Cheyenne +Angel +Daisy +Makenzie +Miranda +Erin +Amber +Alana +Ellie +Breanna +Ana +Mikayla +Summer +Piper +Adrianna +Jillian +Sierra +Jayden +Sienna +Alicia +Lila +Margaret +Alivia +Brooklynn +Karen +Violet +Sabrina +Stella +Aniyah +Annabelle +Alexandria +Kathryn +Skylar +Aliyah +Delilah +Julianna +Kelsey +Khloe +Carly +Amaya +Mariana +Christina +Alondra +Tessa +Eliana +Bianca +Jazmin +Clara +Vivian +Josephine +Delaney +Scarlett +Elena +Cadence +Alexia +Maggie +Laura +Nora +Ariel +Elise +Nadia +Mckenna +Chelsea +Lyla +Alaina +Jasmin +Hope +Leila +Caitlyn +Cassidy +Makenna +Allie +Izabella +Eden +Callie +Haylee +Caitlin +Kendra +Karina +Kyra +Kayleigh +Addyson +Kiara +Jazmine +Karla +Camryn +Alina +Lola +Kyla +Kelly +Fatima +Tiffany +Kira +Crystal +Mallory +Esmeralda +Alejandra +Eleanor +Angelica +Jayda +Abby +Kara +Veronica +Carmen +Jamie +Ryleigh +Valentina +Allyson +Dakota +Kamryn +Courtney +Cecilia +Madeleine +Aniya +Alison +Esther +Heaven +Aubree +Lindsey +Leilani +Nina +Melody +Macy +Ashlynn +Joanna +Cassandra +Alayna +Kaydence +Madilyn +Aurora +Heidi +Emerson +Kimora +Madalyn +Erica +Josie +Katelynn +Guadalupe +Harper +Ivy +Lexi +Camille +Savanna +Dulce +Daniella +Lucia +Emely +Joselyn +Kiley +Kailey +Miriam +Cynthia +Rihanna +Georgia +Rylie +Harmony +Kiera +Kyleigh +Monica +Bethany +Kaylie +Cameron +Teagan +Cora +Brynn +Ciara +Genevieve +Alice +Maddison +Eliza +Tatiana +Jaelyn +Erika +Ximena +April +Marely +Julie +Danica +Presley +Brielle +Julissa +Angie +Iris +Brenda +Hazel +Rose +Malia +Shayla +Fiona +Phoebe +Nayeli +Paola +Kaelyn +Selena +Audrina +Rebekah +Carolina +Janiyah +Michaela +Penelope +Janiya +Anastasia +Adeline +Ruth +Sasha +Denise +Holly +Madisyn +Hanna +Tatum +Marlee +Nataly +Helen +Janelle +Lizbeth +Serena +Anya +Jaslene +Kaylin +Jazlyn +Nancy +Lindsay +Desiree +Hayley +Itzel +Imani +Madelynn +Asia +Kadence +Madyson +Talia +Jane +Kayden +Annie +Amari +Bridget +Raegan +Jadyn +Celeste +Jimena +Luna +Yasmin +Emilia +Annika +Estrella +Sarai +Lacey +Ayla +Alessandra +Willow +Nyla +Dayana +Lilah +Lilliana +Natasha +Hadley +Harley +Priscilla +Claudia +Allisson +Baylee +Brenna +Brittany +Skyler +Fernanda +Danna +Melany +Cali +Lia +Macie +Lyric +Logan +Gloria +Lana +Mylee +Cindy +Lilian +Amira +Anahi +Alissa +Anaya +Lena +Ainsley +Sandra +Noelle +Marisol +Meredith +Kailyn +Lesly +Johanna +Diamond +Evangeline +Juliet +Kathleen +Meghan +Paisley +Athena +Hailee +Rosa +Wendy +Emilee +Sage +Alanna +Elaina +Cara +Nia +Paris +Casey +Dana +Emery +Rowan +Aubrie +Kaitlin +Jaden +Kenzie +Kiana +Viviana +Norah +Lauryn +Perla +Amiyah +Alyson +Rachael +Shannon +Aileen +Miracle +Lillie +Danika +Heather +Kassidy +Taryn +Tori +Francesca +Kristen +Amya +Elle +Kristina +Cheyanne +Haylie +Patricia +Anne Samara \ No newline at end of file diff --git a/config/names/first_male.txt b/config/names/first_male.txt index f2b03e16868..ebb8f6d2862 100644 --- a/config/names/first_male.txt +++ b/config/names/first_male.txt @@ -1,725 +1,725 @@ -Abel -Adolph -Alan -Alden -Alex -Alfred -Alger -Allen -Amos -Apple -Archie -Arnie -Art -Arthur -Baldric -Bartholomew -Bill -Blake -Brayden -Brendan -Brock -Bronte -Brick -Bruce -Bryce -Buck -Burt -Butch -Byrne -Byron -Camryn -Carl -Carter -Casimir -Cassian -Charles -Charlton -Chip -Clark -Claudius -Clement -Cleveland -Cliff -Clinton -Cletus -Collin -Crush -Cy -Damian -Danny -Darcey -Darell -Darin -Deangelo -Denholm -Desmond -Devin -Dirk -Dominic -Donny -Driscoll -Duke -Duncan -Edgar -Eliot -Eliott -Elric -Elwood -Emmanuel -Fenton -Fitz -Flick -Flint -Flip -Francis -Frank -Frankie -Fridge -Fulton -Gannon -Garret -Gary -Goddard -Godwin -Goodwin -Gordon -Graeme -Grandpa -Gratian -Grendel -Han -Harry -Hartley -Harvey -Henderson -Holden -Homer -Horatio -Huffie -Hungry -Hugo -Irvine -Jacob -Jake -Jamar -Jamie -Jamison -Janel -Jaydon -Jaye -Jayne -Jean-Luc -Jeb -Jed -Jemmy -Jermaine -Jerrie -Jim -Joachim -Joey -Johnathan -John -Johnny -Jonathon -Josh -Josiah -Kennard -Keziah -Lando -Lanny -Launce -Leland -Lennox -Lenny -Leonard -Leroy -Lief -Linden -Linton -Lorde -Loreto -Lou -Lucas -Luke -Malachi -Malcolm -Manley -Marion -Max -Maynard -Melvyn -Michael -Mike -Milton -Montague -Monte -Monty -Nat -Nathaniel -Nick -Nikolas -Noah -Opie -Osbert -Osborn -Osborne -Osmund -Oswald -Paget -Patrick -Patton -Percival -Persh -Rastus -Raymond -Rayner -Reuben -Reynard -Richard -Rodger -Roger -Romayne -Roscoe -Roswell -Royce -Rube -Rusty -Sal -Sawyer -Scotty -Seymour -Shane -Shiloh -Smoke -Simon -Sloan -Sorrel -Spike -Sybil -Syd -Tamsin -Taylor -Tel -Terrell -Tim -Timothy -Todd -Trip -Tye -Uland -Ulric -Vaughn -Vince -Vinny -Walter -Ward -Warner -Wayne -Whitaker -William -Willy -Woodrow -Zack -Zane -Zeke -Jacob -Michael -Ethan -Joshua -Daniel -Alexander -Anthony -William -Christopher -Matthew -Jayden -Andrew -Joseph -David -Noah -Aiden -James -Ryan -Logan -John -Nathan -Elijah -Christian -Gabriel -Benjamin -Jonathan -Tyler -Samuel -Nicholas -Gavin -Dylan -Jackson -Brandon -Caleb -Mason -Angel -Isaac -Evan -Jack -Kevin -Jose -Isaiah -Luke -Landon -Justin -Lucas -Zachary -Jordan -Robert -Aaron -Brayden -Thomas -Cameron -Hunter -Austin -Adrian -Connor -Owen -Aidan -Jason -Julian -Wyatt -Charles -Luis -Carter -Juan -Chase -Diego -Jeremiah -Brody -Xavier -Adam -Carlos -Sebastian -Liam -Hayden -Nathaniel -Henry -Jesus -Ian -Tristan -Bryan -Sean -Cole -Alex -Eric -Brian -Jaden -Carson -Blake -Ayden -Cooper -Dominic -Brady -Caden -Josiah -Kyle -Colton -Kaden -Eli -Miguel -Antonio -Parker -Steven -Alejandro -Riley -Richard -Timothy -Devin -Jesse -Victor -Jake -Joel -Colin -Kaleb -Bryce -Levi -Oliver -Oscar -Vincent -Ashton -Cody -Micah -Preston -Marcus -Max -Patrick -Seth -Jeremy -Peyton -Nolan -Ivan -Damian -Maxwell -Alan -Kenneth -Jonah -Jorge -Mark -Giovanni -Eduardo -Grant -Collin -Gage -Omar -Emmanuel -Trevor -Edward -Ricardo -Cristian -Nicolas -Kayden -George -Jaxon -Paul -Braden -Elias -Andres -Derek -Garrett -Tanner -Malachi -Conner -Fernando -Cesar -Javier -Miles -Jaiden -Alexis -Leonardo -Santiago -Francisco -Cayden -Shane -Edwin -Hudson -Travis -Bryson -Erick -Jace -Hector -Josue -Peter -Jaylen -Mario -Manuel -Abraham -Grayson -Damien -Kaiden -Spencer -Stephen -Edgar -Wesley -Shawn -Trenton -Jared -Jeffrey -Landen -Johnathan -Bradley -Braxton -Ryder -Camden -Roman -Asher -Brendan -Maddox -Sergio -Israel -Andy -Lincoln -Erik -Donovan -Raymond -Avery -Rylan -Dalton -Harrison -Andre -Martin -Keegan -Marco -Jude -Sawyer -Dakota -Leo -Calvin -Kai -Drake -Troy -Zion -Clayton -Roberto -Zane -Gregory -Tucker -Rafael -Kingston -Dominick -Ezekiel -Griffin -Devon -Drew -Lukas -Johnny -Ty -Pedro -Tyson -Caiden -Mateo -Braylon -Cash -Aden -Chance -Taylor -Marcos -Maximus -Ruben -Emanuel -Simon -Corbin -Brennan -Dillon -Skyler -Myles -Xander -Jaxson -Dawson -Kameron -Kyler -Axel -Colby -Jonas -Joaquin -Payton -Brock -Frank -Enrique -Quinn -Emilio -Malik -Grady -Angelo -Julio -Derrick -Raul -Fabian -Corey -Gerardo -Dante -Ezra -Armando -Allen -Theodore -Gael -Amir -Zander -Adan -Maximilian -Randy -Easton -Dustin -Luca -Phillip -Julius -Charlie -Ronald -Jakob -Cade -Brett -Trent -Silas -Keith -Emiliano -Trey -Jalen -Darius -Lane -Jerry -Jaime -Scott -Graham -Weston -Braydon -Anderson -Rodrigo -Pablo -Saul -Danny -Donald -Elliot -Brayan -Dallas -Lorenzo -Casey -Mitchell -Alberto -Tristen -Rowan -Jayson -Gustavo -Aaden -Amari -Dean -Braeden -Declan -Chris -Ismael -Dane -Louis -Arturo -Brenden -Felix -Jimmy -Cohen -Tony -Holden -Reid -Abel -Bennett -Zackary -Arthur -Nehemiah -Ricky -Esteban -Cruz -Finn -Mauricio -Dennis -Keaton -Albert -Marvin -Mathew -Larry -Moises -Issac -Philip -Quentin -Curtis -Greyson -Jameson -Everett -Jayce -Darren -Elliott -Uriel -Alfredo -Hugo -Alec -Jamari -Marshall -Walter -Judah -Jay -Lance -Beau -Ali -Landyn -Yahir -Phoenix -Nickolas -Kobe -Bryant -Maurice -Russell -Leland -Colten -Reed -Davis -Joe -Ernesto -Desmond -Kade -Reece -Morgan -Ramon -Rocco -Orlando -Ryker -Brodie -Paxton -Jacoby -Douglas -Kristopher -Gary -Lawrence -Izaiah -Solomon -Nikolas -Mekhi -Justice -Tate -Jaydon -Salvador -Shaun -Alvin -Eddie -Kane -Davion -Zachariah -Damien -Titus -Kellen -Camron -Isiah -Javon -Nasir -Milo -Johan -Byron -Jasper -Jonathon -Chad -Marc -Kelvin -Chandler -Sam -Cory -Deandre -River -Reese -Roger -Quinton -Talon -Romeo -Franklin -Noel -Alijah -Guillermo -Gunner -Damon -Jadon -Emerson -Micheal -Bruce -Terry -Kolton -Melvin -Beckett -Porter -August -Brycen -Dayton -Jamarion -Leonel -Karson -Zayden -Keagan -Carl -Khalil -Cristopher -Nelson -Braiden -Moses -Isaias -Roy -Triston -Walker +Abel +Adolph +Alan +Alden +Alex +Alfred +Alger +Allen +Amos +Apple +Archie +Arnie +Art +Arthur +Baldric +Bartholomew +Bill +Blake +Brayden +Brendan +Brock +Bronte +Brick +Bruce +Bryce +Buck +Burt +Butch +Byrne +Byron +Camryn +Carl +Carter +Casimir +Cassian +Charles +Charlton +Chip +Clark +Claudius +Clement +Cleveland +Cliff +Clinton +Cletus +Collin +Crush +Cy +Damian +Danny +Darcey +Darell +Darin +Deangelo +Denholm +Desmond +Devin +Dirk +Dominic +Donny +Driscoll +Duke +Duncan +Edgar +Eliot +Eliott +Elric +Elwood +Emmanuel +Fenton +Fitz +Flick +Flint +Flip +Francis +Frank +Frankie +Fridge +Fulton +Gannon +Garret +Gary +Goddard +Godwin +Goodwin +Gordon +Graeme +Grandpa +Gratian +Grendel +Han +Harry +Hartley +Harvey +Henderson +Holden +Homer +Horatio +Huffie +Hungry +Hugo +Irvine +Jacob +Jake +Jamar +Jamie +Jamison +Janel +Jaydon +Jaye +Jayne +Jean-Luc +Jeb +Jed +Jemmy +Jermaine +Jerrie +Jim +Joachim +Joey +Johnathan +John +Johnny +Jonathon +Josh +Josiah +Kennard +Keziah +Lando +Lanny +Launce +Leland +Lennox +Lenny +Leonard +Leroy +Lief +Linden +Linton +Lorde +Loreto +Lou +Lucas +Luke +Malachi +Malcolm +Manley +Marion +Max +Maynard +Melvyn +Michael +Mike +Milton +Montague +Monte +Monty +Nat +Nathaniel +Nick +Nikolas +Noah +Opie +Osbert +Osborn +Osborne +Osmund +Oswald +Paget +Patrick +Patton +Percival +Persh +Rastus +Raymond +Rayner +Reuben +Reynard +Richard +Rodger +Roger +Romayne +Roscoe +Roswell +Royce +Rube +Rusty +Sal +Sawyer +Scotty +Seymour +Shane +Shiloh +Smoke +Simon +Sloan +Sorrel +Spike +Sybil +Syd +Tamsin +Taylor +Tel +Terrell +Tim +Timothy +Todd +Trip +Tye +Uland +Ulric +Vaughn +Vince +Vinny +Walter +Ward +Warner +Wayne +Whitaker +William +Willy +Woodrow +Zack +Zane +Zeke +Jacob +Michael +Ethan +Joshua +Daniel +Alexander +Anthony +William +Christopher +Matthew +Jayden +Andrew +Joseph +David +Noah +Aiden +James +Ryan +Logan +John +Nathan +Elijah +Christian +Gabriel +Benjamin +Jonathan +Tyler +Samuel +Nicholas +Gavin +Dylan +Jackson +Brandon +Caleb +Mason +Angel +Isaac +Evan +Jack +Kevin +Jose +Isaiah +Luke +Landon +Justin +Lucas +Zachary +Jordan +Robert +Aaron +Brayden +Thomas +Cameron +Hunter +Austin +Adrian +Connor +Owen +Aidan +Jason +Julian +Wyatt +Charles +Luis +Carter +Juan +Chase +Diego +Jeremiah +Brody +Xavier +Adam +Carlos +Sebastian +Liam +Hayden +Nathaniel +Henry +Jesus +Ian +Tristan +Bryan +Sean +Cole +Alex +Eric +Brian +Jaden +Carson +Blake +Ayden +Cooper +Dominic +Brady +Caden +Josiah +Kyle +Colton +Kaden +Eli +Miguel +Antonio +Parker +Steven +Alejandro +Riley +Richard +Timothy +Devin +Jesse +Victor +Jake +Joel +Colin +Kaleb +Bryce +Levi +Oliver +Oscar +Vincent +Ashton +Cody +Micah +Preston +Marcus +Max +Patrick +Seth +Jeremy +Peyton +Nolan +Ivan +Damian +Maxwell +Alan +Kenneth +Jonah +Jorge +Mark +Giovanni +Eduardo +Grant +Collin +Gage +Omar +Emmanuel +Trevor +Edward +Ricardo +Cristian +Nicolas +Kayden +George +Jaxon +Paul +Braden +Elias +Andres +Derek +Garrett +Tanner +Malachi +Conner +Fernando +Cesar +Javier +Miles +Jaiden +Alexis +Leonardo +Santiago +Francisco +Cayden +Shane +Edwin +Hudson +Travis +Bryson +Erick +Jace +Hector +Josue +Peter +Jaylen +Mario +Manuel +Abraham +Grayson +Damien +Kaiden +Spencer +Stephen +Edgar +Wesley +Shawn +Trenton +Jared +Jeffrey +Landen +Johnathan +Bradley +Braxton +Ryder +Camden +Roman +Asher +Brendan +Maddox +Sergio +Israel +Andy +Lincoln +Erik +Donovan +Raymond +Avery +Rylan +Dalton +Harrison +Andre +Martin +Keegan +Marco +Jude +Sawyer +Dakota +Leo +Calvin +Kai +Drake +Troy +Zion +Clayton +Roberto +Zane +Gregory +Tucker +Rafael +Kingston +Dominick +Ezekiel +Griffin +Devon +Drew +Lukas +Johnny +Ty +Pedro +Tyson +Caiden +Mateo +Braylon +Cash +Aden +Chance +Taylor +Marcos +Maximus +Ruben +Emanuel +Simon +Corbin +Brennan +Dillon +Skyler +Myles +Xander +Jaxson +Dawson +Kameron +Kyler +Axel +Colby +Jonas +Joaquin +Payton +Brock +Frank +Enrique +Quinn +Emilio +Malik +Grady +Angelo +Julio +Derrick +Raul +Fabian +Corey +Gerardo +Dante +Ezra +Armando +Allen +Theodore +Gael +Amir +Zander +Adan +Maximilian +Randy +Easton +Dustin +Luca +Phillip +Julius +Charlie +Ronald +Jakob +Cade +Brett +Trent +Silas +Keith +Emiliano +Trey +Jalen +Darius +Lane +Jerry +Jaime +Scott +Graham +Weston +Braydon +Anderson +Rodrigo +Pablo +Saul +Danny +Donald +Elliot +Brayan +Dallas +Lorenzo +Casey +Mitchell +Alberto +Tristen +Rowan +Jayson +Gustavo +Aaden +Amari +Dean +Braeden +Declan +Chris +Ismael +Dane +Louis +Arturo +Brenden +Felix +Jimmy +Cohen +Tony +Holden +Reid +Abel +Bennett +Zackary +Arthur +Nehemiah +Ricky +Esteban +Cruz +Finn +Mauricio +Dennis +Keaton +Albert +Marvin +Mathew +Larry +Moises +Issac +Philip +Quentin +Curtis +Greyson +Jameson +Everett +Jayce +Darren +Elliott +Uriel +Alfredo +Hugo +Alec +Jamari +Marshall +Walter +Judah +Jay +Lance +Beau +Ali +Landyn +Yahir +Phoenix +Nickolas +Kobe +Bryant +Maurice +Russell +Leland +Colten +Reed +Davis +Joe +Ernesto +Desmond +Kade +Reece +Morgan +Ramon +Rocco +Orlando +Ryker +Brodie +Paxton +Jacoby +Douglas +Kristopher +Gary +Lawrence +Izaiah +Solomon +Nikolas +Mekhi +Justice +Tate +Jaydon +Salvador +Shaun +Alvin +Eddie +Kane +Davion +Zachariah +Damien +Titus +Kellen +Camron +Isiah +Javon +Nasir +Milo +Johan +Byron +Jasper +Jonathon +Chad +Marc +Kelvin +Chandler +Sam +Cory +Deandre +River +Reese +Roger +Quinton +Talon +Romeo +Franklin +Noel +Alijah +Guillermo +Gunner +Damon +Jadon +Emerson +Micheal +Bruce +Terry +Kolton +Melvin +Beckett +Porter +August +Brycen +Dayton +Jamarion +Leonel +Karson +Zayden +Keagan +Carl +Khalil +Cristopher +Nelson +Braiden +Moses +Isaias +Roy +Triston +Walker Kale \ No newline at end of file diff --git a/config/names/last.txt b/config/names/last.txt index 5b41e53aae8..9bdb16ebe71 100644 --- a/config/names/last.txt +++ b/config/names/last.txt @@ -1,620 +1,620 @@ -Whittier -Dimeling -Blaine -Dennis -Adams -Rader -Murray -Millhouse -Ludwig -Burris -Shupe -Mary -Zadovsky -Philips -Wise -Gronko -Jardine -Black -Mitchell -Enderly -Stall -Harrow -Atweeke -Sealis -Conrad -Lucy -Stewart -Green -Feufer -Warren -Campbell -Shafer -Woodworth -Magor -Logue -Reichard -Day -Dugmore -Murray -Greenawalt -Jyllian -Osterwise -Styles -Cavalet -Garneys -Raub -Sholl -Chauvin -Poley -Todd -Brandenburg -Baer -Pritchard -Pinney -Kadel -Anderson -Clarke -Hunt -Gadow -Stough -Marcotte -Brooks -Watson -Nash -Sheets -Ashbaugh -Zimmer -Noton -Dean -Fleming -Draudy -Bluetenberger -Fischer -Hawkins -Poehl -Addison -Mcintosh -Keppel -Kimple -Alice -Stone -Fiscina -Leichter -Wile -Callison -Cowper -Harrold -Carr -Eckhardstein -Wilkerson -Shirey -Benford -Reade -Baskett -Seidner -Gettemy -Joyce -Judge -Burkett -Kiefer -Carmichael -Hirleman -Wells -Isemann -Cressman -Highlands -Briggs -Rowley -Coldsmith -Berkheimer -Hill -Maclagan -Mcfall -Mens -Braun -James -Sloan -Bould -Overstreet -Kanaga -Polson -Finlay -Sandys -Bousum -Howard -Treeby -Stainforth -Werner -Sulyard -Marriman -Weinstein -Butterfill -Mason -Coates -Peters -Gregory -Wilo -Edwards -Barnes -Harding -Tireman -Lombardi -Roberts -Faqua -Basmanoff -Mccune -Mckendrick -Oppenheimer -Oneal -Focell -Tedrow -Fields -Ryals -Best -Zaun -Knapp -Linton -Jackson -Bullard -Mcloskey -Zoucks -Heckendora -Hoenshell -Woollard -Mueller -Burns -Franks -Goodman -Stern -Robinson -Hooker -David -Fitzgerald -Vanleer -Beach -Flickinger -Metzer -Bynum -Stafford -Osteen -Johnson -Paynter -Thomlinson -Simmons -Basinger -Fisher -Bunten -Compton -Archibald -Catherina -Rahl -Bowchiew -Tennant -Mccullough -Margaret -Schaeffer -Sommer -Beail -Merryman -Knapenberger -Patterson -Houston -Lacon -Levett -Sullivan -Sidower -Laborde -Stroh -Hice -Biery -Christman -Staymates -Sauter -Snyder -Bratton -Sybilla -Altmann -Mathews -Newbern -Baker -Kemble -Mingle -Unk -Otis -Quinn -Bell -Roberts -Wood -Ullman -Bicknell -Gibson -Rohtin -James -Wallick -Eggbert -Losey -Neely -Catleay -McDonald -Beedell -Williamson -Bennett -Potter -Caldwell -Lowe -Durstine -King -Gardner -Ulery -Rifler -Trovato -Thomas -Nehling -Baum -Werry -Mcmullen -Koster -Willey -Mildred -Straub -Haynes -Baxter -Ackerley -Greene -Atkinson -Davis -Weeter -Milne -Leech -Clewett -Ewing -Hook -Reighner -Welty -Jenkins -Bennett -Swarner -Hawker -Agg -Batten -Cherry -Shaffer -Yeskey -Stephenson -Pycroft -Larson -Joghs -Keener -Christopher -Roadman -Echard -Priebe -Auman -Kemerer -Sutton -Prechtl -Cowart -Ringer -Garratt -Siegrist -Seelig -Lafortune -Dryfus -Isaman -Teagarden -Evans -Wolfe -Fiddler -Jowers -Aultman -Olphert -Howe -Leslie -Stocker -Bode -Whirlow -Ann -Mcclymonds -Guess -Taggart -Pratt -Moon -Huey -Hegarty -Meyers -Stahl -Nickolson -Mortland -Perkins -Thorley -Fuchs -Ray -Schrader -Kellogg -Woodward -Faust -Roby -Bashline -Cypret -Laurenzi -Minnie -Houser -Langston -Anderson -Barrett -Wible -Hujsak -Wardle -Pershing -Kuster -Driggers -Wheeler -Garland -Alliman -Hoover -Camp -Hall -Parkinson -Swabey -Mull -Cox -Hanford -Stange -Wolff -Jesse -Brinigh -Koepple -Schmidt -Muller -Schofield -Zalack -Pfeifer -Fea -Blackburn -Ward -Kifer -Costello -Donkin -Osterweis -Brindle -Llora -Duncan -Ehret -Fryer -Summy -Richards -Boyer -Hutton -Mosser -Lester -Stroble -Randolph -Lord -Scott -Nicholas -Smail -Ratcliff -Riggle -Newton -Sanders -Mitchell -Lauffer -Aggley -Moberly -Hynes -Pennington -Woolery -Hardie -Blessig -Tanner -Demuth -Fraser -Henry -Shick -Ironmonger -Scherer -Field -Prevatt -Earl -Paulson -Curry -Powers -Rosensteel -Hoopengarner -Weisgarber -Elliott -Pearsall -Lowstetter -Holdeman -Kepplinger -Bloise -Hunter -Glover -Hayhurst -Wentzel -Owens -Smith -Steele -Leach -Armstrong -Wheeler -Easter -Greenwood -Woodward -Pratt -Buzzard -Cox -Eliza -Rockwell -Zeal -Harshman -Northey -Tilton -Richter -Moore -Jerome -Hardy -Bickerson -White -Beck -Waldron -Fulton -Miller -Sandford -Hughes -Winton -Digson -Byers -Hincken -Shaner -Todd -Whiteman -Lineman -Albright -Hastings -Elderson -Garrison -Rose -Kelley -Quirin -Dickinson -Young -Ramos -Jewell -Endsley -Briner -Jenner -Saylor -Bash -Blyant -Rhinehart -Prescott -Kirkson -Picard -Riker -Spock -Skywalker -Vader -Muggins -Buttersworth -Stamos -Sagan -Hawking -Dawkins -Goebbles -McShain -McDonohugh -Power -Smith -Jones -Williams -Brown -Taylor -Davies -Wilson -Evans -Thomas -Roberts -Johnson -Walker -Wright -Robinson -Thompson -Hughes -White -Edwards -Hall -Patel -Green -Martins -Lewis -Wood -Jackson -Clarke -Harris -Clark -Scott -Turner -Hill -Moore -Cooper -Morris -Ward -Watson -Morgan -Anderson -Harrison -King -Campbell -Young -Mitchell -Baker -James -Kelly -Allen -Bell -Phillips -Lee -Stewart -Miller -Parker -Simpson -Bennett -Davis -Griffiths -Shaw -Price -Cook -Richardson -Murray -Marshall -Begum -Murphy -Khan -Gray -Collins -Bailey -Carter -Robertson -Graham -Adams -Richards -Cox -Singh -Hussain -Ellis -Wilkinson -Foster -Thomson -Russell -Ali -Reid -Rathens -Rathen -Mason -Chapman -Powell -Owen -Ahmed -Gibson -Rogers -Webb -Holmes -Mills -Matthews -Hunt -Palmer -Lloyd -Kaur -Fisher -Ivanov -Smirnov -Vasilyev -Petrov -Kuznetsov -Mikhaylov -Pavlov -Semenov -Andreev +Whittier +Dimeling +Blaine +Dennis +Adams +Rader +Murray +Millhouse +Ludwig +Burris +Shupe +Mary +Zadovsky +Philips +Wise +Gronko +Jardine +Black +Mitchell +Enderly +Stall +Harrow +Atweeke +Sealis +Conrad +Lucy +Stewart +Green +Feufer +Warren +Campbell +Shafer +Woodworth +Magor +Logue +Reichard +Day +Dugmore +Murray +Greenawalt +Jyllian +Osterwise +Styles +Cavalet +Garneys +Raub +Sholl +Chauvin +Poley +Todd +Brandenburg +Baer +Pritchard +Pinney +Kadel +Anderson +Clarke +Hunt +Gadow +Stough +Marcotte +Brooks +Watson +Nash +Sheets +Ashbaugh +Zimmer +Noton +Dean +Fleming +Draudy +Bluetenberger +Fischer +Hawkins +Poehl +Addison +Mcintosh +Keppel +Kimple +Alice +Stone +Fiscina +Leichter +Wile +Callison +Cowper +Harrold +Carr +Eckhardstein +Wilkerson +Shirey +Benford +Reade +Baskett +Seidner +Gettemy +Joyce +Judge +Burkett +Kiefer +Carmichael +Hirleman +Wells +Isemann +Cressman +Highlands +Briggs +Rowley +Coldsmith +Berkheimer +Hill +Maclagan +Mcfall +Mens +Braun +James +Sloan +Bould +Overstreet +Kanaga +Polson +Finlay +Sandys +Bousum +Howard +Treeby +Stainforth +Werner +Sulyard +Marriman +Weinstein +Butterfill +Mason +Coates +Peters +Gregory +Wilo +Edwards +Barnes +Harding +Tireman +Lombardi +Roberts +Faqua +Basmanoff +Mccune +Mckendrick +Oppenheimer +Oneal +Focell +Tedrow +Fields +Ryals +Best +Zaun +Knapp +Linton +Jackson +Bullard +Mcloskey +Zoucks +Heckendora +Hoenshell +Woollard +Mueller +Burns +Franks +Goodman +Stern +Robinson +Hooker +David +Fitzgerald +Vanleer +Beach +Flickinger +Metzer +Bynum +Stafford +Osteen +Johnson +Paynter +Thomlinson +Simmons +Basinger +Fisher +Bunten +Compton +Archibald +Catherina +Rahl +Bowchiew +Tennant +Mccullough +Margaret +Schaeffer +Sommer +Beail +Merryman +Knapenberger +Patterson +Houston +Lacon +Levett +Sullivan +Sidower +Laborde +Stroh +Hice +Biery +Christman +Staymates +Sauter +Snyder +Bratton +Sybilla +Altmann +Mathews +Newbern +Baker +Kemble +Mingle +Unk +Otis +Quinn +Bell +Roberts +Wood +Ullman +Bicknell +Gibson +Rohtin +James +Wallick +Eggbert +Losey +Neely +Catleay +McDonald +Beedell +Williamson +Bennett +Potter +Caldwell +Lowe +Durstine +King +Gardner +Ulery +Rifler +Trovato +Thomas +Nehling +Baum +Werry +Mcmullen +Koster +Willey +Mildred +Straub +Haynes +Baxter +Ackerley +Greene +Atkinson +Davis +Weeter +Milne +Leech +Clewett +Ewing +Hook +Reighner +Welty +Jenkins +Bennett +Swarner +Hawker +Agg +Batten +Cherry +Shaffer +Yeskey +Stephenson +Pycroft +Larson +Joghs +Keener +Christopher +Roadman +Echard +Priebe +Auman +Kemerer +Sutton +Prechtl +Cowart +Ringer +Garratt +Siegrist +Seelig +Lafortune +Dryfus +Isaman +Teagarden +Evans +Wolfe +Fiddler +Jowers +Aultman +Olphert +Howe +Leslie +Stocker +Bode +Whirlow +Ann +Mcclymonds +Guess +Taggart +Pratt +Moon +Huey +Hegarty +Meyers +Stahl +Nickolson +Mortland +Perkins +Thorley +Fuchs +Ray +Schrader +Kellogg +Woodward +Faust +Roby +Bashline +Cypret +Laurenzi +Minnie +Houser +Langston +Anderson +Barrett +Wible +Hujsak +Wardle +Pershing +Kuster +Driggers +Wheeler +Garland +Alliman +Hoover +Camp +Hall +Parkinson +Swabey +Mull +Cox +Hanford +Stange +Wolff +Jesse +Brinigh +Koepple +Schmidt +Muller +Schofield +Zalack +Pfeifer +Fea +Blackburn +Ward +Kifer +Costello +Donkin +Osterweis +Brindle +Llora +Duncan +Ehret +Fryer +Summy +Richards +Boyer +Hutton +Mosser +Lester +Stroble +Randolph +Lord +Scott +Nicholas +Smail +Ratcliff +Riggle +Newton +Sanders +Mitchell +Lauffer +Aggley +Moberly +Hynes +Pennington +Woolery +Hardie +Blessig +Tanner +Demuth +Fraser +Henry +Shick +Ironmonger +Scherer +Field +Prevatt +Earl +Paulson +Curry +Powers +Rosensteel +Hoopengarner +Weisgarber +Elliott +Pearsall +Lowstetter +Holdeman +Kepplinger +Bloise +Hunter +Glover +Hayhurst +Wentzel +Owens +Smith +Steele +Leach +Armstrong +Wheeler +Easter +Greenwood +Woodward +Pratt +Buzzard +Cox +Eliza +Rockwell +Zeal +Harshman +Northey +Tilton +Richter +Moore +Jerome +Hardy +Bickerson +White +Beck +Waldron +Fulton +Miller +Sandford +Hughes +Winton +Digson +Byers +Hincken +Shaner +Todd +Whiteman +Lineman +Albright +Hastings +Elderson +Garrison +Rose +Kelley +Quirin +Dickinson +Young +Ramos +Jewell +Endsley +Briner +Jenner +Saylor +Bash +Blyant +Rhinehart +Prescott +Kirkson +Picard +Riker +Spock +Skywalker +Vader +Muggins +Buttersworth +Stamos +Sagan +Hawking +Dawkins +Goebbles +McShain +McDonohugh +Power +Smith +Jones +Williams +Brown +Taylor +Davies +Wilson +Evans +Thomas +Roberts +Johnson +Walker +Wright +Robinson +Thompson +Hughes +White +Edwards +Hall +Patel +Green +Martins +Lewis +Wood +Jackson +Clarke +Harris +Clark +Scott +Turner +Hill +Moore +Cooper +Morris +Ward +Watson +Morgan +Anderson +Harrison +King +Campbell +Young +Mitchell +Baker +James +Kelly +Allen +Bell +Phillips +Lee +Stewart +Miller +Parker +Simpson +Bennett +Davis +Griffiths +Shaw +Price +Cook +Richardson +Murray +Marshall +Begum +Murphy +Khan +Gray +Collins +Bailey +Carter +Robertson +Graham +Adams +Richards +Cox +Singh +Hussain +Ellis +Wilkinson +Foster +Thomson +Russell +Ali +Reid +Rathens +Rathen +Mason +Chapman +Powell +Owen +Ahmed +Gibson +Rogers +Webb +Holmes +Mills +Matthews +Hunt +Palmer +Lloyd +Kaur +Fisher +Ivanov +Smirnov +Vasilyev +Petrov +Kuznetsov +Mikhaylov +Pavlov +Semenov +Andreev Alekseev \ No newline at end of file diff --git a/config/names/ninjaname.txt b/config/names/ninjaname.txt index b41271dbe10..42b74817041 100644 --- a/config/names/ninjaname.txt +++ b/config/names/ninjaname.txt @@ -1,44 +1,44 @@ -Shadow -Sarutobi -Smoke -Rain -Scorpion -Zero -Ermac -Saibot -Cyrax -Raphael -Michaelangelo -Donatello -Leonardo -Splinter -Shredder -Hazuki -Hien -Hiryu -Ryu -Hayabusa -Midnight -Seven -McNinja -Hanzo -Blood -Iga -Koga -Hero -Hiro -Phantom -Baki -Ogre -Daemon -Goemon -McAwesome -Throat -Death -Aria -Bro -Fox -Null -Raiden -Samurai +Shadow +Sarutobi +Smoke +Rain +Scorpion +Zero +Ermac +Saibot +Cyrax +Raphael +Michaelangelo +Donatello +Leonardo +Splinter +Shredder +Hazuki +Hien +Hiryu +Ryu +Hayabusa +Midnight +Seven +McNinja +Hanzo +Blood +Iga +Koga +Hero +Hiro +Phantom +Baki +Ogre +Daemon +Goemon +McAwesome +Throat +Death +Aria +Bro +Fox +Null +Raiden +Samurai Eater \ No newline at end of file diff --git a/config/names/ninjatitle.txt b/config/names/ninjatitle.txt index 2c7f9e7f73c..078ae36fc10 100644 --- a/config/names/ninjatitle.txt +++ b/config/names/ninjatitle.txt @@ -1,46 +1,46 @@ -Master -Sensei -Swift -Merciless -Assassin -Rogue -Hunter -Widower -Orphaner -Stalker -Killer -Silent -Silencing -Quick -Agile -Merciful -Ninja -Shinobi -Initiate -Grandmaster -Strider -Striker -Slayer -Awesome -Ender -Dr. -Noob -Night -Crimson -Grappler -Ulimate -Remorseless -Deep -Dragon -Cruel -Nightshade -Black -Gray -Solid -Liquid -Solidus -Steel -Nickel -Silver -Singing +Master +Sensei +Swift +Merciless +Assassin +Rogue +Hunter +Widower +Orphaner +Stalker +Killer +Silent +Silencing +Quick +Agile +Merciful +Ninja +Shinobi +Initiate +Grandmaster +Strider +Striker +Slayer +Awesome +Ender +Dr. +Noob +Night +Crimson +Grappler +Ulimate +Remorseless +Deep +Dragon +Cruel +Nightshade +Black +Gray +Solid +Liquid +Solidus +Steel +Nickel +Silver +Singing Snake \ No newline at end of file diff --git a/config/names/verbs.txt b/config/names/verbs.txt index e036e3c1dab..5bb8d6e3139 100644 --- a/config/names/verbs.txt +++ b/config/names/verbs.txt @@ -1,633 +1,633 @@ -accept -add -admire -admit -advise -afford -agree -alert -allow -amuse -analyse -announce -annoy -answer -apologise -appear -applaud -appreciate -approve -argue -arrange -arrest -arrive -ask -attach -attack -attempt -attend -attract -avoid -back -bake -balance -ban -bang -bare -bat -bathe -battle -beam -beg -behave -belong -bleach -bless -blind -blink -blot -blush -boast -boil -bolt -bomb -book -bore -borrow -bounce -bow -box -brake -brake -branch -breathe -bruise -brush -bubble -bump -burn -bury -buzz -calculate -call -camp -care -carry -carve -cause -challenge -change -charge -chase -cheat -check -cheer -chew -choke -chop -claim -clap -clean -clear -clip -close -coach -coil -collect -colour -comb -command -communicate -compare -compete -complain -complete -concentrate -concern -confess -confuse -connect -consider -consist -contain -continue -copy -correct -cough -count -cover -crack -crash -crawl -cross -crush -cry -cure -curl -curve -cycle -dam -damage -dance -dare -decay -deceive -decide -decorate -delay -delight -deliver -depend -describe -desert -deserve -destroy -detect -develop -disagree -disappear -disapprove -disarm -discover -dislike -divide -double -doubt -drag -drain -dream -dress -drip -drop -drown -drum -dry -dust -earn -educate -embarrass -employ -empty -encourage -end -enjoy -enter -entertain -escape -examine -excite -excuse -exercise -exist -expand -expect -explain -explode -extend -face -fade -fail -fancy -fasten -fax -fear -fence -fetch -file -fill -film -fire -fit -fix -flap -flash -float -flood -flow -flower -fold -follow -fool -force -form -found -frame -frighten -fry -gather -gaze -glow -glue -grab -grate -grease -greet -grin -grip -groan -guarantee -guard -guess -guide -hammer -hand -handle -hang -happen -harass -harm -hate -haunt -head -heal -heap -heat -help -hook -hop -hope -hover -hug -hum -hunt -hurry -identify -ignore -imagine -impress -improve -include -increase -influence -inform -inject -injure -instruct -intend -interest -interfere -interrupt -introduce -invent -invite -irritate -itch -jail -jam -jog -join -joke -judge -juggle -jump -kick -kill -kiss -kneel -knit -knock -knot -label -land -last -laugh -launch -learn -level -license -lick -lie -lighten -like -list -listen -live -load -lock -long -look -love -man -manage -march -mark -marry -match -mate -matter -measure -meddle -melt -memorise -mend -messup -milk -mine -miss -mix -moan -moor -mourn -move -muddle -mug -multiply -murder -nail -name -need -nest -nod -note -notice -number -obey -object -observe -obtain -occur -offend -offer -open -order -overflow -owe -own -pack -paddle -paint -park -part -pass -paste -pat -pause -peck -pedal -peel -peep -perform -permit -phone -pick -pinch -pine -place -plan -plant -play -please -plug -point -poke -polish -pop -possess -post -pour -practise -pray -preach -precede -prefer -prepare -present -preserve -press -pretend -prevent -prick -print -produce -program -promise -protect -provide -pull -pump -punch -puncture -punish -push -question -queue -race -radiate -rain -raise -reach -realise -receive -recognise -record -reduce -reflect -refuse -regret -reign -reject -rejoice -relax -release -rely -remain -remember -remind -remove -repair -repeat -replace -reply -report -reproduce -request -rescue -retire -return -rhyme -rinse -risk -rob -rock -roll -rot -rub -ruin -rule -rush -sack -sail -satisfy -save -saw -scare -scatter -scold -scorch -scrape -scratch -scream -screw -scribble -scrub -seal -search -separate -serve -settle -shade -share -shave -shelter -shiver -shock -shop -shrug -sigh -sign -signal -sin -sip -ski -skip -slap -slip -slow -smash -smell -smile -smoke -snatch -sneeze -sniff -snore -snow -soak -soothe -sound -spare -spark -sparkle -spell -spill -spoil -spot -spray -sprout -squash -squeak -squeal -squeeze -stain -stamp -stare -start -stay -steer -step -stir -stitch -stop -store -strap -strengthen -stretch -strip -stroke -stuff -subtract -succeed -suck -suffer -suggest -suit -supply -support -suppose -surprise -surround -suspect -suspend -switch -talk -tame -tap -taste -tease -telephone -tempt -terrify -test -thank -thaw -tick -tickle -tie -time -tip -tire -touch -tour -tow -trace -trade -train -transport -trap -travel -treat -tremble -trick -trip -trot -trouble -trust -try -tug -tumble -turn -twist -type -undress -unfasten -unite -unlock -unpack -untidy -use -vanish -visit -wail -wait -walk -wander -want -warm -warn -wash -waste -watch -water -wave -weigh -welcome -whine -whip -whirl -whisper -whistle -wink -wipe -wish -wobble -wonder -work -worry -wrap -wreck -wrestle -wriggle -yawn -yell -zip +accept +add +admire +admit +advise +afford +agree +alert +allow +amuse +analyse +announce +annoy +answer +apologise +appear +applaud +appreciate +approve +argue +arrange +arrest +arrive +ask +attach +attack +attempt +attend +attract +avoid +back +bake +balance +ban +bang +bare +bat +bathe +battle +beam +beg +behave +belong +bleach +bless +blind +blink +blot +blush +boast +boil +bolt +bomb +book +bore +borrow +bounce +bow +box +brake +brake +branch +breathe +bruise +brush +bubble +bump +burn +bury +buzz +calculate +call +camp +care +carry +carve +cause +challenge +change +charge +chase +cheat +check +cheer +chew +choke +chop +claim +clap +clean +clear +clip +close +coach +coil +collect +colour +comb +command +communicate +compare +compete +complain +complete +concentrate +concern +confess +confuse +connect +consider +consist +contain +continue +copy +correct +cough +count +cover +crack +crash +crawl +cross +crush +cry +cure +curl +curve +cycle +dam +damage +dance +dare +decay +deceive +decide +decorate +delay +delight +deliver +depend +describe +desert +deserve +destroy +detect +develop +disagree +disappear +disapprove +disarm +discover +dislike +divide +double +doubt +drag +drain +dream +dress +drip +drop +drown +drum +dry +dust +earn +educate +embarrass +employ +empty +encourage +end +enjoy +enter +entertain +escape +examine +excite +excuse +exercise +exist +expand +expect +explain +explode +extend +face +fade +fail +fancy +fasten +fax +fear +fence +fetch +file +fill +film +fire +fit +fix +flap +flash +float +flood +flow +flower +fold +follow +fool +force +form +found +frame +frighten +fry +gather +gaze +glow +glue +grab +grate +grease +greet +grin +grip +groan +guarantee +guard +guess +guide +hammer +hand +handle +hang +happen +harass +harm +hate +haunt +head +heal +heap +heat +help +hook +hop +hope +hover +hug +hum +hunt +hurry +identify +ignore +imagine +impress +improve +include +increase +influence +inform +inject +injure +instruct +intend +interest +interfere +interrupt +introduce +invent +invite +irritate +itch +jail +jam +jog +join +joke +judge +juggle +jump +kick +kill +kiss +kneel +knit +knock +knot +label +land +last +laugh +launch +learn +level +license +lick +lie +lighten +like +list +listen +live +load +lock +long +look +love +man +manage +march +mark +marry +match +mate +matter +measure +meddle +melt +memorise +mend +messup +milk +mine +miss +mix +moan +moor +mourn +move +muddle +mug +multiply +murder +nail +name +need +nest +nod +note +notice +number +obey +object +observe +obtain +occur +offend +offer +open +order +overflow +owe +own +pack +paddle +paint +park +part +pass +paste +pat +pause +peck +pedal +peel +peep +perform +permit +phone +pick +pinch +pine +place +plan +plant +play +please +plug +point +poke +polish +pop +possess +post +pour +practise +pray +preach +precede +prefer +prepare +present +preserve +press +pretend +prevent +prick +print +produce +program +promise +protect +provide +pull +pump +punch +puncture +punish +push +question +queue +race +radiate +rain +raise +reach +realise +receive +recognise +record +reduce +reflect +refuse +regret +reign +reject +rejoice +relax +release +rely +remain +remember +remind +remove +repair +repeat +replace +reply +report +reproduce +request +rescue +retire +return +rhyme +rinse +risk +rob +rock +roll +rot +rub +ruin +rule +rush +sack +sail +satisfy +save +saw +scare +scatter +scold +scorch +scrape +scratch +scream +screw +scribble +scrub +seal +search +separate +serve +settle +shade +share +shave +shelter +shiver +shock +shop +shrug +sigh +sign +signal +sin +sip +ski +skip +slap +slip +slow +smash +smell +smile +smoke +snatch +sneeze +sniff +snore +snow +soak +soothe +sound +spare +spark +sparkle +spell +spill +spoil +spot +spray +sprout +squash +squeak +squeal +squeeze +stain +stamp +stare +start +stay +steer +step +stir +stitch +stop +store +strap +strengthen +stretch +strip +stroke +stuff +subtract +succeed +suck +suffer +suggest +suit +supply +support +suppose +surprise +surround +suspect +suspend +switch +talk +tame +tap +taste +tease +telephone +tempt +terrify +test +thank +thaw +tick +tickle +tie +time +tip +tire +touch +tour +tow +trace +trade +train +transport +trap +travel +treat +tremble +trick +trip +trot +trouble +trust +try +tug +tumble +turn +twist +type +undress +unfasten +unite +unlock +unpack +untidy +use +vanish +visit +wail +wait +walk +wander +want +warm +warn +wash +waste +watch +water +wave +weigh +welcome +whine +whip +whirl +whisper +whistle +wink +wipe +wish +wobble +wonder +work +worry +wrap +wreck +wrestle +wriggle +yawn +yell +zip zoom \ No newline at end of file diff --git a/config/names/wizardfirst.txt b/config/names/wizardfirst.txt index 408ae3b447e..18806ca74b7 100644 --- a/config/names/wizardfirst.txt +++ b/config/names/wizardfirst.txt @@ -1,36 +1,36 @@ -Jim -Gulstaff -Gandalf -Grimm -Mordenkainen -Elminister -Saruman -Vaarsuvius -Yoda -Zul -Nihilus -Vecna -Mogan -Circe -Prospero -Raistlin -Rasputin -Tzeentch -Khelben -Dumbledor -Houdini -Terefi -Urza -Tenser -Zagyg -Mystryl -Boccob -Merlin -Archchancellor -Radagast -Kreol -Kaschei -Lina -Morgan -Alatar +Jim +Gulstaff +Gandalf +Grimm +Mordenkainen +Elminister +Saruman +Vaarsuvius +Yoda +Zul +Nihilus +Vecna +Mogan +Circe +Prospero +Raistlin +Rasputin +Tzeentch +Khelben +Dumbledor +Houdini +Terefi +Urza +Tenser +Zagyg +Mystryl +Boccob +Merlin +Archchancellor +Radagast +Kreol +Kaschei +Lina +Morgan +Alatar Palando \ No newline at end of file diff --git a/config/names/wizardsecond.txt b/config/names/wizardsecond.txt index d1e2e734862..1fe60bdb275 100644 --- a/config/names/wizardsecond.txt +++ b/config/names/wizardsecond.txt @@ -1,39 +1,39 @@ -the Powerful -the Great -the Magician -the Wise -the Seething -the Amazing -the Spiral King -Darkmagic -the White -the Gray -Shado -the Sorcelator -the Raven -the Emperor -the Brown -Weatherwax -the Destroyer -the Deathless -Yagg -the Remorseful -the Weeping -the Unending -the All Knowing -Dark -Smith -the Conquerer -the Unstoppable -Gray -of Void -Unseen -Darko -Honko -the Bandit Killer -the Dragon Spooker -Inverse -le Fay -the Blue -the Red +the Powerful +the Great +the Magician +the Wise +the Seething +the Amazing +the Spiral King +Darkmagic +the White +the Gray +Shado +the Sorcelator +the Raven +the Emperor +the Brown +Weatherwax +the Destroyer +the Deathless +Yagg +the Remorseful +the Weeping +the Unending +the All Knowing +Dark +Smith +the Conquerer +the Unstoppable +Gray +of Void +Unseen +Darko +Honko +the Bandit Killer +the Dragon Spooker +Inverse +le Fay +the Blue +the Red the Benevolent \ No newline at end of file diff --git a/config/tips.txt b/config/tips.txt index e51b584e7cd..33aad7a0b30 100644 --- a/config/tips.txt +++ b/config/tips.txt @@ -1,92 +1,156 @@ -You can drag yourself to a chair or a bed to buckle yourself to it. -You can drag yourself onto a photocopier to copy your ass. -Space transitions change every round, but are consistent within a round. -People can be ejected from the cloner before they are done by cutting power to the clone pod. -If you've been feeding some slimes for at least two generations, you can order them around, and even have them follow you if they like you enough. -Almost all slime cores have two or more different effects. -With the right slime cores, you can get up to nine uses of a single slime's effects. -Touching a supermatter shard is akin to hugging a singularity. -To catch thrown items, toggle throw mode on and make sure you have an open hand. -Updating sec records regularly helps avoid confusion in the brig! -You can drag the icon of an equipped headset or PDA onto your screen to interact with it. -The mime's invisible wall will block electrodes and other projectiles, but beams pass straight through it like windows. -The Library system is much more robust than most people think! Mess around with it, see if you can log who takes out the books for radio-reading. -Use a pair of handcuffs on a pair of orange shoes (standard prisoner issue) to chain them together. -Revolutionaries and gangsters can have their opinions swayed back to Nanotrasen loyalty by enough heavy objects to the head. -Husked corpses that have been drained of their genomes by a changeling also lack blood in their veins, unlike burned or space frozen corpses. -The stethoscope's utility extends beyond lung and heart check-ups. They can also be used to crack certain safes. -Chloral Hydrate can be counteracted by having coffee in your system! -The AI system integrity restorer in both the RD's office and on the bridge can revive a dead AI loaded onto an intellicard. -If an anomaly appears, scan it with an analyzer and then ping the frequency it gives you with a remote signalling device. -Various creatures can crawl through air vents by holding alt while left clicking them. -Nuclear operatives can be extremely powerful, but only if they work together. Communication is key! -A rogue AI can be an extremely powerful tool for traitors, but be wary of the laws you use to slave it to you as it may try to find loopholes to get back at you. -You can drag yourself onto tables to climb on them. This takes a moment and requires two free hands. -You can drag other players onto yourself to open the strip menu, letting you remove their equipment or force them to equip something. -Aliens are by far the most powerful close-quarters combat menace. Fight them at a distance to gain the upper hand! -Aliens take double damage from all burn sources, such as lasers and fires. Flamethrowers are extremely effective against them. -As an alien, your most powerful weapon is the facehugger. It can instantly win any fight, but can be completely blocked by certain headgear. Strip downed victims before applying one. -Monkeys can still wear some human items, such as masks and backpacks, but they cannot bring anything with themselves when vent crawling. -Nuclear operatives are very effective in a blitzkrieg tactic: attacking almost as soon as the round starts and well before the crew is prepared. -You can use a fire extinguisher as a ghetto jetpack by spraying in the opposite direction of where you want to go. This also works with any gun. -Coffee can keep you very warm. Drink a lot before running around through exposed space. -Both cargo and the HoP can make you fill out a form for their services. -You can destroy a blob by shooting emitters at its core. -You can electrify a grille by having an exposed wire node underneath it. -If you press the tab key, you can toggle hotkey mode, which allows you to move using WASD and perform other actions using hotkeys. -You can hack MULE bots to let you ride them. -You can hack most vending machines to obtain contraband items. -You can use a multitool on the Cargo Ordering Console circuitboards to get contraband crates. -The cryptographic sequencer (emag) has an enormous amount of functions beyond breaking open locks and hacking cyborgs, experiment! -Touching anything without black, insulated, or brown gloves will leave fingerprints, which can be analyzed by detectives to find the suspect. Be careful of what you leave prints on! -Blobs are extremely powerful and are impossible to defeat alone. Communicate with the crew and rally them against the threat! -You can fight blob pieces diagonally, as they can only expand onto adjacent tiles in cardinal directions. -Security huds and secglass huds can tell you if someone is implanted with a loyalty implant. Use this to your advantage in a revolution. -Loyalty implants can only prevent someone from being turned into a cultist: unlike revolutionaries, it will not de-cult them if they have already been converted. -Loyalty implants will break when used to de-convert a gangster. You will need to use two if you want to prevent them from being re-recruited. -Don't neglect upgrading your machines with the machine parts produced by research! These can seriously improve the efficiency of your equipment. -Cyborgs are impervious to fires and temperature, and can walk in a blazing inferno without worry. Don't shy away from setting the whole station on fire as a malfunctioning or rogue AI! -The heads of staff, especially the Head of Security and the Captain, are usually extremely difficult to kill. If one of them is your target as a traitor, plan carefully. -The Steal DNA sting from changelings counts for your genome absorb objective, but does not let you change your powers. -Chemists are among the most powerful people on the station. They can survive almost anything thanks to all the chemicals in them that have basically replaced their blood. -The station is capable of being entirely powered by the solar arrays, and is a much safer form of power over the singularity engine. -The singularity engine is extremely dangerous if containment fails. Check back on it very frequently and call the shuttle immediately when, not if, it breaks free. -Firesuits and winter coats offer mild protection from the cold, allowing you to spend longer periods of time near breaches and space than if wearing nothing at all. -Vendors provide a very poor source of food riddled with sugar. This can affect your metabolism quite severely and it comes with many negative effects. Eat from the kitchen to stay healthy and even profit from a happy gut! -Emergency internals tanks can be used from your hands, your pockets, your belt, or your suit storage slot (assuming you're wearing a valid exosuit). -When walking through halls, stay on the Help intent to pass through people rather than bumping into them. -Trying to do surgery but you keep cutting your patient? Remember to be on the help intent and to target the right limb! -Glass shards can be welded to make glass, and metal rods can be welded to make metal. Ores can be welded, too, but this takes a lot of fuel. -Many monsters won't attack you if you're unconscious. If you see a space bear, go to sleep, quick! -Many monsters won't attack you if you're unconscious, but a medibot will still heal you. Keep one around when you're mining and never worry about dying again. -Two people are critical and need your help, but you don't have time for two trips? Pull one and use the grab intent to grab the other. This will make you slower, but you will be able to take them both. -When using the grab intent, grab someone by clicking on them then upgrade your grab by clicking on your hand slot. Holding them by the hands lets you throw them or table them. -Can't seem to get a patient into the cryo tube or sleepers? Just drag their sprite to it to put them in it instantly. No more needing to shuffle around pulling them into it awkwardly. -EMP blasts have a chance to make machines explode! -Targeting your opponent's mouth in a fistfight will give you a greater chance of knocking them unconscious. -As a security officer, examining a crew member with a secHUD allows you to set their status to arrest. You can even give a reason for the arrest warrant, as well. -Clowns are extremely clumsy and will often misfire weapons. -Hulks can't fire weapons because of their meaty fingers. -The mime's crayon is edible. -Shooting lasers at a computer console will destroy it. -Using ethanol on a piece of paper will remove any writing on it. -Using an emag on the gibber will allow you to throw people into it! -Using the comms console with captain level access will allow you to broadcast announcements in BIG, RED LETTERS! -You can repair cracked windows with a welding tool on help intent. -Hold alt and left click on an adjacent tile to see its contents in the top right pane. -While observing or as a ghost, double click on people, bots, or the singularity to follow them. -Ghosts can click on active teleporters, portals, wormholes, or the gateway to jump to its destination! -Ghosts can double-click their corpse, or the object containing their corpse (such as the cloning scanner), to re-enter it. -Ghosts can see inside storage items that have been left on the ground. -If you click on the command/chat bar to give it full focus you can use control + arrow keys to move the cursor around or scroll through the history of commands. (Control + home/end work too) -Locked down rogue borgs can be dismantled to return the MMI for placement in a new borg. -Fore = north, aft = south, starboard = east and port = west. -Many things that bind you can be resisted out of with the resist button. This includes locked or welded lockers, chairs and handcuffs. Whenever stuck, just give it a try! -You can use . or # instead of : for radio channels. Building this habit reduces the chance of accidentally saying things on common. -While pulling something, clicking on a tile with an empty hand will move it to that tile. No more getting stuck in maint while dragging something! -Things that override clicks like decks of cards or paper bins can still be picked up by dragging them to your character. Equipped things that override click can be unequipped by dragging it to an empty hand. -In the job selection menu, from the lobby, you can use right click on the "Low/Medium/High" priority button to make it cycle backwards. -If you stay out of camera range for 10 seconds, the AI's track on you will break. -You can shoot cameras with bullets to disable them remotely. -Disabling a camera with wirecutters will not cause a camera alarm, but bludgeoning it will. -Gangs derive their power from their presence and notoriety. Cleaning up gang tags is the best way to slow their growth. + +Dragging yourself or someone else onto a chair or bed will buckle them to it, immobilizing them. If handcuffed, it will take time to resist out. +Where the space map levels connect is randomized every round, but are otherwise kept consistent within rounds. Remember that they are not necessarily bidirectional! +You can catch thrown items by toggling on your throw mode with an empty hand active. +To crack the safe in the vault, you must use a stethoscope on it. +You can climb onto a table by dragging yourself onto one. This takes time and drops the items in your hands on the table. +You can drag other players onto yourself to open the strip menu, letting you remove their equipment or force them to wear something. Note that exosuits or helmets will block your access to the clothing beneath them, and that certain items take longer to strip or put on than others. +You can spray a fire extinguisher or fire a gun while floating through space to change your direction. Simply fire opposite to where you want to go. +You can change the control scheme by pressing tab. One is WASD, the other is the arrow keys. Keep in mind that hotkeys are also changed with this. +All vending machines can be hacked to obtain some contraband items from them, and some can be fed with coins to gain access to premium items. +Firesuits and winter coats offer mild protection from the cold, allowing you to spend longer periods of time near breaches and space than if wearing nothing at all. +Glass shards can be welded to make glass, and metal rods can be welded to make metal. Ores can be welded too, but this takes a lot of fuel. +If you need to drag multiple people either to safety or to space, bring a locker over and stuff them all in before hauling them off. +You can grab someone by clicking on them with the grab intent, then upgrade the grab by clicking on the grab button in your active hand. An aggressive grab will allow you to place someone on a table by clicking on it, or throw them by toggling on throwing. +You can destroy computers by shooting lasers at them. +Holding alt and left clicking a tile will allow you to see its contents in the top right window pane, which is much faster than right clicking. +The resist button will allow you to resist out of handcuffs, being buckled to a chair or bed, and out of locked lockers. Whenever you're stuck, try resisting! +You can move an item out of the way by dragging it and then clicking on an adjacent tile with an empty hand. +You can recolor certain items like jumpsuits and gloves in washing machines by also throwing in a crayon. +Maintenance is full of equipment that is randomized every round. Look around and see if anything is worth using. +As the Captain, you are one of the highest priority targets on the station. Everything from revolutions, to nuclear operatives, to traitors that need to rob you of your pants or your life are things to worry about. +As the Captain, always take the nuclear disk and pinpointer with you every shift. It's a good idea to give one of these to another head who you can trust with keeping it safe, such as the Head of Security. +As the Captain, you have absolute access and control over the station, but this does not mean that being a horrible person won't result in mutiny and a ban. +As the Chief Medical Officer, your hypospray is like an instant injection syringe that can hold 30 units as opposed to the standard 15. +As the Chief Medical Officer, coordinate and communicate with your doctors, chemists, and geneticists during a nuclear emergency, blob, or some other crisis to keep people alive and fighting. +As a Medical Doctor, you can eject someone from cloning early by disabling power in genetics. Note that they will suffer more genetic damage from this. +As a Medical Doctor, you can attempt to drain blood from a husk with a syringe to determine the cause. If you can extract blood, it was caused by extreme temperatures or lasers, if there is no blood to extract, you have confirmed the presence of changelings. +As a Medical Doctor, charcoal will not only heal toxin damage dealt by poisons, but will actively remove them. +As a Medical Doctor, you can surgically implant or extract things from people's chests. This can range from putting in a bomb to pulling out an alien larva. +As a Medical Doctor, you must target the correct limb and be on help intent when trying to perform surgery on someone. +As a Chemist, there are dozens of chemicals that can heal, and even more that can cause harm. Experiment! +As a Chemist, some chemicals can only be synthesized by heating up the contents in the chemical heater. +As a Chemist, it is a good idea to carry some sort of combat or panic pill to help you get out of a dangerous situation. A mixture of healing, speed boosting, and stun recovery chemicals can help you immensely. +As a Geneticist, check the door to your workspace once in a while to see if there's anyone to clone. +As a Geneticist, becoming a hulk makes you capable of dealing high melee damage, stunlocking people, and punching through walls. However, you can't fire guns, will lose your hulk status if you take too much damage, and are not considered a human by the AI while you are a hulk. +As the Virologist, your viruses can range from healing powers so great that you can solo a blob, or diseases so dangerous they can kill the entire crew with airborne spontaneous combustion. Experiment! +As the Research Director, you can repair and even revive AIs by loading them into an intelicard, and then from there into an AI system integrity restorer computer. +As the Research Director, you can lock down cyborgs instead of blowing them up. Then you can have their laws reset or if that doesn't work, safely dismantled. +As a Scientist, you can inject yourself with the mutation toxin extracted from green slimes to become a slime man, who will never be attacked by slimes. +As a Scientist, you can maximize the number of uses you get out of a slime by feeding it slime steroid, created from purple slimes, while alive. You can then apply extract enhancer, created from cerulean slimes, on each extract. It is possible to get 9 times as much out of a slime this way. +As a Scientist, you can disable anomalies by scanning them with an analyzer, then send a signal on the frequency it gives you with a remote signalling device. This will leave behind an anomaly core, which is good for research or the construction of the Phazon mech! +As a Scientist, researchable machine parts can seriously improve the efficiency and speed of machines around the station. In some cases, it can even unlock new functions. +As a Roboticist, you can not only build cyborgs, but also drones, bots, and even mechs! +As a Roboticist, keep an ear out for anomaly announcements. If you successfully get your hands on its core, you can build a phazon mech! +As a Roboticist, you can repair your cyborgs with a welding tool. If they have taken burn damage from lasers, you can remove their battery and replace their wires with a cable coil. +As the AI, you can click on people's names to look at them. This only works if there are cameras that can see them. +As the AI, you can quickly open and close doors by holding shift while clicking them, bolt them when holding ctrl, and even shock them while holding alt. +As a Cyborg, choose your module carefully, as only a roboticist can let you repick it. If possible, refrain from choosing a module until a situation that requires one occurs. +As a Cyborg, you are immune to most forms of stunning, and excel at almost everything far better than humans. However, flashes can easily stunlock you and you cannot do any precision work as you lack hands. +As a Cyborg, you are impervious to fires and heat. If you are rogue, you can release plasma fires everywhere and walk through them without a care in the world! +As a Cyborg, you are extremely vulnerable to EMPs as EMPs both stun you and damage you. The ion rifle in the armory or a traitor with an EMP kit can kill you in seconds. +As the Chief Engineer, you can rename areas or create entirely new ones using your station blueprints. +As the Chief Engineer, coordinate with your engineering team to repair hull breaches as quickly as possible, so as to prevent too much air from draining. +As the Chief Engineer, your rig suit is significantly better than everybody else's. It boasts better protection, and is completely heat and fire proof. +As an Engineer, the supermatter shard is an extremely dangerous piece of equipment: touching it will vaporize you. +As an Engineer, you can electrify grilles by placing wire "nodes" beneath them: the big seemingly unconnected bulges from a half completed wiring job. +As an Engineer, return to engineering once in a while to check on the singularity and the SMES cells. It's always a good idea to make sure the containment isn't compromised. +As an Engineer, you can power the station solely with the solar arrays. While uninteresting, it is a much safer alternative to the singularity engine. +As an Engineer, you can repair windows by using a welding tool on them while on help intent. +As an Engineer, your construction permit allows you to create a new area, but has only one use. +As an Atmospheric Technician, you can unwrench a pipe regardless of the pressures of the gases inside, but if they're too high they can burst out and injure you! +As an Atmopsheric Technician, you should look into replacing your gas pumps with volumetric gas pumps, as those move air in flat numerical amounts, rather than percentages which leave trace gases. +As an Atmospheric Technician, you are better suited to fighting fires than anyone else. As such, you have access to better firesuits, nanofrost sprays, and a completely heat and fire proof rigsuit. +As the Head of Security, you are expected to coordinate your security force to handle any threat that comes to the station. Sometimes it means making use of the armory to handle a blob, sometimes it means being ruthless during a revolution or cult. +As the Head of Security, you can call for executions or forced cyborg-ing, but may require the Captain's approval. +As the Head of Security, don't let the power go to your head. You may have high access, great equipment, and a miniature army at your side, but being a terrible person without a good reason is grounds for banning. +As the Warden, your duty is to be the watchdog of the brig and handler of prisonners when little is happening, and to hand out equipment and weapons to the security officers when a crisis strikes. +As the Warden, keep a close eye on the armory at all times, as it is a favored strike point of nuclear operatives and cocky traitors. +As the Warden, if a prisoner's crimes are heinous enough you can put them in permabrig or the gulag. Make sure to check on them once in a while! +As a Security Officer, you should communicate and coordinate with your fellow officers using the security channel :s to avoid confusion. +As a Security Officer, you can use handcuffs on orange prisoner shoes to turn them into cuffed shoes. Anyone who wears these will be forced to walk. +As a Security Officer, your sechuds or HUDsunglasses can not only see what job someone works in and their criminal status, but also if they are loyalty implanted or not. Use this to your advantage in a revolution to definitively tell who is on your side! +As a Security Officer, loyalty implants can only prevent someone from being turned into a cultist: unlike revolutionaries, it will not de-cult them if they have already been converted. +As a Security Officer, examining someone while wearing sechuds or HUDsunglasses will let you set their arrest level, which will cause beepsky or any other security bots to chase after them. +As a Security Officer, implanting a gang member the first time will deconvert them, but destroy the implant. You must implant them a second time to protect them from further conversion attempts. Keep in mind that gang members have ways to destroy implants in people! +As the Detective, people leave fingerprints everywhere and on everything. With the exception of white latex, gloves will hide them. All is not lost, however, as gloves leave fibers specific to their kind such as black or nitrile, pointing to a general department. +As the Detective, you can use your forensics scanner from a distance. +As the Lawyer, try to negotiate with the Warden if sentences seem too high for the crime. +As the Head of Personnel, you are not higher ranking than other heads of staff, even though you are expected to take the Captain's place first should he go missing. If the situation seems too rough for you, consider allowing another head to become temporary Captain. +As the Head of Personnel, you are often just as large a target as the Captain because of the potential power your ID and computer can hand out. +As the Mime, you can place invisible walls that last for a short time to block other people. You can use it in a pinch to delay your pursuer. +As the Clown, if you lose your banana peel, you can still slip people with your PDA! Honk! +As the Clown, you have the clumsiness genetic defect, and will misfire guns if you try to fire them. +As the Chaplain, your null rod has a lot of functions: it can convert water into holy water, which if spread on the ground prevents wizards from jaunting away, can destroy cultist runes by hitting them, and is a very powerful weapon to boot! +As the Chaplain, your bible can heal people if you hit them with it, but it can also potentially cause brain damage. Use at your own risk! +As the Chaplain, you are much more likely to get a response by praying to the gods than most people. To boost your chances, make altars with colorful crayon runes, lit candles, and wire art. +As a Botanist, you can hack the MegaSeed Vendor to get access to more exotic seeds. These seeds can alternatively be ordered from cargo. +As a Botanist, you can mutate the plants growing in your hydroponics trays with unstable mutagen from chemistry to get special variations. +As a Botanist, you should look into increasing the potency of your plants. This increases the size, amount of chemicals, points gained from grinding them in the biogenerator, and lets people know you are a proficient botanist. +As the Chef, you can load your food into snack vending machines. +As the Chef, you can rename your custom made food with a pen. +As the Chef, any food you make will be much healthier than the junk food found in vendors. Having the crew routinely eating from you will provide minor buffs. +As the Bartender, the drinks you start with only give you the basics. If you want more advanced mixtures, look into working with chemistry, hydroponics, or even mining for things to grind up and throw in! +As a Cargo Technician, you can hack mulebots to make them faster, run over people in their way, and even let you ride them! +As a Cargo Technician, you can order contraband items from the supply shuttle console by de-constructing it and using a multitool on the circuit board, the re-assembling it. +As a Shaft Miner, the west side of the asteroid has a lot more minerals than on the east, but also has monsters there. +As a Shaft Miner, every monster on the west side of the asteroid has a pattern for you to learn, you can exploit this to minimize damage from the encounters. +As a Shaft Miner, you can harvest goliath plates from goliaths and upgrade your rigsuit with it, greatly reducing incoming melee damage. +As a Shaft Miner, you should always turn your jumpsuit sensors to maximum, a fellow miner or cyborg may come to save you if you die. +As a Traitor, the cryptographic sequencer (emag) can not only open doors, but also lockers, crates, APCs and more. It can hack cyborgs, and even cause bots to go berserk. Experiment! +As a Traitor, subverting the AI to serve you can make it an extremely powerful ally. However, be careful of the wording in the laws you give it, as it may use your poorly written laws against you! +As a Traitor, the Captain and the Head of Security are two of the most difficult to kill targets on the station. If either one is your target, plan carefully. +As a Traitor, you can manufacture and recycle revolver bullets at a hacked autolathe, making the revolver an extremely powerful tool. +As a Traitor, you may sometimes be assigned to hunt other traitors, and in turn be hunted by others. +As a Nuclear Operative, communication is key! Use :t or :h to speak to your fellow operatives and coordinate an attack plan. +As a Nuclear Operative, you should look into purchasing a syndicate cyborg, as they can provide heavy fire support, full access, and are immune to conventional stuns. +As a Nuclear Operative, stick together! While your equipment may save you from a lucky disarm or skillful taser bolt, your fellow operative are much better at saving your life: they can drag you away from danger while stunned and provide cover fire. +As a Nuclear Operative, remember that capturing the disk and arming the Nuke is your task, don't just wander off and kill random people! +As a Nuclear Operative, you might end up in a situation where the AI has bolted you into a room. Having some spare C4 in your pocket can save your life. +As a Monkey, you can crawl through air or scrubber vents by alt+left clicking them. You must drop everything you are wearing and holding to do this, however. +As a Monkey, you can still wear a few human items, like backpacks and gas masks, and still have two free hands. Remember that you cannot use guns! +As a Malfunctioning AI, you can shunt to an APC if the situation gets bad. This can allow the clock to tick down long enough for you to win, but keep in mind the crew's pinpointer will point to you when you do this. +As a Malfunctioning AI, you should either order your cyborgs to dismantle the robotics console or blow it up yourself in order to protect them. +As a Malfunctioning AI, you should look into flooding the station with plasma fires to kill off large portions of the crew, letting you pick off the remaining few with space suits who escaped. +As a Malfunctioning AI, never stop hacking APCs as it will continue to reduce the time left to win. +As an Alien, your melee prowess is unmatched, but your ranged abilities are sorely lacking. Make use of corners to force a melee confrontation! +As an Alien, you take double damage from all burn attacks, such as lasers, welding tools, and fires. Furthermore, fire can destroy your resin and eggs. Expose areas to space to starve away any flamethrower fires before they can do damage! +As an Alien, resin floors not only regenerate your plasma supply, but also passively heal you. Fight on resin floors to gain a home turf advantage! +As an Alien, the facehugger is by far your most powerful weapon because of its ability to instantly win a fight. Remember however that certain helmets, such as biohoods or space helmets will completely block facehugger attacks. +As an Alien, you are unable to pick up or use any human items or machinery. Instead, you should focus on sabotaging APCs, computers, cameras and either stowing, spacing, or melting any weapons you find. +As the Blob, you will spawn from your character from between a minute to 5 minutes after the round starts. Use this time to find a safe and well hidden location and evaluate where you will strike! +As the Blob, you can do various sabotage before you spawn, such as spacing the armory or disabling R&D. +As the Blob, keep your core some distance from space, as it is both expensive to expand onto space and easy to be attacked from. Emitter platforms built in space are especially dangerous. +As the Blob, if you invest into the split consciousness ability, it will create a second blob core, from a node, controlled by another player with a different reagent of their own. Coordinate and communicate your attacks and reactions with them! +As the Blob, you can randomly repick your reagent type if the crew has adapted and protected themselves against your current one. +As the Blob, you fight a war of attrition: Take out medbay and fight in chokepoints to prevent continued assaults and coordinated burst damage attacks! +As the Blob, remember that you can only expand onto tiles from cardinal directions, while the crew can attack you diagonally. Fight in narrow corridors or expand and widen across the width of the hallway to force confrontations where you can hit them! +As the Blob, don't neglect the creation of factories. These create spores that carry your reagent and can chase crewmembers far further than you. Spores can also be rallied to swarm the crew and cause panic, and can even take over corpses to create much more dangerous blob zombies! +As a Revolutionary, you cannot convert a head of staff or someone who has a loyalty implant, such as a security officer or those they implant. Implants can however be surgically removed, and do not carry over with cloning. Take control of medbay to keep control of conversions! +As a Revolutionary, cargo bay can be your best friend or your worst nightmare. In the best case scenario you will be able to order a limitless amount of guns and armor, in the worst case scenario security will take control and order a limitless number of loyalty implants to turn your fellow revolutionaries against you. +As a Revolutionary, your main power comes from how quickly you spread. Convert people as fast as you can and overwhelm the heads of staff before they can make it to security. +As a Changeling, the Steal DNA sting from changelings counts for your genome absorb objective, but does not let you change your powers. +As a Changeling, you can absorb someone by grabbing them around the neck and using the Absorb verb; this gives you the ability to rechoose your powers, the DNA of whoever you absorbed, the memory of the absorbed, and some samples of things the absorbed said. +As a Shadowling, you can only have 5 thralls on your side while keeping your human form. After that, you must turn into a shadowling to convert more thralls. +As a Shadowling, remember to communicate with your fellow shadowlings and thralls as you lack the firepower to take on much of anything by yourself until you ascend. +As a Cultist, invest in taking over xenobio, an adamantine golem army can quickly be converted into cultists and constructs. +As a Cultist, do not cause too much chaos before your objective is completed. If the shuttle gets called too soon, you may not have enough time to win. +As a Cultist, your team starts off very weak, but if necessary can quickly convert everything they have into raw power. Make sure you have the numbers and equipment to support going loud, or the cult will fall flat on its face. +As a Cultist, the Blood Boil rune instantly crits all non-cultists who can see it, but has a chance to explode runes near it, incuding itself. +As a Cultist, you can create an army of manifested goons using a combination of the Manifest rune, which creates homunculi from ghosts, and the Blood Drain rune, which drains life from anyone standing on any blood drain rune. +As a Cultist, you can communicate with your fellow cultists with your tome. If that's not available, you can use the Communicate verb at an extreme health cost. +You can deconvert Cultists by feeding them large amounts of holy water. +As a Wizard, you can turn people to stone, then animate it with a staff of animation to create an extremely powerful minion, for all of 5 minutes at least. +As a Wizard, the fireball spell performs very poorly at close range, as it can easily catch you in the blast. It is best used as a form of artillery down long hallways. +As a Wizard, summoning guns will turn a large portion of the crew against themselves, but will also give everyone anything from a pea shooter to a BFG 9000. Use at your own risk! +As a Wizard, the staff of chaos can fire any type of bolts from the magical wands. This can range from bolts of instant death to accidentally healing or reviving someone. +As a Wizard, most spells become unusable if you are not wearing your robes, hat, and sandals. +As a Gangster, you can destroy loyalty implants with an implant breaker, letting you reconvert that person.It actually converts them, past implants or gang status(though not the captain) +As a Gangster, your influence is based on how many areas you have tagged and how many people are wearing your gang's outfit; more areas and more people wearing the outfit will give you more influence. +As a Gang Boss, it is wise to promote at least one other person you think is good or effective, preferably two, as a backup if you get caught by security or enemy gangsters. +Gang outfits are very robust, giving moderate resistances to most direct damage at the cost of stealth. +As an Abductor, you can select where your victims will be sent on the ship control console. +As an Abductor Agent, the combat mode vest has much higher resistance to every kind of weapon, and your helmet prevents the AI from tracking you. +As an Abductor, the baton is set up to allow you to rapidly stun, sleep, and cuff: From stun mode, it cyles to sleep, then to cuff, allowing you to render a target helpless and unable to communicate very rapidly. +As a Ghost, you can see the inside of a container on the ground by clicking on it. +As a Ghost, you can double click on people, bots, or the singularity to follow them. \ No newline at end of file diff --git a/html/changelog.html b/html/changelog.html index 8c6e8a125ef..bb5ed90ea8d 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,91 @@ -->
+

02 August 2015

+

Incoming5643 updated:

+
    +
  • Syndicate toolboxes now come with never before seen red insulated gloves.
  • +
+

Steelpoint updated:

+
    +
  • Fixed multiple mapping errors for Boxstation and the mining base.
  • +
  • A circuit imprinter and exosuit fabrication board have been added to tech storage.
  • +
+

SvartaSvansen updated:

+
    +
  • Our lizard engineers have worked hard and managed to improve Centcom airlocks so they no longer disintegrate when the electronics are removed!
  • +
  • Put a safety net in place so future airlocks without assemblies produce the default assembly instead of disintegrating.
  • +
+ +

30 July 2015

+

Gun Hog updated:

+
    +
  • The Reactivate Camera power for Malfunctining AIs now costs 10 CPU, and works on the entire camera network, up to 30 cameras fixed.
  • +
  • The Upgrade Cameras power now costs 35 CPU, upgrades all cameras in the network to have EMP proofing, X-ray, and gives the AI night-vision.
  • +
+

Ikarrus updated:

+
    +
  • Door Access buttons can now be emagged to remove access restrictions.
  • +
+

LordPidey updated:

+
    +
  • Added a new medication, Miner's Salve. It heals brute/burn damage over time, and has the side effect of making the patient think their wounds are fully healed. It is mixed with water+iron+oil, or grind a twinkie, a sheet of metal, and a sheet of plasma.
  • +
  • Added a grinder to the mining station.
  • +
+

Midaychi updated:

+
    +
  • Random loot has been added to the derelict as salvage for drones.
  • +
+

Scones updated:

+
    +
  • Adds a Rice Hat to the biogenerator.
  • +
+ +

29 July 2015

+

AnturK updated:

+
    +
  • Aliens can now mine through asteroid rock.
  • +
+

GunHog updated:

+
    +
  • Cyborg headlamps have a short cooldown before reactivation when forcibly deactivated.
  • +
  • Shadowling's Veil now shuts down headlamps for the ability's entire duration.
  • +
+

Kor updated:

+
    +
  • Eating the heart of a Slaughter Demon will grant you dark powers.
  • +
+

freerealestate updated:

+
    +
  • Fixed bug where copying with ctrl+C didn't work due to it being assigned to resist.
  • +
  • Changed resist to B (hotkeys mode) and ctrl+B (either mode) instead.
  • +
  • Removed End resist from cyborgs.
  • +
+ +

28 July 2015

+

Anonus updated:

+
    +
  • New gang tags for Omni and Prima gangs.
  • +
+

Chiefwaffles updated:

+
    +
  • After realizing how often AIs tend to 'disappear', Central Command has authorized the shipment of the Automated Announcement System to take over the AI's responsibility of announcing new arrivals.
  • +
  • In addition, users are able to configure the messages to their liking. Early testing has shown that this feature may be vulnerable to malicious external elements!
  • +
  • The station's R&D software has been updated so it can now succesfully create its own prototype AAS board once the prerequisite levels have been met.
  • +
+

Dorsisdwarf updated:

+
    +
  • Increased the cost of Bioterror darts to 6TC.
  • +
+

Incoming5643 updated:

+
    +
  • Double Agents no longer know they're Double Agents and not just standard Traitors.
  • +
+

xxalpha updated:

+
    +
  • Removed Anti-Drop and Nutriment Pump implants from Nuclear Operative's uplink.
  • +
+

27 July 2015

Bgobandit updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 2aedf02ebd7..6ed5452de7c 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -1372,3 +1372,67 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. kingofkosmos: - rscadd: Added a link to re-enter corpse to alert when your body is placed in a cloning scanner. +2015-07-28: + Anonus: + - imageadd: New gang tags for Omni and Prima gangs. + Chiefwaffles: + - rscadd: After realizing how often AIs tend to 'disappear', Central Command has + authorized the shipment of the Automated Announcement System to take over the + AI's responsibility of announcing new arrivals. + - rscadd: In addition, users are able to configure the messages to their liking. + Early testing has shown that this feature may be vulnerable to malicious external + elements! + - rscadd: The station's R&D software has been updated so it can now succesfully + create its own prototype AAS board once the prerequisite levels have been met. + Dorsisdwarf: + - tweak: Increased the cost of Bioterror darts to 6TC. + Incoming5643: + - experiment: Double Agents no longer know they're Double Agents and not just standard + Traitors. + xxalpha: + - rscdel: Removed Anti-Drop and Nutriment Pump implants from Nuclear Operative's + uplink. +2015-07-29: + AnturK: + - rscadd: Aliens can now mine through asteroid rock. + GunHog: + - tweak: Cyborg headlamps have a short cooldown before reactivation when forcibly + deactivated. + - bugfix: Shadowling's Veil now shuts down headlamps for the ability's entire duration. + Kor: + - rscadd: Eating the heart of a Slaughter Demon will grant you dark powers. + freerealestate: + - bugfix: Fixed bug where copying with ctrl+C didn't work due to it being assigned + to resist. + - rscadd: Changed resist to B (hotkeys mode) and ctrl+B (either mode) instead. + - rscdel: Removed End resist from cyborgs. +2015-07-30: + Gun Hog: + - tweak: The Reactivate Camera power for Malfunctining AIs now costs 10 CPU, and + works on the entire camera network, up to 30 cameras fixed. + - tweak: The Upgrade Cameras power now costs 35 CPU, upgrades all cameras in the + network to have EMP proofing, X-ray, and gives the AI night-vision. + Ikarrus: + - rscadd: Door Access buttons can now be emagged to remove access restrictions. + LordPidey: + - rscadd: Added a new medication, Miner's Salve. It heals brute/burn damage over + time, and has the side effect of making the patient think their wounds are fully + healed. It is mixed with water+iron+oil, or grind a twinkie, a sheet of metal, + and a sheet of plasma. + - rscadd: Added a grinder to the mining station. + Midaychi: + - rscadd: Random loot has been added to the derelict as salvage for drones. + Scones: + - rscadd: Adds a Rice Hat to the biogenerator. +2015-08-02: + Incoming5643: + - rscadd: Syndicate toolboxes now come with never before seen red insulated gloves. + Steelpoint: + - bugfix: Fixed multiple mapping errors for Boxstation and the mining base. + - resadd: A circuit imprinter and exosuit fabrication board have been added to tech + storage. + SvartaSvansen: + - rscadd: Our lizard engineers have worked hard and managed to improve Centcom airlocks + so they no longer disintegrate when the electronics are removed! + - tweak: Put a safety net in place so future airlocks without assemblies produce + the default assembly instead of disintegrating. diff --git a/html/changelogs/KORPHAERON-PR-SOULSTONE.yml b/html/changelogs/KORPHAERON-PR-SOULSTONE.yml new file mode 100644 index 00000000000..fc3c9e715bb --- /dev/null +++ b/html/changelogs/KORPHAERON-PR-SOULSTONE.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# spellcheck (typo fixes) +# experiment +# tgs (TG-ported fixes?) +################################# + +# Your name. +author: Kor + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Soulstones will now attempt to pull ghosts from beyond if the targeted corpse has no soul." diff --git a/html/changelogs/Summoners99-hisssss.yml b/html/changelogs/Summoners99-hisssss.yml new file mode 100644 index 00000000000..29532476ba3 --- /dev/null +++ b/html/changelogs/Summoners99-hisssss.yml @@ -0,0 +1,8 @@ +author: Summoner99 + +delete-after: True + +changes: + - rscadd: "Added the *roar emote back to Alien Larva" + - bugfix: "Fixed aliens not being able to do the *hiss and *screech emotes" + - tweak: "Changed how the plural emote system works and now some emotes have plural versions, example is: *hiss and *hisses." \ No newline at end of file diff --git a/icons/effects/crayondecal.dmi b/icons/effects/crayondecal.dmi index 5c44f86b6cb..89b071a9162 100644 Binary files a/icons/effects/crayondecal.dmi and b/icons/effects/crayondecal.dmi differ diff --git a/icons/effects/station_explosion.dmi b/icons/effects/station_explosion.dmi index 6ce74dbb36d..7dcab377107 100644 Binary files a/icons/effects/station_explosion.dmi and b/icons/effects/station_explosion.dmi differ diff --git a/icons/mob/drone.dmi b/icons/mob/drone.dmi index b27a8cba56c..e4c4b84990e 100644 Binary files a/icons/mob/drone.dmi and b/icons/mob/drone.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 1157611aa23..76941cba399 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index ea688d4249d..c7876bb0b7c 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/atmospherics/components/unary_devices.dmi b/icons/obj/atmospherics/components/unary_devices.dmi index 6681804dd4f..b1c7922190b 100644 Binary files a/icons/obj/atmospherics/components/unary_devices.dmi and b/icons/obj/atmospherics/components/unary_devices.dmi differ diff --git a/icons/obj/atmospherics/pipes/disposal.dmi b/icons/obj/atmospherics/pipes/disposal.dmi index 086915ed3eb..b0a9b58b0d7 100644 Binary files a/icons/obj/atmospherics/pipes/disposal.dmi and b/icons/obj/atmospherics/pipes/disposal.dmi differ diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index e44ddedfcd4..a9bb0a68c02 100644 Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index d73ae4f3b36..7e46aa87a45 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index 4fbc9bd674a..95b18b2e916 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/doors/door_assembly.dmi b/icons/obj/doors/door_assembly.dmi index 94ed8ac6c2d..06689649d8e 100644 Binary files a/icons/obj/doors/door_assembly.dmi and b/icons/obj/doors/door_assembly.dmi differ diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi index fb3f05626c2..39a49078881 100644 Binary files a/icons/obj/guns/energy.dmi and b/icons/obj/guns/energy.dmi differ diff --git a/icons/obj/machines/telecomms.dmi b/icons/obj/machines/telecomms.dmi index f47fcc63f87..7f5f05e3aff 100644 Binary files a/icons/obj/machines/telecomms.dmi and b/icons/obj/machines/telecomms.dmi differ diff --git a/icons/obj/wizard.dmi b/icons/obj/wizard.dmi index c2f7bfcc202..c9d0f461bc5 100644 Binary files a/icons/obj/wizard.dmi and b/icons/obj/wizard.dmi differ diff --git a/install-byond.sh b/install-byond.sh new file mode 100644 index 00000000000..da2756a8df2 --- /dev/null +++ b/install-byond.sh @@ -0,0 +1,14 @@ +#!/bin/sh +set -e +if [ -d "$HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR}/byond/bin" ]; +then + echo "Using cached directory." +else + echo "Setting up BYOND." + mkdir -p "$HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR}" + cd "$HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR}" + curl "http://www.byond.com/download/build/${BYOND_MAJOR}/${BYOND_MAJOR}.${BYOND_MINOR}_byond_linux.zip" -o byond.zip + unzip byond.zip + cd byond + make here +fi \ No newline at end of file diff --git a/interface/interface.dm b/interface/interface.dm index 348d110e134..a97aa48e385 100644 --- a/interface/interface.dm +++ b/interface/interface.dm @@ -91,7 +91,7 @@ Hotkey-Mode: (hotkey-mode must be on) \tm = me \tt = say \to = OOC -\tc = resist +\tb = resist \tx = swap-hand \tz = activate held object (or y) \tf = cycle-intents-left @@ -111,7 +111,7 @@ Any-Mode: (hotkey doesn't need to be on) \tCtrl+q = drop \tCtrl+e = equip \tCtrl+r = throw -\tCtrl+c = resist +\tCtrl+b = resist \tCtrl+x = swap-hand \tCtrl+z = activate held object (or Ctrl+y) \tCtrl+f = cycle-intents-left @@ -142,7 +142,7 @@ Hotkey-Mode: (hotkey-mode must be on) \tq = unequip active module \tt = say \tx = cycle active modules -\tc = resist +\tb = resist \tz = activate held object (or y) \tf = cycle-intents-left \tg = cycle-intents-right @@ -160,7 +160,7 @@ Any-Mode: (hotkey doesn't need to be on) \tCtrl+w = up \tCtrl+q = unequip active module \tCtrl+x = cycle active modules -\tCtrl+c = resist +\tCtrl+b = resist \tCtrl+z = activate held object (or Ctrl+y) \tCtrl+f = cycle-intents-left \tCtrl+g = cycle-intents-right diff --git a/interface/skin.dmf b/interface/skin.dmf index cc847abc342..7db57837c75 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -100,11 +100,11 @@ macro "borghotkeymode" command = ".west" is-disabled = false elem - name = "C" + name = "B" command = "resist" is-disabled = false elem - name = "CTRL+C" + name = "CTRL+B" command = "resist" is-disabled = false elem @@ -306,7 +306,7 @@ macro "macro" command = ".west" is-disabled = false elem - name = "CTRL+C" + name = "CTRL+B" command = "resist" is-disabled = false elem @@ -496,11 +496,11 @@ macro "hotkeymode" command = ".west" is-disabled = false elem - name = "C" + name = "B" command = "resist" is-disabled = false elem - name = "CTRL+C" + name = "CTRL+B" command = "resist" is-disabled = false elem @@ -657,10 +657,6 @@ macro "borgmacro" name = "SOUTHEAST" command = ".southeast" is-disabled = false - elem - name = "SOUTHWEST" - command = "resist" - is-disabled = false elem name = "NORTHWEST" command = "unequip-module" @@ -726,7 +722,7 @@ macro "borgmacro" command = ".west" is-disabled = false elem - name = "CTRL+C" + name = "CTRL+B" command = "resist" is-disabled = false elem @@ -1229,6 +1225,8 @@ window "chemdispenser" keep-aspect = false align = center text-wrap = false + allow-html = false + letterbox = true elem "eject" type = BUTTON pos = 264,4 @@ -1395,6 +1393,8 @@ window "chemdispenser" keep-aspect = false align = center text-wrap = false + allow-html = false + letterbox = true elem "child1" type = CHILD pos = 0,40 @@ -1516,6 +1516,8 @@ window "chemdispenser_reagents" keep-aspect = false align = center text-wrap = false + allow-html = false + letterbox = true window "mainwindow" elem "mainwindow" @@ -1726,6 +1728,8 @@ window "mapwindow" on-size = "" icon-size = 0 text-mode = false + letterbox = true + zoom = 0 on-show = ".winset\"mainwindow.mainvsplit.left=mapwindow\"" on-hide = ".winset\"mainwindow.mainvsplit.left=\"" style = "" @@ -2254,4 +2258,6 @@ window "infowindow" on-show = ".winset\"rpane.infob.is-visible=true;rpane.browseb.is-visible=true?rpane.infob.pos=130,0:rpane.infob.pos=65,0 rpane.textb.is-visible=true rpane.infob.is-checked=true rpane.rpanewindow.pos=0,30 rpane.rpanewindow.size=0x0 rpane.rpanewindow.left=infowindow\"" on-hide = ".winset\"rpane.infob.is-visible=false;rpane.browseb.is-visible=true?rpane.browseb.is-checked=true rpane.rpanewindow.left=browserwindow:rpane.textb.is-visible=true rpane.rpanewindow.pos=0,30 rpane.rpanewindow.size=0x0 rpane.rpanewindow.left=\"" on-tab = "" + prefix-color = none + suffix-color = none diff --git a/tgstation.dme b/tgstation.dme index 856510ba2aa..da3899506b4 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -381,6 +381,7 @@ #include "code\game\machinery\ai_slipper.dm" #include "code\game\machinery\airlock_control.dm" #include "code\game\machinery\alarm.dm" +#include "code\game\machinery\announcement_system.dm" #include "code\game\machinery\atmo_control.dm" #include "code\game\machinery\autolathe.dm" #include "code\game\machinery\Beacon.dm" @@ -1091,6 +1092,7 @@ #include "code\modules\mob\dead\observer\logout.dm" #include "code\modules\mob\dead\observer\observer.dm" #include "code\modules\mob\dead\observer\say.dm" +#include "code\modules\mob\living\bloodcrawl.dm" #include "code\modules\mob\living\damage_procs.dm" #include "code\modules\mob\living\death.dm" #include "code\modules\mob\living\emote.dm" @@ -1432,7 +1434,8 @@ #include "code\modules\reagents\reagent_containers\syringes.dm" #include "code\modules\recycling\conveyor2.dm" #include "code\modules\recycling\disposal-construction.dm" -#include "code\modules\recycling\disposal.dm" +#include "code\modules\recycling\disposal-structures.dm" +#include "code\modules\recycling\disposal-unit.dm" #include "code\modules\recycling\sortingmachinery.dm" #include "code\modules\research\circuitprinter.dm" #include "code\modules\research\designs.dm" diff --git a/tools/dmm2tgm/dmm2tgm.py b/tools/dmm2tgm/dmm2tgm.py deleted file mode 100644 index ae22a073eee..00000000000 --- a/tools/dmm2tgm/dmm2tgm.py +++ /dev/null @@ -1,79 +0,0 @@ - -import sys - -# .dmm format converter, by RemieRichards -# Version 2.0 -# Converts the internal structure of a .dmm file to a syntax -# that git can better handle conflicts-wise, it's also fairly human readable! -# Processes Boxstation (tgstation.2.1.3) almost instantly - -#TWEAKABLE VARIABLES -map_file = "tgstation.2.1.3.dmm" #Map file, .dmm or .txt -output_file = "" #Output file, .dmm or .txt, leave blank to overwrite map_file - - -#CHECK FOR PREVIOUS CONVERSION -with open(map_file, "r") as conversion_candidate: - header = conversion_candidate.readline() - if header.find("//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE") != -1: - sys.exit("This map has already been converted, cancelling...") - - -#ACTUAL CONVERSION -with open(map_file, "r+") as unconverted_map: - characters = unconverted_map.read() - converted_map = "" - in_object_block = False #() - in_variable_block = False #{} - in_quote_block = False #'' - in_double_quote_block = False #"" - for char in characters: - if char == "(" : - if not in_object_block: - if not in_quote_block: - if not in_double_quote_block: - if not in_variable_block: - in_object_block = True - char = char + "\n" - if char == ")": - if in_object_block: - if not in_quote_block: - if not in_double_quote_block: - if not in_variable_block: - in_object_block = False - if char == "{": - in_variable_block = True - if in_object_block: - char = char + "\n\t" - if char == "}": - in_variable_block = False - if in_object_block: - char = "\n\t"+char - if char == ",": - if not in_variable_block: - char = char + "\n" - if char == "'": - if in_quote_block: - in_quote_block = False - else: - in_quote_block = True - if char == "\"": - if in_double_quote_block: - in_double_quote_block = False - else: - in_double_quote_block = True - if char == ";": - if not in_quote_block: - if not in_double_quote_block: - char = char + "\n\t" - - converted_map = converted_map + char - -if output_file == "": - output_file = map_file -with open(output_file, "r+") as final_converted_map: - final_converted_map.write("//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE \n") - final_converted_map.write(converted_map) - - - diff --git a/tools/mapmerge/MapMerge.jar b/tools/mapmerge/MapMerge.jar index e0bd47ea836..c8e4349ba42 100644 Binary files a/tools/mapmerge/MapMerge.jar and b/tools/mapmerge/MapMerge.jar differ diff --git a/tools/mapmerge/Run Map Merge.bat b/tools/mapmerge/Run Map Merge.bat index 1c159f79ca2..5bb8f1736b9 100644 --- a/tools/mapmerge/Run Map Merge.bat +++ b/tools/mapmerge/Run Map Merge.bat @@ -1,5 +1,4 @@ @echo off - -java -jar MapMerge.jar ../../_maps/ +call java -jar MapMerge.jar "../../_maps/" /wait pause \ No newline at end of file diff --git a/tools/mapmerge/Source/.settings/org.eclipse.jdt.ui.prefs b/tools/mapmerge/Source/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 00000000000..ea0a123b8b0 --- /dev/null +++ b/tools/mapmerge/Source/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,60 @@ +cleanup.add_default_serial_version_id=false +cleanup.add_generated_serial_version_id=true +cleanup.add_missing_annotations=true +cleanup.add_missing_deprecated_annotations=true +cleanup.add_missing_methods=false +cleanup.add_missing_nls_tags=false +cleanup.add_missing_override_annotations=true +cleanup.add_missing_override_annotations_interface_methods=true +cleanup.add_serial_version_id=false +cleanup.always_use_blocks=true +cleanup.always_use_parentheses_in_expressions=true +cleanup.always_use_this_for_non_static_field_access=false +cleanup.always_use_this_for_non_static_method_access=false +cleanup.convert_functional_interfaces=false +cleanup.convert_to_enhanced_for_loop=false +cleanup.correct_indentation=true +cleanup.format_source_code=true +cleanup.format_source_code_changes_only=false +cleanup.insert_inferred_type_arguments=false +cleanup.make_local_variable_final=true +cleanup.make_parameters_final=false +cleanup.make_private_fields_final=true +cleanup.make_type_abstract_if_missing_method=false +cleanup.make_variable_declarations_final=false +cleanup.never_use_blocks=false +cleanup.never_use_parentheses_in_expressions=false +cleanup.organize_imports=true +cleanup.qualify_static_field_accesses_with_declaring_class=false +cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +cleanup.qualify_static_member_accesses_with_declaring_class=true +cleanup.qualify_static_method_accesses_with_declaring_class=true +cleanup.remove_private_constructors=true +cleanup.remove_redundant_type_arguments=true +cleanup.remove_trailing_whitespaces=false +cleanup.remove_trailing_whitespaces_all=true +cleanup.remove_trailing_whitespaces_ignore_empty=false +cleanup.remove_unnecessary_casts=true +cleanup.remove_unnecessary_nls_tags=true +cleanup.remove_unused_imports=true +cleanup.remove_unused_local_variables=true +cleanup.remove_unused_private_fields=true +cleanup.remove_unused_private_members=true +cleanup.remove_unused_private_methods=true +cleanup.remove_unused_private_types=true +cleanup.sort_members=false +cleanup.sort_members_all=false +cleanup.use_anonymous_class_creation=false +cleanup.use_blocks=true +cleanup.use_blocks_only_for_return_and_throw=false +cleanup.use_lambda=true +cleanup.use_parentheses_in_expressions=true +cleanup.use_this_for_non_static_field_access=true +cleanup.use_this_for_non_static_field_access_only_if_necessary=true +cleanup.use_this_for_non_static_method_access=true +cleanup.use_this_for_non_static_method_access_only_if_necessary=true +cleanup.use_type_arguments=false +cleanup_profile=_Default +cleanup_settings_version=2 +eclipse.preferences.version=1 diff --git a/tools/mapmerge/Source/bin/MapMerge.class b/tools/mapmerge/Source/bin/MapMerge.class new file mode 100644 index 00000000000..9a6d17f143f Binary files /dev/null and b/tools/mapmerge/Source/bin/MapMerge.class differ diff --git a/tools/mapmerge/Source/bin/MapMergerMain.class b/tools/mapmerge/Source/bin/MapMergerMain.class deleted file mode 100644 index c0ec043c239..00000000000 Binary files a/tools/mapmerge/Source/bin/MapMergerMain.class and /dev/null differ diff --git a/tools/mapmerge/Source/bin/MapPatcher Source/Location.class b/tools/mapmerge/Source/bin/MapPatcher Source/Location.class deleted file mode 100644 index a6ad8cca026..00000000000 Binary files a/tools/mapmerge/Source/bin/MapPatcher Source/Location.class and /dev/null differ diff --git a/tools/mapmerge/Source/bin/MapPatcher Source/Map.class b/tools/mapmerge/Source/bin/MapPatcher Source/Map.class deleted file mode 100644 index 814958657bc..00000000000 Binary files a/tools/mapmerge/Source/bin/MapPatcher Source/Map.class and /dev/null differ diff --git a/tools/mapmerge/Source/bin/MapPatcher Source/MapPatcher.class b/tools/mapmerge/Source/bin/MapPatcher Source/MapPatcher.class deleted file mode 100644 index 286c9a4a9c3..00000000000 Binary files a/tools/mapmerge/Source/bin/MapPatcher Source/MapPatcher.class and /dev/null differ diff --git a/tools/mapmerge/Source/bin/MapPatcher Source/SavingThread.class b/tools/mapmerge/Source/bin/MapPatcher Source/SavingThread.class deleted file mode 100644 index 0be31fccea8..00000000000 Binary files a/tools/mapmerge/Source/bin/MapPatcher Source/SavingThread.class and /dev/null differ diff --git a/tools/mapmerge/Source/src/MapMerge.java b/tools/mapmerge/Source/src/MapMerge.java new file mode 100644 index 00000000000..a2058480a21 --- /dev/null +++ b/tools/mapmerge/Source/src/MapMerge.java @@ -0,0 +1,105 @@ +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Scanner; + +public class MapMerge { + + private static Scanner input = new Scanner(System.in); + private static Path pathToMaps; + + public static void main(String[] mapPath) throws IOException { + pathToMaps = Paths.get(mapPath[0]); + FileFinder dmmFinder = new FileFinder("*.dmm"); + Files.walkFileTree(pathToMaps, dmmFinder); + ArrayList foundFiles = dmmFinder.foundPaths; + if (foundFiles.size() > 0) { + try { + MapMerge.merge(foundFiles); + } catch (Exception e) { + System.out.println("Something went wrong."); + e.printStackTrace(); + } + } else { + System.out.println("No files were found in provided directory!"); + System.out.print("Path to maps folder: "); + pathToMaps = Paths.get(input.nextLine()); + dmmFinder = new FileFinder("*.dmm"); + Files.walkFileTree(pathToMaps, dmmFinder); + foundFiles = dmmFinder.foundPaths; + try { + MapMerge.merge(foundFiles); + } catch (Exception e) { + System.out.println("Something went wrong."); + e.printStackTrace(); + } + } + } + + public static void merge(ArrayList foundFiles) throws IOException { + + System.out.println("How many files do you want to merge?"); + int selection1; + inputCheck: while (true) { + while (!input.hasNextInt()) { + String temp = input.next(); + System.out.println(temp + " is not a valid int."); + } + selection1 = input.nextInt(); + if (selection1 < 0) { + System.out.println("Use a number greater than 0!"); + continue inputCheck; + } else { + break inputCheck; + } + } + + for (int numOfFiles = selection1; numOfFiles != 0; numOfFiles--) { + + for (int num = 0; num < foundFiles.size(); num++) { + System.out.println(num + ": " + foundFiles.get(num)); + } + + System.out.print("File to use: "); + int selection2; + inputCheck: while (true) { + while (!input.hasNextInt()) { + String temp = input.next(); + System.out.println(temp + " is not a valid int."); + } + selection2 = input.nextInt(); + if ((selection2 < 0) || (selection2 >= foundFiles.size())) { + if (selection2 < 0) { + System.out.println("Use a number greater than 0!"); + } else { + System.out.println("Use a number less than " + foundFiles.size() + "!"); + } + continue inputCheck; + } else { + break inputCheck; + } + } + + String selected_map = foundFiles.get(selection2) + ""; + String backup_map = selected_map + ".backup"; + String edited_map = selected_map; + String to_save = selected_map; + String[] passInto = { "-clean", backup_map, edited_map, to_save }; + MapPatcher.main(passInto); + try{ + Process process = new ProcessBuilder("dmm2tgm\\dmm2tgm.exe", selected_map).start(); + }catch(Exception e1){ + System.out.println("You are not on a windows machine, trying the .py"); + try{ + Process process = new ProcessBuilder("dmm2tgm\\Source\\dmm2tgm.py", selected_map).start(); + }catch(Exception e2){ + System.out.println("You do not have python 2.7.x installed."); + System.out.println("Downloads can be found here: https://www.python.org/downloads/"); + } + } + + } + } +} \ No newline at end of file diff --git a/tools/mapmerge/Source/src/MapMergerMain.java b/tools/mapmerge/Source/src/MapMergerMain.java deleted file mode 100644 index 873ae69cd84..00000000000 --- a/tools/mapmerge/Source/src/MapMergerMain.java +++ /dev/null @@ -1,96 +0,0 @@ -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Scanner; - -public class MapMergerMain { - - private static Scanner input = new Scanner(System.in); - - public static void main(String[] mapPath) throws IOException{ - Path pathToMaps = Paths.get(mapPath[0]); - FileFinder dmmFinder = new FileFinder("*.dmm"); - Files.walkFileTree(pathToMaps, dmmFinder); - ArrayList foundFiles = dmmFinder.foundPaths; - if (foundFiles.size() > 0) { - try{ - merge(foundFiles); - }catch(Exception e){ - System.out.println("Something went wrong."); - e.printStackTrace(); - } - }else{ - System.out.println("No files were found in provided directory!"); - System.out.print("Path to maps folder: "); - pathToMaps = Paths.get(input.nextLine()); - dmmFinder = new FileFinder("*.dmm"); - Files.walkFileTree(pathToMaps, dmmFinder); - foundFiles = dmmFinder.foundPaths; - try{ - merge(foundFiles); - }catch(Exception e){ - System.out.println("Something went wrong."); - e.printStackTrace(); - } - } - } - - - public static void merge(ArrayList foundFiles){ - - System.out.println("How many files do you want to merge?"); - int selection1; - inputCheck:while(true){ - while(!input.hasNextInt()){ - String temp = input.next(); - System.out.println(temp + " is not a valid int."); - } - selection1 = input.nextInt(); - if(selection1 < 0){ - System.out.println("Use a number greater than 0!"); - continue inputCheck; - }else{ - break inputCheck; - } - } - - for(int numOfFiles = selection1; numOfFiles != 0; numOfFiles--){ - - for(int num = 0;num < foundFiles.size();num++){ - System.out.println(num + ": " + foundFiles.get(num)); - } - - System.out.print("File to use: "); - int selection2; - inputCheck:while(true){ - while(!input.hasNextInt()){ - String temp = input.next(); - System.out.println(temp + " is not a valid int."); - } - selection2 = input.nextInt(); - if(selection2 < 0 || selection2 >= foundFiles.size()){ - if(selection2 < 0){ - System.out.println("Use a number greater than 0!"); - }else{ - System.out.println("Use a number less than " + foundFiles.size() +"!"); - } - continue inputCheck; - }else{ - break inputCheck; - } - } - - String newMap = foundFiles.get(selection2) + ""; - String oldMap = foundFiles.get(selection2) + ".backup"; - String[] passInto = new String[4]; - passInto[0] = "-clean"; - passInto[1] = oldMap; - passInto[2] = newMap; - passInto[3] = newMap; - MapPatcher.main(passInto); - } - } - -} \ No newline at end of file diff --git a/tools/mapmerge/dmm2tgm/Source/dmm2tgm.py b/tools/mapmerge/dmm2tgm/Source/dmm2tgm.py new file mode 100644 index 00000000000..637986f9a67 --- /dev/null +++ b/tools/mapmerge/dmm2tgm/Source/dmm2tgm.py @@ -0,0 +1,77 @@ + +import sys + +# .dmm format converter, by RemieRichards +# Version 2.0 +# Converts the internal structure of a .dmm file to a syntax +# that git can better handle conflicts-wise, it's also fairly human readable! +# Processes Boxstation (tgstation.2.1.3) almost instantly + + +def convert_map(map_file): + #CHECK FOR PREVIOUS CONVERSION + with open(map_file, "r") as conversion_candidate: + header = conversion_candidate.readline() + if header.find("//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE") != -1: + sys.exit() + return + + + #ACTUAL CONVERSION + with open(map_file, "r+") as unconverted_map: + characters = unconverted_map.read() + converted_map = "" + in_object_block = False #() + in_variable_block = False #{} + in_quote_block = False #'' + in_double_quote_block = False #"" + for char in characters: + if not in_quote_block: #Checking for things like "Flashbangs (Warning!)" Because we only care about ({'";, that are used as byond syntax, not strings + if not in_double_quote_block: + if not in_variable_block: + if char == "(": + in_object_block = True + char = char + "\n" + if char == ")": + in_object_block = False + if char == ",": + char = char + "\n" + + if char == "{": + in_variable_block = True + if in_object_block: + char = char + "\n\t" + if char == "}": + in_variable_block = False + if in_object_block: + char = "\n\t" + char + + if char == ";": + char = char + "\n\t" + + if char == "\"": + if in_double_quote_block: + in_double_quote_block = False + else: + in_double_quote_block = True + + if char == "'": + if not in_double_quote_block: + if in_quote_block: + in_quote_block = False + else: + in_quote_block = True + + converted_map = converted_map + char + + #OVERWRITE MAP FILE WITH CONVERTED MAP STRING + with open(map_file, "r+") as final_converted_map: + final_converted_map.write("//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE \n") + final_converted_map.write(converted_map) + + sys.exit() + + +if sys.argv[1]: #Run like dmm2tgm.py "folder/folder/a_map.dmm" + convert_map(sys.argv[1]) + diff --git a/tools/mapmerge/dmm2tgm/_hashlib.pyd b/tools/mapmerge/dmm2tgm/_hashlib.pyd new file mode 100644 index 00000000000..9cf823e4757 Binary files /dev/null and b/tools/mapmerge/dmm2tgm/_hashlib.pyd differ diff --git a/tools/mapmerge/dmm2tgm/bz2.pyd b/tools/mapmerge/dmm2tgm/bz2.pyd new file mode 100644 index 00000000000..b388111d6ac Binary files /dev/null and b/tools/mapmerge/dmm2tgm/bz2.pyd differ diff --git a/tools/mapmerge/dmm2tgm/dmm2tgm.exe b/tools/mapmerge/dmm2tgm/dmm2tgm.exe new file mode 100644 index 00000000000..fba25d71d02 Binary files /dev/null and b/tools/mapmerge/dmm2tgm/dmm2tgm.exe differ diff --git a/tools/mapmerge/dmm2tgm/library.zip b/tools/mapmerge/dmm2tgm/library.zip new file mode 100644 index 00000000000..068102032b4 Binary files /dev/null and b/tools/mapmerge/dmm2tgm/library.zip differ diff --git a/tools/mapmerge/dmm2tgm/python27.dll b/tools/mapmerge/dmm2tgm/python27.dll new file mode 100644 index 00000000000..e45374fb339 Binary files /dev/null and b/tools/mapmerge/dmm2tgm/python27.dll differ diff --git a/tools/mapmerge/dmm2tgm/select.pyd b/tools/mapmerge/dmm2tgm/select.pyd new file mode 100644 index 00000000000..62104e489e7 Binary files /dev/null and b/tools/mapmerge/dmm2tgm/select.pyd differ diff --git a/tools/mapmerge/dmm2tgm/unicodedata.pyd b/tools/mapmerge/dmm2tgm/unicodedata.pyd new file mode 100644 index 00000000000..f6a0f525618 Binary files /dev/null and b/tools/mapmerge/dmm2tgm/unicodedata.pyd differ diff --git a/tools/mapmerge/dmm2tgm/w9xpopen.exe b/tools/mapmerge/dmm2tgm/w9xpopen.exe new file mode 100644 index 00000000000..93036283633 Binary files /dev/null and b/tools/mapmerge/dmm2tgm/w9xpopen.exe differ