Merge remote-tracking branch 'upstream/master' into lungsss

# Conflicts:
#	code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
#	code/modules/mob/living/carbon/carbon_defines.dm
This commit is contained in:
Fox-McCloud
2017-11-18 18:49:47 -05:00
394 changed files with 15085 additions and 5344 deletions
+10 -10
View File
@@ -77,19 +77,19 @@ actual development.
do this:
```
/datum/datum1/proc/proc1()
if (thing1)
if (!thing2)
if (thing3 == 30)
if(thing1)
if(!thing2)
if(thing3 == 30)
do stuff
```
Instead, you should do this:
```
/datum/datum1/proc/proc1()
if (!thing1)
if(!thing1)
return
if (thing2)
if(thing2)
return
if (thing3 != 30)
if(thing3 != 30)
return
do stuff
```
@@ -101,7 +101,7 @@ actual development.
`visible_message()`.
- Bad:
```
for (var/mob/M in viewers(src))
for(var/mob/M in viewers(src))
M.show_message("<span class='warning'>Arbitrary text</span>")
```
- Good:
@@ -151,9 +151,9 @@ responsible for properly tagging new pull requests and issues, moderating commen
pull requests/issues, and merging/closing pull requests.
### Maintainer List
- [MarkvA](https://github.com/Markolie)
- [tigercat2000](https://github.com/tigercat2000)
- [Fox P McCloud](https://github.com/Fox-McCloud)
- [TheDZD](https://github.com/TheDZD)
- [Crazy Lemon](https://github.com/Crazylemon64)
### Maintainer instructions
- Do not `self-merge`; this refers to the practice of opening a pull request, then
@@ -168,4 +168,4 @@ pull requests/issues, and merging/closing pull requests.
- The shortest waiting period for -any- feature or balancing altering pull request is 24
hours, to allow other coders and the community time to discuss the proposed changes.
- If the discussion is active, or the change is controversial, the pull request is to be
put on hold until a consensus is reached.
put on hold until a consensus is reached.
+2 -2
View File
@@ -7,8 +7,8 @@ git:
env:
global:
- BYOND_MAJOR="511"
- BYOND_MINOR="1380"
- BYOND_MAJOR="512"
- BYOND_MINOR="1395"
- BYOND_MACRO_COUNT=2
matrix:
- DM_MAPFILE="cyberiad"
+12 -13
View File
@@ -12,19 +12,16 @@ z6 = russian derelict
z7 = empty
*/
#if !defined(MAP_FILE)
#if !defined(USING_MAP_DATUM)
#include "map_files\cyberiad\cyberiad.dmm"
#include "map_files\cyberiad\z2.dmm"
#include "map_files\cyberiad\z3.dmm"
#include "map_files\cyberiad\z4.dmm"
#include "map_files\generic\z5.dmm"
#include "map_files\cyberiad\z6.dmm"
#include "map_files\generic\z7.dmm"
#include "map_files\cyberiad\cyberiad.dmm"
#include "map_files\cyberiad\z2.dmm"
#include "map_files\cyberiad\z3.dmm"
#include "map_files\cyberiad\z4.dmm"
#include "map_files\generic\z5.dmm"
#include "map_files\cyberiad\z6.dmm"
#include "map_files\generic\z7.dmm"
#define MAP_FILE "cyberiad.dmm"
#define MAP_NAME "Cyberiad"
#define MAP_TRANSITION_CONFIG list(\
#define MAP_TRANSITION_CONFIG list(\
DECLARE_LEVEL(MAIN_STATION, CROSSLINKED, list(STATION_LEVEL,STATION_CONTACT,REACHABLE,AI_OK)),\
DECLARE_LEVEL(CENTCOMM, SELFLOOPING, list(ADMIN_LEVEL, BLOCK_TELEPORT, IMPEDES_MAGIC)),\
DECLARE_LEVEL(TELECOMMS, CROSSLINKED, list(REACHABLE, BOOSTS_SIGNAL, AI_OK)),\
@@ -33,8 +30,10 @@ DECLARE_LEVEL(MINING, CROSSLINKED, list(REACHABLE, STATION_CONTACT, HAS_WEATHER,
DECLARE_LEVEL(DERELICT, CROSSLINKED, list(REACHABLE)),\
DECLARE_LEVEL(EMPTY_AREA, CROSSLINKED, list(REACHABLE)))
#define USING_MAP_DATUM /datum/map/cyberiad
#elif !defined(MAP_OVERRIDE)
#warn a map has already been included, ignoring Cyberiad.
#endif
#endif
@@ -423,13 +423,13 @@
"aig" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "shower"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"aih" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"aii" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/sillycup{pixel_x = -5; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/sillycup,/obj/item/weapon/reagent_containers/food/drinks/sillycup{pixel_x = 5; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/sillycup{pixel_x = 5; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/sillycup{pixel_x = 5; pixel_y = 3},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"aij" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"aik" = (/obj/structure/closet/masks,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"aij" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Arcade"})
"aik" = (/turf/simulated/wall,/area/crew_quarters/fitness{name = "\improper Arcade"})
"ail" = (/obj/structure/closet/athletic_mixed,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"aim" = (/obj/structure/closet/boxinggloves,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"ain" = (/obj/structure/closet/emcloset,/obj/structure/sign/pods{pixel_y = 30},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"aio" = (/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"aip" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"aip" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"aiq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/armoury)
"air" = (/turf/simulated/floor/plasteel{name = "Holodeck Projector Floor"},/area/holodeck/alphadeck)
"ais" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
@@ -475,10 +475,10 @@
"ajg" = (/turf/simulated/wall,/area/maintenance/fore)
"ajh" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/door_control{id = "FitnessShower"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/structure/mirror{pixel_x = -28},/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"aji" = (/obj/machinery/door/airlock{id_tag = "FitnessShower"; name = "Fitness Room Shower"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"ajj" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"ajk" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"ajl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Fitness Room - Fore"; dir = 2},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"ajm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"ajj" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"ajk" = (/obj/machinery/gameboard,/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"ajl" = (/obj/machinery/arcade/claw,/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"ajm" = (/obj/machinery/computer/arcade/battle,/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"ajn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"ajo" = (/obj/machinery/light{dir = 1},/obj/machinery/power/apc{dir = 1; name = "Recreation Area APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"ajp" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
@@ -528,7 +528,7 @@
"akh" = (/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"aki" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"akj" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"akk" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"akk" = (/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"akl" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"akm" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"akn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
@@ -571,7 +571,7 @@
"akY" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "hosprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/hos)
"akZ" = (/obj/machinery/flasher/portable,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/armoury)
"ala" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/security/armoury)
"alb" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"alb" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"alc" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/eastright{base_state = "right"; dir = 8; icon_state = "right"; name = "Fitness Ring"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"ald" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"ale" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
@@ -621,7 +621,7 @@
"alW" = (/turf/simulated/floor/plating,/area/maintenance/fore)
"alX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main)
"alY" = (/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main)
"alZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"alZ" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"ama" = (/obj/structure/table,/obj/item/clothing/under/sl_suit{desc = "Whoever wears this makes the rules."; name = "referee suit"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"amb" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"amc" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
@@ -816,16 +816,16 @@
"apJ" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/door_control{desc = "A remote control-switch for the pod doors."; id = "secpodbay"; name = "Pod Door Control"; pixel_x = 0; pixel_y = 24; req_access_txt = "71"},/turf/simulated/floor/engine,/area/security/podbay)
"apK" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/engine,/area/security/podbay)
"apL" = (/obj/effect/landmark{name = "JoinLateCryo"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"apM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"apM" = (/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"apN" = (/obj/machinery/door/airlock/glass{name = "Cryodorms"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"apO" = (/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore)
"apP" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fore)
"apQ" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitered"; tag = "icon-whitehall (WEST)"},/area/security/brig)
"apR" = (/obj/machinery/prize_counter,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"apR" = (/obj/machinery/prize_counter,/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"apS" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig)
"apT" = (/obj/structure/window/reinforced,/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Fitness Ring"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"apU" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"apV" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"apV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"apW" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"apX" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"apY" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
@@ -895,7 +895,7 @@
"ark" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig)
"arl" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"arm" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"arn" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"arn" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"aro" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"arp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"arq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
@@ -964,7 +964,7 @@
"asB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"asC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"asD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"asE" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=14.8-Dorms-Lockers"; location = "14.5-Recreation"},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"asE" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"asF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"asG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"asH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
@@ -1030,7 +1030,7 @@
"atP" = (/obj/structure/rack,/obj/item/clothing/under/color/blue,/obj/item/clothing/ears/earmuffs,/obj/item/clothing/accessory/blue,/obj/item/clothing/head/soft/blue,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"atQ" = (/obj/structure/closet/lasertag/blue,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"atR" = (/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"})
"atS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"atS" = (/obj/machinery/vending/snack,/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"atT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"atU" = (/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"})
"atV" = (/obj/machinery/vending/coffee,/obj/item/device/radio/intercom{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"})
@@ -4351,7 +4351,7 @@
"bFI" = (/turf/simulated/wall/r_wall,/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bFJ" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge)
"bFK" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/vending/coffee{pixel_x = -3},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge)
"bFL" = (/obj/machinery/door_control{id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = 5; pixel_y = -28; req_access_txt = "19"},/obj/structure/reagent_dispensers/beerkeg{desc = "One of the more successful achievements of the NanoTrasen Corporate Warfare Division, their nuclear fission explosives are renowned for being cheap to produce and devestatingly effective. Signs explain that though this is just a model, every NanoTrasen station is equipped with one, just in case. All Captains carefully guard the disk needed to detonate them - at least, the sign says they do. There seems to be a tap on the back."; icon = 'icons/obj/stationobjs.dmi'; icon_state = "nuclearbomb0"; name = "NanoTrasen-brand nuclear fission explosive"; pixel_x = 2; pixel_y = 6},/turf/simulated/floor/carpet,/area/bridge)
"bFL" = (/obj/machinery/door_control{id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = 5; pixel_y = -28; req_access_txt = "19"},/obj/structure/reagent_dispensers/beerkeg/nuke{pixel_x = 2; pixel_y = 6},/turf/simulated/floor/carpet,/area/bridge)
"bFM" = (/obj/structure/stool/bed/chair/comfy/teal{tag = "icon-comfychair (EAST)"; icon_state = "comfychair"; dir = 4},/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet,/area/bridge)
"bFN" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/white,/turf/simulated/floor/carpet,/area/bridge)
"bFO" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/obj/item/weapon/lighter/zippo,/turf/simulated/floor/carpet,/area/bridge)
@@ -6416,7 +6416,7 @@
"ctt" = (/obj/structure/disposaloutlet{dir = 2},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plating/airless,/area/space)
"ctu" = (/turf/simulated/wall/r_wall/coated,/area/maintenance/incinerator)
"ctv" = (/obj/machinery/door/poddoor{id_tag = "turbinevent"; name = "Turbine Vent"},/turf/simulated/floor/plating/airless,/area/maintenance/incinerator)
"ctw" = (/obj/item/device/flashlight/lamp,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"})
"ctw" = (/obj/machinery/computer/arcade/orion_trail,/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"ctx" = (/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"})
"cty" = (/turf/simulated/floor/wood{tag = "icon-wood-broken"; icon_state = "wood-broken"},/area/maintenance/aft{name = "Aft Maintenance"})
"ctz" = (/obj/structure/mineral_door/wood{name = "The Gobbetting Barmaid"},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"})
@@ -6670,6 +6670,7 @@
"cyn" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 8},/turf/simulated/floor/plating/airless,/area/space)
"cyo" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "surgeryobs2"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgery1)
"cyp" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access_txt = "45"},/obj/machinery/holosign/surgery{id = "surgery2"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1)
"cyq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"cyr" = (/obj/machinery/door/firedoor,/obj/machinery/status_display{dir = 4; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3)
"cys" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "cmoprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/cmo)
"cyt" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3)
@@ -6684,6 +6685,7 @@
"cyC" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry)
"cyD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception)
"cyE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cyF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"cyG" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/medical/chemistry)
"cyH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception)
"cyI" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception)
@@ -6715,6 +6717,7 @@
"czi" = (/obj/machinery/computer/area_atmos,/obj/machinery/light/small{dir = 1},/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/storage)
"czj" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Toxins Storage APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/toxins/storage)
"czk" = (/obj/machinery/portable_atmospherics/scrubber/huge,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/storage)
"czl" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"czm" = (/obj/structure/grille/broken,/turf/space,/area/space)
"czn" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"})
"czo" = (/obj/machinery/vending/assist,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"})
@@ -6728,6 +6731,7 @@
"czw" = (/obj/structure/table/glass,/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/chemistry{pixel_y = 2},/obj/item/clothing/accessory/stethoscope,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo)
"czx" = (/obj/structure/filingcabinet/filingcabinet,/obj/machinery/light_switch{pixel_x = -25; pixel_y = -5},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo)
"czy" = (/obj/structure/table/glass,/obj/item/weapon/folder/white,/obj/item/weapon/stamp/cmo,/obj/item/clothing/glasses/hud/health,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo)
"czz" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"czA" = (/obj/structure/table/glass,/obj/machinery/photocopier/faxmachine{department = "Chief Medical Officer's Office"},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 30},/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo)
"czB" = (/obj/structure/closet/secure_closet/CMO,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo)
"czC" = (/turf/simulated/wall,/area/medical/genetics)
@@ -7285,6 +7289,8 @@
"cKi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -29},/obj/machinery/camera{c_tag = "Medbay Break Room"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak)
"cKj" = (/obj/structure/stool,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak)
"cKk" = (/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak)
"cKl" = (/obj/machinery/vending/cola,/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"cKm" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"cKn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning)
"cKo" = (/obj/structure/closet/wardrobe/black,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/genetics)
"cKp" = (/turf/simulated/floor/plasteel{icon_state = "purplefull"},/area/assembly/robotics)
@@ -7606,7 +7612,6 @@
"cQt" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/machinery/camera{c_tag = "Virology - Break Room"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology)
"cQu" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/table/glass,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitegreen"},/area/medical/virology)
"cQv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"})
"cQw" = (/obj/machinery/light/small{dir = 8},/obj/structure/closet/wardrobe/black,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/bottle/reagent/formaldehyde,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cQx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cQy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cQz" = (/obj/structure/table,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
@@ -7672,6 +7677,7 @@
"cRH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "7;12;47"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cRI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"})
"cRJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"})
"cRK" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cRL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay3)
"cRM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay3)
"cRN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
@@ -7939,6 +7945,7 @@
"cWP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
"cWQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
"cWR" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cWS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cWT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"})
"cWU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3)
"cWV" = (/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
@@ -7960,6 +7967,7 @@
"cXl" = (/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3)
"cXm" = (/obj/item/device/flashlight/lantern{pixel_y = 7},/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
"cXn" = (/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
"cXo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Fitness Room - Fore"; dir = 2},/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cXp" = (/obj/machinery/door/airlock/external{id_tag = "emergency_home"; name = "Departure Lounge Airlock"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cXq" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 7},/obj/item/weapon/storage/box/syringes{pixel_y = 5},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cXr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 3; icon_state = "whitebluecorner"},/area/medical/medbay3)
@@ -7972,9 +7980,13 @@
"cXy" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3)
"cXz" = (/obj/machinery/smartfridge/secure/extract,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cXA" = (/obj/structure/table,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay3)
"cXB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cXC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cXD" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Civilian"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cXE" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
"cXF" = (/obj/machinery/door/window{dir = 4; name = "Mass Driver"; req_access_txt = "22"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
"cXG" = (/obj/machinery/mass_driver{dir = 2; id_tag = "chapelgun"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/item/device/gps,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/chapel/main)
"cXH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cXI" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
"cXJ" = (/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
"cXK" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
@@ -7992,6 +8004,12 @@
"cXW" = (/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cXX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cXY" = (/obj/item/weapon/twohanded/required/kirbyplants{tag = "icon-plant-11"; icon_state = "plant-11"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/medbay3)
"cXZ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cYa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cYb" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cYc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cYd" = (/obj/structure/closet/masks,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cYe" = (/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cYf" = (/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cYg" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/chapel/main)
"cYh" = (/obj/machinery/door/morgue{name = "Chapel Garden"; req_access_txt = "0"},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/chapel/main)
@@ -8009,14 +8027,16 @@
"cYt" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cYu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cYv" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cYw" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table,/obj/item/weapon/autopsy_scanner,/obj/item/weapon/scalpel,/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cYx" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cYy" = (/obj/machinery/light/small,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cYz" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=14.8-Dorms-Lockers"; location = "14.5-Recreation"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cYA" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/starboard)
"cYB" = (/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cYC" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id_tag = "psychoffice"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/psych)
"cYD" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/shuttle/escape)
"cYE" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/escape)
"cYF" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/shuttle/escape)
"cYG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/junction{dir = 8},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"cYH" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/shuttle/escape)
"cYI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cYJ" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/shuttle/escape)
@@ -8041,11 +8061,15 @@
"cZc" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cZd" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cZe" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape)
"cZf" = (/obj/structure/table/woodentable,/obj/machinery/bottler,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"})
"cZg" = (/obj/structure/dispenser/oxygen{layer = 2.7; pixel_x = -1; pixel_y = 2},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"cZh" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"})
"cZi" = (/obj/machinery/camera{c_tag = "Dormitories - Fore"; dir = 8},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"cZj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"cZk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/chapel/main)
"cZl" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-24"; layer = 4.1; tag = "icon-plant-24"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
"cZm" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/medical/virology)
"cZn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"cZo" = (/obj/machinery/door/airlock/shuttle{id_tag = "s_docking_airlock"; name = "Emergency Shuttle Airlock"; req_access_txt = "0"},/turf/simulated/shuttle/floor,/area/shuttle/escape)
"cZp" = (/obj/docking_port/mobile/emergency{dir = 2; dwidth = 5; height = 14; width = 25},/obj/docking_port/stationary{dir = 2; dwidth = 5; height = 14; id = "emergency_home"; name = "emergency evac bay"; width = 25},/obj/machinery/door/airlock/shuttle{id_tag = "s_docking_airlock"; name = "Emergency Shuttle Airlock"; req_access_txt = "0"},/turf/simulated/shuttle/floor,/area/shuttle/escape)
"cZq" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/maintenance/aft{name = "Aft Maintenance"})
@@ -8057,6 +8081,7 @@
"cZw" = (/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/iv_drip,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/maintenance/aft{name = "Aft Maintenance"})
"cZx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
"cZy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3)
"cZz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Arcade"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"cZA" = (/obj/structure/cable,/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/starboard)
"cZB" = (/turf/simulated/shuttle/floor,/area/shuttle/escape)
"cZC" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
@@ -8530,23 +8555,23 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabXaaaaaaaaaaaaaaaaaaaaaaaaabBafBafDafCafOafEafQafPadoafRaftafSafUafTacNafVadoafWacNadvacNafXagaafZabBaaaabqabqabqabqagcabqabqabqaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaidanraieaolapKapJaskagdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadjadjadjadjadjabqadkabqadjadjadjadjadjabqabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaabXabqabqabqaaaaaaaaaaaaaaaabBageagmagfagoagnafQagpadoagqagtagsagvaguacNagwadoaguacNadVacNagxagzagyabBaaaabqabqagAagAagAagAagAabqabqaaaaaaaaaabqaaaagCagCagbafYagragCagCagDaaaaidasYauiasZasZasZaskagdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqadCadDadDadDadDadEadFadGadHadHadHadHadIaaaabfaaaaaaadJadKadLadMaaaaaaaaaadJaaaaaaaaaadMaaaaaaaaaadJadNadOadMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqagEabqaaaaaaaaaaaaaaaaaaaaaabBagNagPagOabBagQafQagRagSacNaftacNagTaftacNagRagUaftacNaewacNaftagVagRabBabqabqagAagAagYahfaheagAagAabqabqaaaaaaabqagCagCagZahaahbahcahdagCagCaaaaidaunauiavaasZasZaskagdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqaegaegaegaegaegabqadFabqaegaegaegaegaegabqabfaaaaaaaehaeiaejaehaaaaaaadJaehaekaelaemaehadMaaaaaaaehaenaeoaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabAaaaabqaaaaaaaaaaaaaaaaaaabBahiahAahzabBahBahDahCahFahEahHahGahJahIahLahKahNahMahOahGahQahPahSahRahTabqagAagAahVahUahUaiqaiwagAagAabqaaaaaaabqagCahWahXahYahZaiaaibaicagCaaaavOavbawxawwawwawwaomagdaaaaaaabqabeabfabfabfabeabfabfabeaaaaaaabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaaaaaaabqaaaaaaabqaeCaaaaaaaaaabqaaaaaaaaaabeaaaaaaaehaeDaeEaehaaaadJaeFaeGaeHaeIaeJaeGaeFadMaaaaehaeKaeLaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaabAaaaabqabqabqaaaaaaaaaaaaabBabBabBabBabBaixaiyaiyaiAaizaiBaiyaiyaiCaiEaiDaiGaiFaiyaiyaiyaiHaiJaiIaiKabqagAaiLaiNaiMaiPaiOahUaiQagAabqaaaaaaabqagFaiVaiWaiXaiYaiZajaaiRagLaaaaidaywaztaztazvazuaidafAafAaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaafbaeNafbcKIacJabeabfabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqadjadjadjadjadjabqadFabqadjadjadjadjadjaaaabfaaaaaaaehafeaffafgaaaafhafiaeGaeGafjaeGaeGafiafkaaaaflafmafnaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqafoafpafpafpafpafpafpafqabqaaaabqaaaaaaabBabBabBabBabBaiSaiUaiTabBajdajeajdacNacNacNacNajFajfajHajGajIabqagAajJaiNajKajMajLahUajNagAabqaaaaaaabqajcajXajYajOakaakbajYanJajcabqaidafragjagjafsaidaidaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaafbafFafGafHafHafIaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadCadDadDadDadDadEadFadGadHadHadHadHadIabqabfaaaaaaaeFafJaeFaaaaaaafKafiaeGafLafMaeGaeGafiafNaaaaaaaeFafJaeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaabqaaaabqaaaaaaaaaabAaaaaaaabqaaaaaaaaaaaaaaaaaaabBabBaiKabBabBabBaiKabBabBajPajRajQacNajSajUajTajVagAagAajWakcajZakgakdakAakuagAabqabqabqabqagCakPakQakBakSalAakUakVagCabqaidakCazEazEaBKaysaidabqabqabqabqabqabqabqabqabqabqabqabqabqaeNaggaghagiaqSagkaaaabeabfabeabqabqaaaaaaaaaaaaaaaaaaaaaaaaabfabqaegaegaegaegaegabqadFabqaegaegaegaegaegabqabfaaaaaaaeFafJaeFaeFaeFaeFaeFaeFaeFaglaeFaeFaeFaeFaeFaeFaeFafJaeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaabqaaaabqabqabAabqabqabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaabqabqabqacnakEakFakEakHakGakKakJagAagAagAakLakMagAagAakNagAagAagAatKatKatKalPagCagCakzakYalRalualsagCagCalPaidakObPLbPLbTgbTfaidabqaaaaaaabqaaaaaaaaaaaaabqaaaaaaaaaaaaafbagGagHafHafHagIaaaabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaabqaaaaaaaaaadFaaaaaaaaaabqaaaaaaaaaabdaaaaaaafhafJagJagJagJagJagJagJaehagKaehagJagJagJagJagJagJafJafkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqabqaaaabqaaaabqagXagMagXabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaabBabBabBabBabBakRajHakTagAakWakZakXalaakLalCalBalEalDalGalCalHamOamMamNamOamPamQamRamSamTamOamUdeRalIalKalJazEdeGdeCaidabqabqafbaeNafbaeNaeNaeNafbaeNaeNaeNafbafbahgafbahhahjahjahkahjahjahyaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadjadjadjadjadjabqahlabqadjadjadjadjadjabqabfaaaaaaahmahnahoahpahqahraehaglaeFaglaeFaglaehahsahtahuahvahnahwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqabqabqagXahxagXabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqamxalNalFalOagAalSakZalTalaalUalXalValYalYalYalYalYamwamAamyaodaoeamCamBamFamDamHamGamJamIamLazEamWamVamXaidabqabqafbaigafbaihaiiaijafbaikailaimafbainaioajbaivairairairairairaivabqabqabqabqabqaaaaaaaaaaaaaaaabfabqadCadDadDadDadDadEadFadGadHadHadHadHadIabqabfaaaaaaafKahnaeGaeGaeGaisaehaeGaeGaeGaeGaeGaehaeGaeGaitaeGahnafNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqagXagXaiuagXagXabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaabqamxamYaAsapnanaamZamZanbanLanFanNanManOalCanQanPanRamOanTapAapBapCapDapEanUapCanWanVaspaidaidaidaidaidaidaidaidabqafbajhajiajjajkajkajlajkajmajnajoajpajpajpaivairairairairairaivaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabfabqaegaegaegaegaegabqadFabqaegaegaegaegaegabqabeabqaaaaehajqajrajsajtajuaehajvaeGaeGaeGajwaehajxaeGajzajAajqaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaabqajBajCajDagWajBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqamxamYaAsatragAanXanZanYaobaoaaofaocaofatKatKatKatKamOaogdfnaqZapCaraarbarcapCaoiaohaspatKaojaojaojaojaojaojaokaokafbafbafbalZakhakiakiakjakkaklakmakmaknakoaivairairairairairakpafbafbafbaaaabqaaaaaaaaaaaaaaaabeaaaaaaaaaabqaaaaaaaaaadFaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaehakqakqaeFaeFaeFaehakraeGaeGaeGaksaehaeFaeFaeFakqakqaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaktaktakIakIakIakIakIajBakvakwakxajBabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqamxamxamxamxamxamYaAsatragAagAaonagAagAagAaopaooaosaoqaovaotaowamOaoxdfnasiapCapCaoHapCapCaoLaohapiatKaojaojaojaojaojaojaokaxYaWvapkafbalbakhakialcaldaldaldaleakmalfalgalhairairairairairalialjalkaeNaaaabqabqabqabqabqabqabfabqabqabqabqabqaaaaaaadFaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaflallallafgaaaaaaaehalmaeGaeGaeGalnaehaaaaaaaflallallafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaloalpakIalqalrajyaltajBajEalvalwajBakyalLakyakyabqabqaaaaaaaaaaaaaaaabqaaaabqabqamxalQanKanSaplamYapmatragBapoappapoagBapqapsapraptaoqapvapuaovamOapxapwatCatDatEapCatGapyapzaohapGapFaojaojaojaojaojaojapHaxYapLapIapNapMakhamaambamcamcamdameamfamgamhaeNairairairairairaeNamiamjaeNaaaabqaaaabqaaaamkamkamkamkamkamkamkabqabqabqadFabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehamlaeGaeGaeGalnaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktammaktamnalrampamqajBajBamramsajBalxalzalyakyakyabqabqabqabqabqabqabqabqabqaaaamxapQaqaaqaaqlamYaAsatragBaqxaqKaqIagBaqLaqNaqMaqPaqOaqRaqQaqTamOaoxaqUaqVaqVaqVapCaqVaqVaqXaqWareardaojaojaojaojaojaojaokarfargafbafbarhancandaneanfanfangameamjanhamhaeNairairairairairaeNanianjaeNabqabqabqabqabqamkankanlanmannankamkabqaaaanoanpanoansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehantanuaglantanuaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaakIanvanwanxanyanzanAanBanCanDanEakyamtanGamvanIakyabqaaaaaaabqaaaaaaaaaakDakDakDamxariarjaqaarMarkaAsarOagBarQarVarSagBarXascarYaosaoqasfaseaovamOaslashasnasmasqasoassasraswastasxapFaojaojaojaojaojaojaokaxYaWvafbapRasyakhaszambaoyamcaozameaoAamgaoBaoCairairairairairaoDaoEaoFaoGapeaoGaaaabqaaaamkaoIaoJankaoJaoKamkabqaaaapgaoMapgasTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaoOaoPaeGaoQaoRaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaktaoSaktaoTaoUaoVaoWaktaoXaoYaoZapaapbapcapdaphakyabqapfapfalLapfapfaaaakDapSapSamxasLaqHapjasRasMatsaxJagBattasaamKagBatuaqNatvatwaoqaoqaoqaoqakDakDatxakDakDakDaxLatzatyaxLatBatKatKatKatFatFatFatFatFaokaxYaWxafbaipasyakhajpapTapUapVapWapXapYamgapZaqDairairairairairaqbafbaqcaoGaqdaqeaefaefabqamkaqfaqgaqhaqiaqjamkabqanoapgaqkapgansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaqmaqnaeGaqpaqoaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktaqqaqraqraqraqsaqtaktamuaqvapdakyatHaqyaqzaqAakyapfapfaqBaqCanEajgajgakDaqFaqEamxatIaqaatMaqlarkaAsauHagBauOauSauPagBauUauWauVauZauYakDavcavfaveaviavhavpavjakDavsavuavtavZavwawkawdawdawlalWamoawpawmafbafbafbafbafbawqarlajpajparmarnaroarparparqapZaqDairairairairairaqbarrarsaoGaqeaoGaoGapeaoGamkartaruankarvarwamkabqapgapgaoMapgansaoGaoGaoGcKIacJaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFarxaryarzaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarBaaaaaaarAaaaarAaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaaktarCarDarEarFarGarHaktapdaqvapdapfarIapdapdapdarJapfarKarUamzarNajganHarWarParRaumazcaCTawraorawsawtarZagBawuauSawyagBagBagBawzawBawAakDawCakDawDawFawEakDawIakDawQaxjaxfavtaxHaxNaxMaxPaxOaEgaEgaEgaxRasuakhaxSasvasvaxVasBasCasCasDasEasFasGasGasGasHaqDairairairairairaqbasIasJaoGarsasKaouasJasNamkasjasgasQasOasPamkabqansasUasVasWaoGauodgCbkjavNavNblzaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFaeFaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarAabqabqarAarAarAabqaaaarAarAataarAarAaaaabqapfapfalLapfabqaaaabqabqabqabqabqapfalLaktaktatbatcatdaktaktaktaoXateaoZatfapbatgapdapdatiapfaoXaElaEjajgajgatlatmaquapOamxamxamxakDakDatpatqatrasSaytayVayTayXayWagBawzawBaosakDakDakDakDakDakDakDakDakDayYazaayZazdazbazxatKatKamOamOamOamOayGafbaeNazCaeNafbatNatOatPatQatRatSatTatUatVatWatXatYatZatZatZatZatZauaaubayvaoGasJasJasJasJaudamkaueaufaugauhavFamkabqansaujaukaulaoGdgCdgCbnGblAbvublBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabAaaaabqaaaaaaaaaaaaaaaaaaabBahiahAahzabBahBahDahCahFahEahHahGahJahIahLahKahNahMahOahGahQahPahSahRahTabqagAagAahVahUahUaiqaiwagAagAabqaaaaaaabqagCahWahXahYahZaiaaibaicagCaaaavOavbawxawwawwawwaomagdaaaaaaabqaaaaaaaaaaaaaikaijaijaijaikaikabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaaaaaaabqaaaaaaabqaeCaaaaaaaaaabqaaaaaaaaaabeaaaaaaaehaeDaeEaehaaaadJaeFaeGaeHaeIaeJaeGaeFadMaaaaehaeKaeLaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaabAaaaabqabqabqaaaaaaaaaaaaabBabBabBabBabBaixaiyaiyaiAaizaiBaiyaiyaiCaiEaiDaiGaiFaiyaiyaiyaiHaiJaiIaiKabqagAaiLaiNaiMaiPaiOahUaiQagAabqaaaaaaabqagFaiVaiWaiXaiYaiZajaaiRagLaaaaidaywaztaztazvazuaidafAafAaaaabqaikaijaijaijaikaipajkajjajlaikaeNafbcKIacJabeabfabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqadjadjadjadjadjabqadFabqadjadjadjadjadjaaaabfaaaaaaaehafeaffafgaaaafhafiaeGaeGafjaeGaeGafiafkaaaaflafmafnaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqafoafpafpafpafpafpafpafqabqaaaabqaaaaaaabBabBabBabBabBaiSaiUaiTabBajdajeajdacNacNacNacNajFajfajHajGajIabqagAajJaiNajKajMajLahUajNagAabqaaaaaaabqajcajXajYajOakaakbajYanJajcabqaidafragjagjafsaidaidaaaaaaaaaabqaikajmalbakkalZakkakkakkapMaikafFafGafHafHafIaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadCadDadDadDadDadEadFadGadHadHadHadHadIabqabfaaaaaaaeFafJaeFaaaaaaafKafiaeGafLafMaeGaeGafiafNaaaaaaaeFafJaeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaabqaaaabqaaaaaaaaaabAaaaaaaabqaaaaaaaaaaaaaaaaaaabBabBaiKabBabBabBaiKabBabBajPajRajQacNajSajUajTajVagAagAajWakcajZakgakdakAakuagAabqabqabqabqagCakPakQakBakSalAakUakVagCabqaidakCazEazEaBKaysaidabqabqabqabqaijapRakkapVarnakkasEakkatSaikaggaghagiaqSagkaaaabeabfabeabqabqaaaaaaaaaaaaaaaaaaaaaaaaabfabqaegaegaegaegaegabqadFabqaegaegaegaegaegabqabfaaaaaaaeFafJaeFaeFaeFaeFaeFaeFaeFaglaeFaeFaeFaeFaeFaeFaeFafJaeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaabqaaaabqabqabAabqabqabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaabqabqabqacnakEakFakEakHakGakKakJagAagAagAakLakMagAagAakNagAagAagAatKatKatKalPagCagCakzakYalRalualsagCagCalPaidakObPLbPLbTgbTfaidabqaaaaaaabqaikctwalbcyqczlcyFczzakkcKlaikagGagHafHafHagIaaaabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaabqaaaaaaaaaadFaaaaaaaaaabqaaaaaaaaaabdaaaaaaafhafJagJagJagJagJagJagJaehagKaehagJagJagJagJagJagJafJafkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqabqaaaabqaaaabqagXagMagXabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaabBabBabBabBabBakRajHakTagAakWakZakXalaakLalCalBalEalDalGalCalHamOamMamNamOamPamQamRamSamTamOamUdeRalIalKalJazEdeGdeCaidabqabqafbaeNaikaijaijaijaikcKmcZncZiaikaikahgafbahhahjahjahkahjahjahyaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadjadjadjadjadjabqahlabqadjadjadjadjadjabqabfaaaaaaahmahnahoahpahqahraehaglaeFaglaeFaglaehahsahtahuahvahnahwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqabqabqagXahxagXabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqamxalNalFalOagAalSakZalTalaalUalXalValYalYalYalYalYamwamAamyaodaoeamCamBamFamDamHamGamJamIamLazEamWamVamXaidabqabqafbaigafbaihaiiailaikaijcZzaijaikainaioajbaivairairairairairaivabqabqabqabqabqaaaaaaaaaaaaaaaabfabqadCadDadDadDadDadEadFadGadHadHadHadHadIabqabfaaaaaaafKahnaeGaeGaeGaisaehaeGaeGaeGaeGaeGaehaeGaeGaitaeGahnafNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqagXagXaiuagXagXabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaabqamxamYaAsapnanaamZamZanbanLanFanNanManOalCanQanPanRamOanTapAapBapCapDapEanUapCanWanVaspaidaidaidaidaidaidaidaidabqafbajhajicRKcWScWScXocWScXBajnajoajpajpajpaivairairairairairaivaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabfabqaegaegaegaegaegabqadFabqaegaegaegaegaegabqabeabqaaaaehajqajrajsajtajuaehajvaeGaeGaeGajwaehajxaeGajzajAajqaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaabqajBajCajDagWajBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqamxamYaAsatragAanXanZanYaobaoaaofaocaofatKatKatKatKamOaogdfnaqZapCaraarbarcapCaoiaohaspatKaojaojaojaojaojaojaokaokafbafbafbcXCakhakiakiakjcXDaklakmakmaknakoaivairairairairairakpafbafbafbaaaabqaaaaaaaaaaaaaaaabeaaaaaaaaaabqaaaaaaaaaadFaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaehakqakqaeFaeFaeFaehakraeGaeGaeGaksaehaeFaeFaeFakqakqaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaktaktakIakIakIakIakIajBakvakwakxajBabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqamxamxamxamxamxamYaAsatragAagAaonagAagAagAaopaooaosaoqaovaotaowamOaoxdfnasiapCapCaoHapCapCaoLaohapiatKaojaojaojaojaojaojaokaxYaWvapkafbcXHakhakialcaldcXZaldaleakmalfalgalhairairairairairalialjalkaeNaaaabqabqabqabqabqabqabfabqabqabqabqabqaaaaaaadFaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaflallallafgaaaaaaaehalmaeGaeGaeGalnaehaaaaaaaflallallafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaloalpakIalqalrajyaltajBajEalvalwajBakyalLakyakyabqabqaaaaaaaaaaaaaaaabqaaaabqabqamxalQanKanSaplamYapmatragBapoappapoagBapqapsapraptaoqapvapuaovamOapxapwatCatDatEapCatGapyapzaohapGapFaojaojaojaojaojaojapHaxYapLapIapNcYaakhamaambamccYbamdameamfamgamhaeNairairairairairaeNamiamjaeNaaaabqaaaabqaaaamkamkamkamkamkamkamkabqabqabqadFabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehamlaeGaeGaeGalnaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktammaktamnalrampamqajBajBamramsajBalxalzalyakyakyabqabqabqabqabqabqabqabqabqaaaamxapQaqaaqaaqlamYaAsatragBaqxaqKaqIagBaqLaqNaqMaqPaqOaqRaqQaqTamOaoxaqUaqVaqVaqVapCaqVaqVaqXaqWareardaojaojaojaojaojaojaokarfargafbafbarhancandaneanfcYcangameamjanhamhaeNairairairairairaeNanianjaeNabqabqabqabqabqamkankanlanmannankamkabqaaaanoanpanoansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehantanuaglantanuaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaakIanvanwanxanyanzanAanBanCanDanEakyamtanGamvanIakyabqaaaaaaabqaaaaaaaaaakDakDakDamxariarjaqaarMarkaAsarOagBarQarVarSagBarXascarYaosaoqasfaseaovamOaslashasnasmasqasoassasraswastasxapFaojaojaojaojaojaojaokaxYaWvafbcYdasyakhaszambaoycYbaozameaoAamgaoBaoCairairairairairaoDaoEaoFaoGapeaoGaaaabqaaaamkaoIaoJankaoJaoKamkabqaaaapgaoMapgasTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaoOaoPaeGaoQaoRaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaktaoSaktaoTaoUaoVaoWaktaoXaoYaoZapaapbapcapdaphakyabqapfapfalLapfapfaaaakDapSapSamxasLaqHapjasRasMatsaxJagBattasaamKagBatuaqNatvatwaoqaoqaoqaoqakDakDatxakDakDakDaxLatzatyaxLatBatKatKatKatFatFatFatFatFaokaxYaWxafbaimasyakhajpapTapUcYeapWapXapYamgapZaqDairairairairairaqbafbaqcaoGaqdaqeaefaefabqamkaqfaqgaqhaqiaqjamkabqanoapgaqkapgansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaqmaqnaeGaqpaqoaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktaqqaqraqraqraqsaqtaktamuaqvapdakyatHaqyaqzaqAakyapfapfaqBaqCanEajgajgakDaqFaqEamxatIaqaatMaqlarkaAsauHagBauOauSauPagBauUauWauVauZauYakDavcavfaveaviavhavpavjakDavsavuavtavZavwawkawdawdawlalWamoawpawmafbafbafbafbafbawqarlajpajparmcYxaroarparparqapZaqDairairairairairaqbarrarsaoGaqeaoGaoGapeaoGamkartaruankarvarwamkabqapgapgaoMapgansaoGaoGaoGcKIacJaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFarxaryarzaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarBaaaaaaarAaaaarAaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaaktarCarDarEarFarGarHaktapdaqvapdapfarIapdapdapdarJapfarKarUamzarNajganHarWarParRaumazcaCTawraorawsawtarZagBawuauSawyagBagBagBawzawBawAakDawCakDawDawFawEakDawIakDawQaxjaxfavtaxHaxNaxMaxPaxOaEgaEgaEgaxRasuakhaxSasvasvaxVasBasCasCasDcYzasFasGasGasGasHaqDairairairairairaqbasIasJaoGarsasKaouasJasNamkasjasgasQasOasPamkabqansasUasVasWaoGauodgCbkjavNavNblzaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFaeFaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarAabqabqarAarAarAabqaaaarAarAataarAarAaaaabqapfapfalLapfabqaaaabqabqabqabqabqapfalLaktaktatbatcatdaktaktaktaoXateaoZatfapbatgapdapdatiapfaoXaElaEjajgajgatlatmaquapOamxamxamxakDakDatpatqatrasSaytayVayTayXayWagBawzawBaosakDakDakDakDakDakDakDakDakDayYazaayZazdazbazxatKatKamOamOamOamOayGafbaeNazCaeNafbatNatOatPatQatRcYGatTatUatVatWatXatYatZatZatZatZatZauaaubayvaoGasJasJasJasJaudamkaueaufaugauhavFamkabqansaujaukaulaoGdgCdgCbnGblAbvublBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaupabqarAabqaupabqarAarAabqarAarAarAarAarAaaaaaaaaaapfauqauCapfautausausausausausauuapfarKauqapfauwauxaoXauyauzapfauAauBauCapfarIatjauDauEarJapfauGaNEaFEajgauIatmakeakfaqwajgauLamxauMauNaqJatqapnauQaAeauTauRaAjaAhauXaAkawBaosakDaAlaAnaFgamEaAoaAnaFgakDaApaAtaAqaAvaAuazxavkavlavlavmavnamOayGafbaBraBsavqavravravravravraByaCmaCeavvavvavvavvavvaDeaoGaqGavyavzaoGaoGasJaoGavAawMavCasJavDavEavHavGawZavIavJamkapeansarTavLavMaoGdgCdgCblyavNavNbnHaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAabqarAabqarAarAarAataabqabqabqarAarAabqaaaabqabqalLasAavoatLazLapdapdapdapdapdbMKavQavRaoZavWavSatkapdavYavXapdatkaxqajgajgajgajgajgajgajgajgajgajgawgajgawhajgajgajgajgajgajgamxawiawjaqJatqatrasSavdaDDaDgaEVawnaqYaFzaFBaFAakDaFVaAnaFXamEaGraAnaGEakDaGFaGIaAqaHfaHfaHhatKawGawHawGaHZamOayGawaaBraIgavqavrawNawOawPawoawRawSawTavvawUawVawWavvaoGaoGasJaubasJasIaoGayvaoGavzasJawXasJaoGawYayqamkamkaxaaxbamkayxansansaxdaxeaoGaoGbnIaxhaoGbplaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarAarAarAarAabqarAarAabqauparAarAabqabqabqabqapfapfawcapfapfaxlaxkaxkaxkaxkaxkaxZapfapfapfapfaxmaxnaxoaxoaxoaxoaxpaxqajgaxraxsaxtaxuaxvaxwaxxaxyaxzaxAaxBaxCajgaxDaxEaxEaxEaxFamEaxGaICaqJaxIaIIaxKaqYaIVasSaJyasdagBamEaKaamEamxaKbaKAaKcamxaKbaKBaKcakDaKOaMoaLvaKOaNoawdatKaxWaxWaxWamOamOayGafbdeeaAAdefavrayaaybayaawoaycaydayeayfaygayhayiavvathaoGaykaylaymaynaoGasJaoGaoGaoGayoaoGaoGaypbppayramkamkamkamkazrasIazGazFbTiaoGdfCdgCdfEaoGaoGaoGabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8614,8 +8639,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBaaacmRaaaabqaaabZUbZUbZUbZUbZUbZUbZUbZUbZUcodcoDcoCcoCcoCcoCcoCcoCcoCcoCcoEcpbcoFcpBcpzcpbcpCcmXcdTcpEcpDcdTcoocpGcpFcpHcdUcpJcpIcdUcpKcpLcoocpNcpMcpPcpOcpQcoocpRcntcnucmobmRcnwcnxcnycnxcnzcmocnAcnBcnCcnDcnCcfxcfxcnEbZUcmzcnFcnGcnHcnIcnJcmBcnKcnKcnKcnLcnMcnNcnKcmBcmCaoGclsasIcnPcnQaoGcnRcnScfKaTJbtLbrWbvxbulbiUbobclAabqbGLcnYbzLcnYbGLcnYbzLcnYbGLcnZbzLcoabGLabqaaaabqabqabqcobcjacocabqabqabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqarBaaacjcaaaabqaaabZUcpucpvcpwcpxcpycpScpAbZUcodcFQcoCcpUcpTcpWcpVcpYcpXcoCcqacrdcqbcrfcrecrgcqbcricrhcrkcrjcrmcrlcrocrncrtcrpcrwcrucrycrxcrAcrzcrBcmqcrCcmqcrDciacgwckVcmmbWecoGcoHcoIcoJcoKcoLcmocoMcoNcoOcoPcmzcdNcjncrFcrvcmzcoRcoScoTcoUcoVcmBcnKcoWcoXcoYcnKcoZcpacmBcmCaoGaoGaoGaoGaoGaoGaoGaoGcfKcfKcfKclFclAclBbwMclDclAabqbGLcphcpicpjbGLcpkcplcpmbGLcpncpocppbGLabqaaaabqaaabCMcpqcprcpscptaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabeaaackrabqabqabqcmicqYcqZcracrbcpycrccdKbZUcodcjncoCcrGcrEcrHcrEcrEcrVcoCcsCcsGcsEcsIcsHcsNcsEcsPcsOcsScsQctqctgctBctActDctCctGctFctIctHctKctJctMcrCcrCcrCctPctOcgwckVcrWcmocqdcqecqfcqgcqhcqibyScqkcqlcqmcqncmzcqocqpcqqcsncmzcqscqtcqucqvcqwcmBcnKcnKcqxcnKcnKcqycqzcmBcmCbZUcqAcqBbZUcqCcqDcqFcqEcqHcqGbZUcsoclAcqrbArcqIclAabqbGLcqKcqLcqMbGLcqNcqOcqPbGLcqQcqRcqSbGLabqabqabqabqcptcqTcqUcqVcqWabqabeabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBaaackrabqaaaaaacmicsvcrccqZcswcpycsxbZUbZUcsyctQcoCctTctRctWctVcrEctXcoCctYcuactZcpBcuecuacukcmXcuFcuLcuKcuMcnncuNcnncuOcnncnncnncuQcuPcuScuRcuTcmqcrCcmqcuUciacgwckVcrIcmocrJcrKcrLcrMcrNcrOcmocrPcrQcrRcrScmzcrTcrUctSctEcmzcrXcrYcrZcsacsbcmBcmBcscbANbIObIOcmBbIPcmBcsgcshcsicsjbZUcskchychychycdKcslbZUbKxctucnXbyPcNmctuabqbGLcqKcsqcqKbGLcqNcsrcqNbGLcsscstcssbGLabqaaaabqaaacqWcqUcsucqUcjaaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabeabqckrabqaaaaaacmictwcqZcswctxcpyctyctzcdOcodcuVcoCcuXcuWcuZcuYcvbcvacoCcvccvdcvdcmXcvecvecvfcmXcvgcvicvhcvkcPycvjcjQcmjcjQcvjcvjcvjcvocvLcoocvNcvMcvRcvOcwbcoocwcckVcsTcmocmocsUcsVcsWcsXcsYcmocsZcnBcfwcfwcmzctacmzctbcmzcmzcfwctcbQvcfwcfwctectfcwdcthctictjcrqctlcmBctmbZUctnctobZUctpcdKchychychyctrbZUbKxctubQAbKRbQZbSlabqbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLabqabqabqabqcjacqUcqUcqUcqWabqbFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBaaackrabqaaaaaacmicZfcrccqZcswcpycsxbZUbZUcsyctQcoCctTctRctWctVcrEctXcoCctYcuactZcpBcuecuacukcmXcuFcuLcuKcuMcnncuNcnncuOcnncnncnncuQcuPcuScuRcuTcmqcrCcmqcuUciacgwckVcrIcmocrJcrKcrLcrMcrNcrOcmocrPcrQcrRcrScmzcrTcrUctSctEcmzcrXcrYcrZcsacsbcmBcmBcscbANbIObIOcmBbIPcmBcsgcshcsicsjbZUcskchychychycdKcslbZUbKxctucnXbyPcNmctuabqbGLcqKcsqcqKbGLcqNcsrcqNbGLcsscstcssbGLabqaaaabqaaacqWcqUcsucqUcjaaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabeabqckrabqaaaaaacmicsvcqZcZhctxcpyctyctzcdOcodcuVcoCcuXcuWcuZcuYcvbcvacoCcvccvdcvdcmXcvecvecvfcmXcvgcvicvhcvkcPycvjcjQcmjcjQcvjcvjcvjcvocvLcoocvNcvMcvRcvOcwbcoocwcckVcsTcmocmocsUcsVcsWcsXcsYcmocsZcnBcfwcfwcmzctacmzctbcmzcmzcfwctcbQvcfwcfwctectfcwdcthctictjcrqctlcmBctmbZUctnctobZUctpcdKchychychyctrbZUbKxctubQAbKRbQZbSlabqbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLabqabqabqabqcjacqUcqUcqUcqWabqbFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaabqaaaaaaarBaaaclIaaaaaaaaacmicmicqZcpycpycqZcqZcuJcdOcodcuVcoCcwfcwecwgcrEcrEcwhcoCcwicwjcwjcwkcwjcwlcwjcwmcwjcwocwncwqcwpcvjcnpcnqcwrcwucwscvjcwvcwwcoocoociacwxciacwycoocwzcubcuccudcwAcufcugcuhcuicujbWeculcumcuncuocupciccuqcurcusciccutcuucuvciccuwctecuxcuycuzcuAcuBcuCcuDcmBcmCbZUbZUcuEbZUcwBcuGchychycuHcuIcmibKxctuctucgWctuctuabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqaaaabqaaacjacqWcptbCMcptaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaabqaaaaaaabeaaacmRabqaaaaaacmicvZcqZcwacqZcqZcsxbZUbZUcodchycoCcwDcwCcxmcrEcxocxncoCcxpcxrcxqcxscxqcxucxtcxtcxtcxwcxvcxycxxcvjcxAcpZcxBcpZcpZcxDcxCcxFcxEcxHcxGcmqcxIcxJciacgwckVcvmcvncxRcvpcvqcvrcvscvtcvucvvcvwcvxcvycvzcvAcvBcvCcvDcvEcvDcvFcvGcvHcvIcvJcvKcgYcgXchacgZclSckScszcoQbZUcvTcvUcvVcbvchychychycvWcvXbZUbXOcynctubYhctucspaaaaaaaaaaaaaaaabqaaaaaaaaaabqaaaaaaaaaaaaabqaaaabqaaaaaaabqaaaabqaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaabqabqaaaaaaarBaaacjcaaaaaaaaacmicxkcpycracpycxlchycyjbZUcymchycoCcoCcoCcypcyocyocyocoCcyrcvkcsJcsJcyscsJcyscsJcsJcyucytcywcyvcyycyxcyAcyzcyCcyBcyGcyDcyHcmqcyIcmqcmqcyJcmqclMcgwckVcvmcwEcyKcwFcwGcwHcwIcwJbWecwKcwLcwMcwNcwOcwPcwQcwRcihcihcwScwTcwUcwVcwWcwXcwYcwZcxacxbcxccxdcxecmBcmCbZUcxfcxgcxhcsicxicuHchychycxjcmictscttdbjctvdbjarAabqabebFbbFbbFbbFbbFbbFbabebFbbFcbFbbPGabqbFcabqabqabebRmbRmbRmabeabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8631,10 +8656,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaaclIabqcCfcCfcCfcCfcCfaaaarBaaaabqaaaaaaaaabZUcPGcNacNbbZUcGZcEYcKzcKycKDcKAcGocKHcEYcKWcKXcFdcFdcFdcKecFdcFdcFdcKYcDecwqcKZcLbcLacLdcLccLecBvcBvcLfcDgcBvczCczCczCczCczCczCcLgcGqcGrcGscGtcGucGvcGwczMcGxcGycGzcGAcGBcGCcGDcdlcGFcGGcGHcGIcGIcGJcGKcGLcGMcGNcdncGPcGQcGRcGScGTcGUcGVcGVcGVcGWcBNabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcGYcFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaabqaaaabqaaaabqaaacmRaaaabqaaaabqabqabqabqaupaaaaaaaaaaaaabqbZUcNOcNPcNQbZUcEQcEYcLhcGocLicGocGocLjcEYcxpcLvcLkcLKcLwcLWcLwcLwcLwcLYcLXcxycKZcMacLZcLdcMbcMccImcMecMdcMrcMfcIocMwcIncMLcImcMScMTczGczHcHncHocHocHpcHqczMcHrcHscHtcDpcHvcHwcHxcdMcHzcHAcHBcHCceEcHEcHFcHGcHHcHIcHJceQcHLcHMcHNcHOcHPcHQcHRcHScHTcBNabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcHUcALcHVcHWcHXcALcHUabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqcHYabqcAfcAfcAfcAfcAfabqarBaaaaaaaaaaaaaaabZUcOJcOKcfbbZUcMUcEYcMWcMVcNccMXcNscNicEYcNIcNKcNJcNMcNLcNNcNKcNKcNScOqcNUcwqcKZcOIcOHcLdcOLcOUcImcPkcOYcPlcIncIocPucPwcPvcImcIscnscgxcItcBJcIucFOcIwcIucIxcIxcIxcIxcIxcIycxPcIzcEycIAcIAcIBcICcIDcIEcIFcIGcIHcIIcIJcEKcIKcILcIMcEycINcBNcBNcFHcBNcFHarAabqaaaaaaabqaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqabqcALcALcIOcIPcIPcIPcIQcALcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcBdcBecBecBecBecBfckrcBgcBhcBhcBhcBhcBiabqarBaaaaaaaaaaaaaaabZUbZUcfccPEcPFcPxcEYcEYcEYcEYcEYcEYcEYcEYcPycPycPycPzcPycPycPycPycPycPBcPAcPDcKZcKZcQbcLdcQfcLdcImcQwcMdcQzcIncIocQAcQCcQBcImcJgcnscgxcvmcwEcQKcJicJjcJkcJlcJmcJncJocJpcJqcCOczQdgSdgSdgSdgSdgSdgScJrcJscJtcJucJvcJwcEKbZUcFGbZUcFHcJxcJycJzcJAcJBarAarAabqabqabqabqabqabqabqaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqcJCcJDcJCcIPcJEcIPcXxcJGcFNabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcBdcBecBecBecBecBfckrcBgcBhcBhcBhcBhcBiabqarBaaaaaaaaaaaaaaabZUbZUcfccPEcPFcPxcEYcEYcEYcEYcEYcEYcEYcEYcPycPycPycPzcPycPycPycPycPycPBcPAcPDcKZcKZcQbcLdcQfcLdcImcyqcMdcQzcIncIocQAcQCcQBcImcJgcnscgxcvmcwEcQKcJicJjcJkcJlcJmcJncJocJpcJqcCOczQdgSdgSdgSdgSdgSdgScJrcJscJtcJucJvcJwcEKbZUcFGbZUcFHcJxcJycJzcJAcJBarAarAabqabqabqabqabqabqabqaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqcJCcJDcJCcIPcJEcIPcXxcJGcFNabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaaclIaaacCfcCfcCfcCfcCfaaaaupaaaaaaaaaaaaaaaaaabZUbZUbZUbZUcJRcogcogcogcogcNTcogcogcQVcogcogcogcRkcNTcNTcRlcRocPycRpcNUcRLcREcwjcRMcwjcRMcSvcImcSBcMdcSCcIocSPcSMcTncTecImcMScEXcgxcvmcKpcTwcKrcKscKtcKtcKtcKucKvcJpcgCcCOcKwdgScKxcfHcfscgLdgTcYScKBbRzcKEcKFcEKcrUcKGccscfYcFHcFHcFHcFHcFHcHfcKIarAabqaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqabqcALcALcKJcIPcIPcIPcKKcALcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaaaaaabqabqabqaaaaaacKLabqaaaaaaabqabqaaaaaaarBabqaaaaaaaaaaaaaaaaaaaaaaaabZUbZUbZUbZUbZUbZUbZUbZUbZUbZUbZUcoDcuVcTFchycoDcTZcjicUacUocUecUqcUpcUpcUrcUpcUFcUVcUUcVbcUWcVmcVlcVucVtcVEcVvcWkcVKcWGcWlcWHcIxcIxcLlcLmcLncLocLpcLqcLrcJpcLscLtcLucBNcKxcfHchuchuchEcLxcLycLzcJucLAcEKcdNcLBceNchycLCbZUabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcHUcALcLDcLEcLFcALcHUabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaacKLaaaaaaaaaaaaabqaaaaaaaupaaacHZcHZcHZcFvcHZcHZcHZaaaabqaaaaaaaaaabqaaaabqabqabqaaabZUcWIchychychychycWTchycDUcWUcwncXrcXlcXlcXwcXAcXycXYcImcYocYncYwcIncYIcYycYNcYLcImcMgcMhcgxcmmcIxcMicMjcMkcLocLocMlcMmcMncJpcMocMpcMqdgScKxcfHchuckedgTcYTcKBcMtcMucMvcEKcjnchyceNchycMxbZUabqaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcMycFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaacKLaaaaaaaaaaaaabqaaaaaaaupaaacHZcHZcHZcFvcHZcHZcHZaaaabqaaaaaaaaaabqaaaabqabqabqaaabZUcWIchychychychycWTchycDUcWUcwncXrcXlcXlcXwcXAcXycXYcImcYocYncyFcIncYIcYycYNcYLcImcMgcMhcgxcmmcIxcMicMjcMkcLocLocMlcMmcMncJpcMocMpcMqdgScKxcfHchuckedgTcYTcKBcMtcMucMvcEKcjnchyceNchycMxbZUabqaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcMycFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabearBarBarBaaaaaaaaacKLaaaaaaaaaarBarBarBauparBabqcHZcIRcIScIRcITcIRcHZcHZcFvcHZcFvcHZcHZaaaaaaabqaaaaaacHZcHZcHZcHZcHZbZUcKVbZUcDUcYOcDecRLcRUcRUcRUcRUcRUcRUcRUcImcImcImcImcYWcImcImcImcImbZUcNdcgxcmmcIxcNecMjcLocLpcLocNfcNgcNhckzcNjcNkcNldgVdgUdgUdgUdgUdgUcNocNncNpcNqcNrcEKchychyceNchybZUbZUbZUabqabqaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcFNcALcFNabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaarBabqcNtabqarBaaaaaaabqaaaaaaabqaaacHZcJHcJIcJJcJKcJHcGXcJMcJNcJOcJPcJQcHZaaacZmcIacIacIacLRcLTcLUcLVcHZcZvcZqcZwcDUcZIcZycZQcZOcZXdeidafdaddakcRUcNRcmVcmVcmWdancjecmYcmYcmZcNVcNWcNXcBIcIxcNYcNZcOacOacOacObcOccOdcOecOfcOgcOhcOicOjcOkcOlcJLcOncOocOpclncOrcOscOtcmYcmYcOucOvcOwcOxbZUbZUbZUcksaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaarBaaaabqaaaarBaaaaaaabqabqabqabqabqcHZcKMcHjcKOcHucKMcKMcKQcKRcKScKTcKUcHZaaadaodaucMMcMNcMOcMPcMBcMQcMRdaydaxdaMdaLdaOdaNdaPcYCdaUdaQdbbdaVdbfcRUcOMbZUbZUbZUbZUbZUbZUbZUbZUczIcONcOOcOPcOQcORcOScOTdblcOVcOWcLpcOXclCcOZcPacPbcPccPdcPecPfcPgcPhcPicOpclNcPjbZUbZUbZUbZUbZUdenclGcPmclJcPnclJcPoabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+2 -1
View File
@@ -649,6 +649,7 @@
"my" = (/obj/effect/landmark/abductor/agent{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"mz" = (/obj/effect/landmark/abductor/scientist{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"mA" = (/obj/effect/landmark/abductor/agent{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"mB" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{dir = 8; icon_state = "vault"},/area/centcom/ferry)
"mH" = (/obj/structure/lattice,/turf/space/transit,/area/wizard_station)
"mI" = (/obj/item/weapon/shard{color = "#008000"},/turf/unsimulated/floor{tag = "icon-cultdamage5"; icon_state = "cultdamage5"},/area/wizard_station)
"mK" = (/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station)
@@ -1050,7 +1051,7 @@ ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSababababababababababababababababababababababababababgVilkFilililililililkGkHilililgVhKhfhYgYgYgYklhfhKgOabababgNkyibibibibibibibibibibibibibibibibibibibgNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSababababababababababababababababababababababababababgVililililiAiliAililililililkUgVkVkVkWkXkYkZlakVkVkVabababgNkyibibibibibibibiLfZiLiMiLisisisiLfZiLfZiLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSababababababababababababababababababababababababababgVloilillplplplpiBililililillrgVlsltlulvlwlxlultltkVabababgNlylzlzlzlAlBlClAicibiciKicabababicibicibicababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamawamamamamamamamamamamamamamamamamamamamiSababababababababababababababababababababababababababgVlSiliClpjNjOlpilililililillWgVltlXlYlvlwlxlYlZltkVabababgNgNgNgNgNgNgNgNgNlDiNlDiNlDababablDfZlDfZlDababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamawamamamamamamamamamamamamamamamamamamamiSababababababababababababababababababababababababababgVlSiliCmBjNjOlpilililililillWgVltlXlYlvlwlxlYlZltkVabababgNgNgNgNgNgNgNgNgNlDiNlDiNlDababablDfZlDfZlDababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamfmgmhmiaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamiSayiSayiSaCamaWiSayiSayiSaCamamamamamamamatamiSababababababababababababababababababababababababababgVmuilillplplplpiBilililililmvgVmwltmwlvlwlxmwltmwkVabababababababababababababababababababababiOabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaamHaamIgamKmLmMaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamaAmnaAmnaAaCamaWaAmnaAmnaAaCamamatamamamamamamiSababababababababababababababababababababababababababgVmYililiFiliFilililililililnagVnbltltlvlwlxltltnckVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaamHnlnmnnmKnonpaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamavamaBmnaBmnaBaEaxaDaBmnaBmnaBaEavaxaxamamavamamamiSababababababababababababababababababababababababababgVnBilililililililnCnDnEnFnanGgVnHnInIlvlwlxnJnJnKkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
File diff suppressed because it is too large Load Diff
+30 -22
View File
@@ -770,7 +770,7 @@
"oP" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/weapon/gun/energy/sniperrifle,/obj/item/weapon/gun/energy/sniperrifle,/obj/item/weapon/gun/energy/sniperrifle,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space)
"oQ" = (/obj/machinery/vending/syndisnack,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership)
"oR" = (/obj/machinery/vending/syndicigs,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership)
"oS" = (/obj/structure/table/woodentable{dir = 10},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "SPECOPS"; name = "Ready Room"; pixel_x = 6; pixel_y = 6; req_access_txt = "114"},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "ASSAULT"; name = "Assault Armor"; pixel_x = -6; pixel_y = 6; req_access_txt = "114"},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "specopsoffice"; name = "Privacy Shutters"; pixel_x = 6; pixel_y = -6; req_access_txt = "114"},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "CCGAMMA"; name = "Gamma Lockdown"; pixel_x = -6; pixel_y = -6; req_access_txt = "114"},/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/centcom/specops)
"oS" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Mass Drivers"; dir = 2; network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"oT" = (/turf/simulated/floor/plasteel{icon_state = "red"},/area/centcom/gamma)
"oU" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/centcom/gamma)
"oV" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/centcom/gamma)
@@ -898,6 +898,20 @@
"rn" = (/obj/machinery/power/apc{dir = 2; name = "Gamma Armory APC"; pixel_y = -24},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space)
"ro" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/computer/mech_bay_power_console,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space)
"rp" = (/obj/mecha/combat/durand/loaded{operation_req_access = list(1)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/mech_bay_recharge_floor,/area/shuttle/gamma/space)
"rq" = (/obj/item/device/radio/intercom/specops{pixel_y = 25},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"rr" = (/obj/mecha/combat/marauder/seraph/loaded,/turf/unsimulated/floor{icon_state = "delivery"; dir = 6},/area/centcom/specops)
"rs" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Assault Armor Storage"; dir = 2; network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"rt" = (/obj/machinery/door/poddoor{icon_state = "pdoor1"; id_tag = "ASSAULT"; name = "Assault Armor"; p_open = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"ru" = (/obj/item/device/radio/intercom/specops{pixel_y = -28},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"rv" = (/obj/machinery/door/poddoor{icon_state = "pdoor1"; id_tag = "GRAVPULTS"; name = "Gravity Catapults"; p_open = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"rw" = (/obj/machinery/door/poddoor{icon_state = "pdoor1"; id_tag = "GRAVPULTS"; name = "Gravity Catapults"; p_open = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"rx" = (/obj/machinery/teleport/hub/upgraded{admin_usage = 1},/turf/unsimulated/floor{icon_state = "delivery"; dir = 6},/area/centcom/specops)
"ry" = (/obj/machinery/door/poddoor{icon_state = "pdoor1"; id_tag = "CCTELE"; name = "Specops Teleporter"; p_open = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"rz" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"rA" = (/obj/machinery/teleport/station,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"rB" = (/obj/machinery/computer/teleporter,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"rC" = (/obj/structure/table/woodentable{dir = 9},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "GRAVPULTS"; name = "Gravity Catapults"; pixel_x = -6; pixel_y = 6; req_access_txt = "114"},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "ASSAULT"; name = "Mech Storage"; pixel_x = 6; pixel_y = 6; req_access_txt = "114"},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "CCTELE"; name = "Teleporter Access"; pixel_x = -6; pixel_y = -6; req_access_txt = "114"},/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/centcom/specops)
"rD" = (/obj/structure/table/woodentable{dir = 10},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "SPECOPS"; name = "Ready Room"; pixel_x = -6; pixel_y = 6; req_access_txt = "114"},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "specopsoffice"; name = "Privacy Shutters"; pixel_x = 6; pixel_y = -6; req_access_txt = "114"},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "CCGAMMA"; name = "Gamma Lockdown"; pixel_x = -6; pixel_y = -6; req_access_txt = "114"},/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/centcom/specops)
"rE" = (/turf/unsimulated/wall,/area/start)
"rH" = (/obj/effect/landmark/start,/turf/unsimulated/floor,/area/start)
"rK" = (/turf/unsimulated/wall/splashscreen,/area/start)
@@ -934,8 +948,6 @@
"sX" = (/turf/unsimulated/wall,/area/centcom/specops)
"sZ" = (/obj/structure/table,/obj/machinery/processor{pixel_x = 0; pixel_y = 10},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control)
"ta" = (/obj/machinery/mech_bay_recharge_port/upgraded,/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops)
"tb" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Assault Armor North"; dir = 2; network = list("ERT","CentComm")},/obj/mecha/combat/marauder/seraph/loaded,/turf/unsimulated/floor{icon_state = "delivery"; dir = 6},/area/centcom/specops)
"tc" = (/obj/item/device/radio/intercom/specops{pixel_y = 25},/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/specops)
"td" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"te" = (/obj/machinery/recharge_station/upgraded,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"tf" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/kitchen/rollingpin,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control)
@@ -953,7 +965,6 @@
"tr" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/food/condiment/enzyme,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control)
"ts" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control)
"tt" = (/obj/mecha/combat/marauder/loaded,/turf/unsimulated/floor{icon_state = "delivery"; dir = 6},/area/centcom/specops)
"tu" = (/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/specops)
"tv" = (/obj/machinery/door/poddoor{icon_state = "pdoor1"; id_tag = "ASSAULT2"; name = "Launch Bay #2"; p_open = 0},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops)
"tw" = (/obj/machinery/mass_driver{dir = 8; drive_range = 50; id_tag = "ASSAULT2"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops)
"tx" = (/obj/machinery/door/airlock/centcom{name = "Commander Quarters"; opacity = 1; req_access_txt = "114"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/control)
@@ -979,9 +990,7 @@
"tV" = (/obj/machinery/door/poddoor{icon_state = "pdoor1"; id_tag = "ASSAULT0"; name = "Launch Bay #0"; p_open = 0},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops)
"tW" = (/obj/machinery/mass_driver{dir = 8; drive_range = 50; id_tag = "ASSAULT0"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops)
"tX" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Assault Armor South"; dir = 1; network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "loadingarea"; dir = 8},/area/centcom/specops)
"tY" = (/obj/item/device/radio/intercom/specops{pixel_y = -28},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"tZ" = (/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control)
"ua" = (/obj/machinery/door/poddoor{icon_state = "pdoor1"; id_tag = "ASSAULT"; name = "Assault Armor"; p_open = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops)
"ub" = (/obj/machinery/door/poddoor{icon_state = "pdoor1"; id_tag = "ASSAULT"; name = "Assault Armor"; p_open = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"uc" = (/turf/unsimulated/floor{icon_state = "greencorner"},/area/centcom/control)
"ud" = (/turf/unsimulated/floor{icon_state = "green"},/area/centcom/control)
@@ -1051,7 +1060,6 @@
"vx" = (/obj/machinery/door/airlock/centcom{name = "Bathroom"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops)
"vy" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"vz" = (/obj/machinery/door/poddoor/shutters{dir = 8; id_tag = "specopsoffice"; name = "Privacy Shutters"},/turf/unsimulated/wall/fakeglass,/area/centcom/specops)
"vA" = (/obj/structure/table/woodentable{dir = 9},/obj/item/ashtray/glass{icon_state = "ashtray_half_gl"},/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/centcom/specops)
"vB" = (/obj/machinery/computer/security/telescreen{name = "Special Ops. Monitor"; desc = "Used for watching the Special Ops."; network = list("ERT")},/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/specops)
"vC" = (/obj/structure/table/woodentable{dir = 5},/obj/item/device/radio/intercom/specops,/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/centcom/specops)
"vF" = (/obj/machinery/door/airlock/centcom{name = "Telecommunications"; opacity = 1; req_access_txt = "107"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
@@ -1611,25 +1619,25 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsqswsssssxsyszmmsBsCmnsEsEsysysqsFsGsHsIsqsJsKsLsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsqsqsqsqsqsysEmnsMsNmnsEsEsOmosqsQsQsQsQsqsRsSsTsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsvsEsEsEsEsEsEsEsEsysysqsQsUsVsVsqsqsWsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsqaNaNaNsvsEsEsEsEsEsEsEsEsEsEsusQmpmpsQsQsQsQsZsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXtatbtctdtdtesqsqsqsqsqsEsEmnsMsCmnsEsEsEsEsEsQsQsQsQtfsQsQtgsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititjtktitititjtltmtntdtdtdsqsrssstsqtosEmnsMtpmnsEsEsEsEsutqsQsQsQtrsQsQtssqsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXtatttutdtdtdsqswsssssxsEsEsEsEsEsEsEsEsEsEsqsusususususususqsqdWdXsqsqsqsqsqsqsqsqsqsqsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititvtktitititvtwtmtntdtdtdsqsqsqsqsqsqsqtxsqsqsqsqsEsEtysqcScRcUcTcWcVcXsudZdYebeasuecefefefefefegefefefeheiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXtatttutdtdtAsqtBtCtDsqtEtFtFtFtFtGsqsEsEtHsqdodedqdpdLdKdesufbfatLfcsuemeCeCeCeCeCeCeCeCeCeSeiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititItktitititItJtmtntdtdtdsqtKtLtMedtFtFtFtFtFeesqsusxsusqsusususususususqsqfLsqsqsqsqsqsqsqsqsqsqsqsqsqsqfXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXtatttutdtdtdsqsqeWeVsqeWeVsqsqsqsqsqtQtRtStTtTtTtTtTtTtTtTtTuEtRtZsqfXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititVtktitititVtWtXtYtdtdtdsXaNaNaNaNaNaNsXfecoflsqtQtRtRtRtRtRtRtRtRtRtRtRtRtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmsXsXsXsXsXsXuaubsXsXsXsXsXsXsXsXsXfeujflsqtQtRucudududududududududuetRtZsqaNaNoeodododododododofaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmcYoEoEoEoEoFfmfofnfqfpfsfrfnfEfmufuguguhuiujujujsXukukukukulukumunfeujflsqtQtRtZsususususususususutQtRtZsqaNaNohogojoioioioiokohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsqaNaNaNsvsEsEsEsEsEsEsEsEsEsEsusQmpmpsQsQsQsQsZsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXoSrqtdtesXtarrrstdsqsqsqsqsqsEsEmnsMsCmnsEsEsEsEsEsQsQsQsQtfsQsQtgsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititjtktitititjtltmtntdtdrttdtdtdtdsqsrssstsqtosEmnsMtpmnsEsEsEsEsutqsQsQsQtrsQsQtssqsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXtdtdtdtdsXtatttdtdsqswsssssxsEsEsEsEsEsEsEsEsEsEsqsusususususususqsqdWdXsqsqsqsqsqsqsqsqsqsqsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititvtktitititvtwtmtntdtdrttdtdtdtdsqsqsqsqsqsqsqtxsqsqsqsqsEsEtysqcScRcUcTcWcVcXsudZdYebeasuecefefefefefegefefefeheiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXtdtdtdtAsXtatttdtdsqtBtCtDsqtEtFtFtFtFtGsqsEsEtHsqdodedqdpdLdKdesufbfatLfcsuemeCeCeCeCeCeCeCeCeCeSeiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititItktitititItJtmtntdtdrttdtdtdtdsqtKtLtMedtFtFtFtFtFeesqsusxsusqsusususususususqsqfLsqsqsqsqsqsqsqsqsqsqsqsqsqsqfXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXtdtdtdtdsXtatttdtdsqsqeWeVsqeWeVsqsqsqsqsqtQtRtStTtTtTtTtTtTtTtTtTuEtRtZsqfXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititVtktitititVtWtXtntdrurttdtdtdrusXaNaNaNaNaNaNsXfecoflsqtQtRtRtRtRtRtRtRtRtRtRtRtRtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmsXrwrvsXsXsXsXubsXsXsXsXsXsXsXsXsXfeujflsqtQtRucudududududududududuetRtZsqaNaNoeodododododododofaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmcYoEoEoEoEoFfmfofnfqfpfsfrfnfEfmufujujuhuiugujujsXukukukukulukumunfeujflsqtQtRtZsususususususususutQtRtZsqaNaNohogojoioioioiokohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmoGoNoJoWoPoGfmjHfFkdkdkdkdfFlZmdujujujujujujujujuqururururururussXfeujflsqtQtRtZsuutuuuvuwuxuyuzsutQtRtZsqaNaNohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpgpfpfpfphoGfmoKkdkdkdkdkdkdoLmdujujujujujujujujsXuAuBuBuBuBuBuCsXsXoMsXsquEtRtSsuuFtRuGuHtRtRtRsuuEtRtZsqsqsqohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpipfpkpopfptfdoUoToToToToToToVfdujujujuIuIujujujuJuKuKuKuKuKuKuKuLuKuKuKuMtRtRtRuNtRtRtRtRtRtRtRuNtRtRtZoltRolomogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmoGpjpfpfrloGfmfmfmfmfmfmfmfmfmfmujujuOuPuQuRujuSsXsXuTuUuTsXsXoXsXoZoYpbsquetRucsutRtRtRtRtRtRtRsuuetRtZsqsqsqohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpnrnrmrprooGfmaNaNaNaNaNaNaNaNsXujuXuRooonvavbujvcvdvdvdvdvesXuKsXsXsXsXsqtQtRtZsuvfuuvgvgvgvhvisutQtRtZsqaNaNohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpDoEoEoEoErkfmaNaNaNaNsXuWuWsXsXujujvauRvmuRujujvnvdvovpvqvdsXuKsXvrtTtUsqtQtRtZsqsqvsvtvuvvvwsqsqtQtRtZsqaNaNohogogogopogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmfmfmfmfmfmfmfmaNaNaNaNsXvkvkpqprujujujvyvyujujujvzvdvAvBvCbesXuKsqpstRtRvFtRtRtZsqsqsusususususqsqtQtRtZsqaNaNoqodododododododoraNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkvkvksXvIvJujujujujvLujsXvdoSmjeTvPsXuKsqvQtRtZsutQtRtStTtTtTtTtTtTtTtTtTuEtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpnrnrmrprooGfmaNsXrxujujujujujryujuXrzooonvavbujvcvdvdvdvdvesXuKsXsXsXsXsqtQtRtZsuvfuuvgvgvgvhvisutQtRtZsqaNaNohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpDoEoEoEoErkfmaNsXrAujsXuWuWsXsXujujvauRvmuRujujvnvdvovpvqvdsXuKsXvrtTtUsqtQtRtZsqsqvsvtvuvvvwsqsqtQtRtZsqaNaNohogogogopogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmfmfmfmfmfmfmfmaNsXrBujsXvkvkpqprujujujvyvyujujujvzvdrCvBvCbesXuKsqpstRtRvFtRtRtZsqsqsusususususqsqtQtRtZsqaNaNoqodododododododoraNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXvkvkvksXvIvJujujujujvLujsXvdrDmjeTvPsXuKsqvQtRtZsutQtRtStTtTtTtTtTtTtTtTtTuEtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkpBsXsXsXsXsXsXbfbfsXsXsXvSvTvUvVvdsXuKsqvWtRvXsutQtRtRtRtRtRtRtRtRtRtRtRtRtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkpBsXaNaNaNaNwbwcwdwbwesXiDwgwhwiwjsXuKsqwkudwlsuwmudududududuetRucudududududwnsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvxsXsXaNaNaNaNwrwswtwrwesXsXsXsXsXsXsXoXsqsqsqsqsqsqsqsqsqsqsqsqwusqsqsqsqsqsqsqsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+5 -5
View File
@@ -38,8 +38,8 @@
"aL" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "16"},/turf/simulated/floor/plating,/area/shuttle/escape)
"aM" = (/obj/item/weapon/stool,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
"aN" = (/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
"aO" = (/obj/structure/table/woodentable,/obj/item/device/violin,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
"aP" = (/obj/structure/table/woodentable,/obj/item/device/guitar,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
"aO" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag{pixel_x = 5},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"aP" = (/obj/structure/table/woodentable,/obj/item/device/instrument/violin,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
"aQ" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/shuttle/escape)
"aR" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "15"},/turf/simulated/floor/plating,/area/shuttle/escape)
"aS" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
@@ -66,7 +66,7 @@
"bn" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"bo" = (/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/shuttle/escape)
"bp" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/obj/machinery/shower,/obj/structure/curtain/open/shower,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/shuttle/escape)
"bq" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"bq" = (/obj/structure/table/woodentable,/obj/item/device/instrument/guitar,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
"br" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"bs" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0; req_access_txt = "0"},/obj/structure/stool/bed/roller,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"bt" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/shuttle/escape)
@@ -99,7 +99,7 @@ aaaaapaqaralalasalarapaaaa
abatauatatatavatatatauatad
apawaxaKaKacaAazaAaBaCaDap
apaEaFaFaFaGaAaAaAaHaHaHap
aIaFaFaJaJaLaAaMaNaNaOaPac
aIaFaFaJaJaLaAaMaNaNaPbqac
aQatatatatbkaAaMaNaAaAaSap
aTaAaAaAaAaAaAaMaNaAaAaUap
apaHaVaVaHaAaAaMaNaAaAaWap
@@ -109,7 +109,7 @@ aRaXaYaYaHaAaAaMaNaNaNaNaR
apaHbebeaHaAaAazaMaMaMbfap
bgaAaAaAaAbhaAbhaAaAaAaAac
aQatatbiatbjatbjacbnblbmap
aybobobobobobpapbqbrbrbsap
aybobobobobobpapaObrbrbsap
acbtbubvbubwbuapbxbrbrbyap
apbzbubzbubAbBapbCbrbCbDap
bEbFbGbGbGbHatbIbJbJbJbFbK
+1 -1
View File
@@ -53,7 +53,7 @@
"ba" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "17"},/turf/simulated/floor/plating,/area/shuttle/escape)
"bb" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/shuttle/escape)
"bc" = (/obj/machinery/vending/clothing,/turf/simulated/floor/noslip,/area/shuttle/escape)
"bd" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/turf/simulated/floor/noslip,/area/shuttle/escape)
"bd" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag{pixel_x = 5},/turf/simulated/floor/noslip,/area/shuttle/escape)
"be" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0; req_access_txt = "0"},/obj/structure/stool/bed/roller,/turf/simulated/floor/noslip,/area/shuttle/escape)
"bf" = (/obj/structure/closet/cardboard,/turf/simulated/floor/noslip,/area/shuttle/escape)
"bg" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/floor/noslip,/area/shuttle/escape)
+1 -1
View File
@@ -56,7 +56,7 @@
"bd" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0"},/turf/simulated/shuttle/floor,/area/shuttle/escape)
"be" = (/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
"bf" = (/obj/structure/closet/crate,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
"bg" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"bg" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag{pixel_x = 5},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"bh" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0; req_access_txt = "0"},/obj/structure/stool/bed/roller,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"bi" = (/obj/structure/closet/cardboard,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
"bj" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
+2 -2
View File
@@ -77,6 +77,7 @@
"by" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = null; name = "Shuttle Cargo Hatch"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"bz" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"bA" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
"bB" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag{pixel_x = 5},/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/turf/simulated/floor/plasteel,/area/shuttle/escape)
"bC" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/shuttle/escape)
"bD" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/escape)
"bE" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
@@ -87,7 +88,6 @@
"bJ" = (/obj/item/device/radio/intercom{dir = 4; name = "station intercom (General)"; pixel_x = 28},/obj/item/weapon/extinguisher,/turf/simulated/floor/plasteel,/area/shuttle/escape)
"bK" = (/obj/structure/closet/cardboard,/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/shuttle/escape)
"bL" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel,/area/shuttle/escape)
"bM" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/turf/simulated/floor/plasteel,/area/shuttle/escape)
"bN" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel,/area/shuttle/escape)
"bO" = (/obj/machinery/sleeper,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape)
"bP" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/escape)
@@ -119,7 +119,7 @@ bwaUaUaUaUaUaUaUaUaUaUaUac
aSaebxbyaBaYaUaZaBbCacaebD
bEaUaUaUbgbhaUbibgaUaUbIap
acaUaUaUbgbhaUbibgaUaUbJap
apbKbLbLaJbhaUbiaJbNbMbOap
apbKbLbLaJbhaUbiaJbNbBbOap
bPaxbQbQawaeaeaeawbRbRaxbS
aabPbTbTbSbUbUbUbPbTbTbSaa
"}
@@ -47,8 +47,8 @@
"aU" = (/obj/effect/spawner/window/reinforced{color = "red"},/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/shuttle/escape)
"aV" = (/mob/living/simple_animal/hostile/construct/harvester,/turf/simulated/floor/engine/cult,/area/shuttle/escape)
"aW" = (/obj/structure/dresser,/turf/simulated/floor/engine/cult,/area/shuttle/escape)
"aX" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/turf/simulated/floor/engine/cult,/area/shuttle/escape)
"aY" = (/obj/effect/decal/cleanable/blood/tracks/footprints,/turf/simulated/floor/engine/cult,/area/shuttle/escape)
"aX" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag{pixel_x = 5},/turf/simulated/floor/engine/cult,/area/shuttle/escape)
"aY" = (/obj/effect/decal/cleanable/blood/footprints,/turf/simulated/floor/engine/cult,/area/shuttle/escape)
"aZ" = (/obj/structure/showcase/horrific_experiment,/turf/simulated/floor/engine/cult,/area/shuttle/escape)
"ba" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/shuttle/escape)
"bb" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/floor/engine/cult,/area/shuttle/escape)
+9 -11
View File
@@ -8,7 +8,7 @@
"ah" = (/obj/machinery/computer/security{network = list("SS13","Research Outpost","Mining Outpost","Telecomms")},/turf/simulated/shuttle/floor,/area/shuttle/escape)
"ai" = (/obj/structure/stool/bed/chair/comfy/black{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
"aj" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor,/area/shuttle/escape)
"ak" = (/obj/structure/grille,/obj/structure/window/full/shuttle,/turf/simulated/floor/plating,/area/xenos_station/transit)
"ak" = (/obj/docking_port/mobile/emergency{dir = 4; dwidth = 11; height = 13; timid = 1; width = 24},/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape)
"al" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor,/area/shuttle/escape)
"am" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
"an" = (/turf/simulated/shuttle/floor,/area/shuttle/escape)
@@ -31,9 +31,10 @@
"aE" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"aF" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "8"},/turf/simulated/floor/plating,/area/shuttle/escape)
"aG" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"aH" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag{pixel_x = 5},/obj/item/device/radio/intercom{dir = 4; name = "station intercom (General)"; pixel_x = 28},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"aI" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"aJ" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "15"},/turf/simulated/floor/plating,/area/shuttle/escape)
"aK" = (/obj/docking_port/mobile/emergency{dir = 4; dwidth = 9; height = 13; timid = 1; width = 24},/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape)
"aK" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area/shuttle/escape)
"aL" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"aM" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"aN" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
@@ -47,7 +48,6 @@
"aV" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access_txt = "2"},/turf/simulated/shuttle/floor4,/area/shuttle/escape)
"aW" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"aX" = (/obj/structure/stool/bed/roller,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"aY" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/xenos_station/transit)
"aZ" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor4,/area/shuttle/escape)
"ba" = (/turf/simulated/shuttle/floor4,/area/shuttle/escape)
"bb" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
@@ -55,12 +55,10 @@
"bd" = (/obj/machinery/status_display{pixel_x = -30; pixel_y = 0},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/escape)
"be" = (/obj/item/device/radio/intercom{dir = 4; name = "station intercom (General)"; pixel_x = 28},/turf/simulated/shuttle/floor4,/area/shuttle/escape)
"bf" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"bg" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/device/radio/intercom{dir = 4; name = "station intercom (General)"; pixel_x = 28},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"bh" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/escape)
"bi" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/escape)
"bj" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater,/turf/simulated/floor/plating/airless,/area/shuttle/escape)
"bk" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/escape)
"bl" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area/xenos_station/transit)
"bm" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/shuttle/escape)
"bn" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/escape)
"bo" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/escape)
@@ -69,7 +67,7 @@
aaaaaaaaaaabacadaaaaaaaaaa
aaaaaaaaabaeafagadaaaaaaaa
aaaaaaabaeahaiajagadaaaaaa
aaaaaaakalamanamaoakaaaaaa
aaaaaaacalamanamaoacaaaaaa
aaaaabaeapanananaqagadaaaa
aaaaarasatananauavanaraaaa
abawaxawawawayawazawaxawad
@@ -77,7 +75,7 @@ araAaBaCaDaAanaCaDaAaBaCar
araEanaCaFaAanaCaFaAanaGar
aWaIanaCaFaAanaCaFaAanaCac
araAanaCaJaAanaCaJaAanaCar
aKananananananananananaCar
akananananananananananaCar
araLanaCaDaAanaCaDaAanaMar
aDaAanaCaFaAanaCaFaAanaCaD
aFaAanaCaFaAanaCaFaAanaCaF
@@ -85,10 +83,10 @@ aJaAanaCaJaAanaCaJaAanaCaJ
araNanananananananananaOar
aPananananaQanaQanananaOac
araRaSaTacaUacaUacaVaRaSar
aWaIaIaIaXaraaaYaZbaaZaZar
acbbaIaIbcaraaaYbdbababear
arbfaIaIbgaraaaYbhbhbhbhar
biazbjbjbjbkaablbmbmbmazbn
aWaIaIaIaXaraaaraZbaaZaZar
acbbaIaIbcaraaarbdbababear
arbfaIaIaHaraaarbhbhbhbhar
biazbjbjbjbkaaaKbmbmbmazbn
aabibobobobnaabibobobobnaa
"}
+14 -12
View File
@@ -13,19 +13,19 @@ z6 = empty space
z7 = empty space
*/
#if !defined(MAP_FILE)
#include "map_files\MetaStation\MetaStation.v41A.II.dmm"
#include "map_files\MetaStation\z2.dmm"
#include "map_files\MetaStation\z3.dmm"
#include "map_files\MetaStation\z4.dmm"
#include "map_files\generic\z5.dmm"
#include "map_files\generic\z6.dmm"
#include "map_files\generic\z7.dmm"
#if !defined(USING_MAP_DATUM)
#include "map_files\MetaStation\MetaStation.v41A.II.dmm"
#include "map_files\MetaStation\z2.dmm"
#include "map_files\MetaStation\z3.dmm"
#include "map_files\MetaStation\z4.dmm"
#include "map_files\generic\z5.dmm"
#include "map_files\generic\z6.dmm"
#include "map_files\generic\z7.dmm"
#define MAP_FILE "MetaStation.v41A.II.dmm"
#define MAP_NAME "MetaStation"
#define MAP_TRANSITION_CONFIG list(\
#define MAP_FILE "MetaStation.v41A.II.dmm"
#define MAP_NAME "MetaStation"
#define MAP_TRANSITION_CONFIG list(\
DECLARE_LEVEL(MAIN_STATION, CROSSLINKED, list(STATION_LEVEL, STATION_CONTACT, REACHABLE, AI_OK)),\
DECLARE_LEVEL(CENTCOMM, SELFLOOPING, list(ADMIN_LEVEL, BLOCK_TELEPORT, IMPEDES_MAGIC)),\
DECLARE_LEVEL(TELECOMMS, CROSSLINKED, list(REACHABLE, BOOSTS_SIGNAL, AI_OK)),\
@@ -34,8 +34,10 @@ DECLARE_LEVEL(MINING, CROSSLINKED, list(REACHABLE, STATION_CONTACT, AI_OK, ORE_L
DECLARE_LEVEL(EMPTY_AREA, CROSSLINKED, list(REACHABLE)),\
DECLARE_LEVEL(EMPTY_AREA_2, CROSSLINKED, list(REACHABLE)))
#define USING_MAP_DATUM /datum/map/metastation
#elif !defined(MAP_OVERRIDE)
#warn a map has already been included, ignoring MetaStation.
#endif
#endif
+3 -3
View File
@@ -1,6 +1,6 @@
// This is for Travis testing. DO NOT SET THIS AS THE GAME'S MAP NORMALLY!
#if !defined(MAP_FILE)
#if !defined(USING_MAP_DATUM)
#include "map_files\RandomZLevels\beach.dmm"
#include "map_files\RandomZLevels\moonoutpost19.dmm"
#include "map_files\RandomZLevels\undergroundoutpost45.dmm"
@@ -12,10 +12,10 @@
#include "map_files\RandomZLevels\evil_santa.dmm"
#define MAP_FILE "beach.dmm"
#define MAP_NAME "Away Missions Test"
#define MAP_TRANSITION_CONFIG list(AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED, AWAY_MISSION = UNAFFECTED)
#define USING_MAP_DATUM /datum/map
#elif !defined(MAP_OVERRIDE)
#warn a map has already been included.
#endif
+5 -2
View File
@@ -33,7 +33,7 @@ Pipelines + Other Objects -> Pipe network
/obj/machinery/atmospherics/New()
..()
atmos_machinery += src
if(!icon_manager)
icon_manager = new()
@@ -54,6 +54,7 @@ Pipelines + Other Objects -> Pipe network
/obj/machinery/atmospherics/Destroy()
QDEL_NULL(stored)
atmos_machinery -= src
for(var/mob/living/L in src) //ventcrawling is serious business
L.remove_ventcrawl()
L.forceMove(get_turf(src))
@@ -166,7 +167,9 @@ Pipelines + Other Objects -> Pipe network
add_fingerprint(user)
var/unsafe_wrenching = FALSE
var/internal_pressure = int_air.return_pressure()-env_air.return_pressure()
var/I = int_air ? int_air.return_pressure() : 0
var/E = env_air ? env_air.return_pressure() : 0
var/internal_pressure = I - E
playsound(src.loc, W.usesound, 50, 1)
to_chat(user, "<span class='notice'>You begin to unfasten \the [src]...</span>")
@@ -147,6 +147,6 @@
T.assume_air(to_release)
air_update_turf(1)
/obj/machinery/atmospherics/binary/process()
/obj/machinery/atmospherics/binary/process_atmos()
..()
return parent1 && parent2
@@ -70,7 +70,7 @@
else
last_pressure_delta = 0
/obj/machinery/atmospherics/binary/circulator/process()
/obj/machinery/atmospherics/binary/circulator/process_atmos()
..()
update_icon()
@@ -104,8 +104,9 @@
else
add_underlay(T, node2, dir)
/obj/machinery/atmospherics/binary/dp_vent_pump/process()
if(!..() || !on)
/obj/machinery/atmospherics/binary/dp_vent_pump/process_atmos()
..()
if(!on)
return 0
var/datum/gas_mixture/environment = loc.return_air()
@@ -33,8 +33,9 @@
add_underlay(T, node1, turn(dir, 180))
add_underlay(T, node2, dir)
/obj/machinery/atmospherics/binary/passive_gate/process()
if(!..() || !on)
/obj/machinery/atmospherics/binary/passive_gate/process_atmos()
..()
if(!on)
return 0
var/output_starting_pressure = air2.return_pressure()
@@ -53,8 +53,9 @@ Thus, the two variables affect pump operation are set in New():
add_underlay(T, node1, turn(dir, -180))
add_underlay(T, node2, dir)
/obj/machinery/atmospherics/binary/pump/process()
if(!..() || (stat & (NOPOWER|BROKEN)) || !on)
/obj/machinery/atmospherics/binary/pump/process_atmos()
..()
if((stat & (NOPOWER|BROKEN)) || !on)
return 0
var/output_starting_pressure = air2.return_pressure()
@@ -51,8 +51,9 @@ Thus, the two variables affect pump operation are set in New():
add_underlay(T, node1, turn(dir, -180))
add_underlay(T, node2, dir)
/obj/machinery/atmospherics/binary/volume_pump/process()
if(!..() || (stat & (NOPOWER|BROKEN)) || !on)
/obj/machinery/atmospherics/binary/volume_pump/process_atmos()
..()
if((stat & (NOPOWER|BROKEN)) || !on)
return 0
// Pump mechanism just won't do anything if the pressure is too high/too low
@@ -5,14 +5,14 @@
name = "omni gas filter"
icon_state = "map_filter"
var/list/filters = new()
var/list/o_filters = new()
var/datum/omni_port/input
var/datum/omni_port/output
/obj/machinery/atmospherics/omni/filter/Destroy()
input = null
output = null
filters.Cut()
o_filters.Cut()
return ..()
/obj/machinery/atmospherics/omni/filter/sort_ports()
@@ -22,8 +22,8 @@
output = null
if(input == P)
input = null
if(filters.Find(P))
filters -= P
if(o_filters.Find(P))
o_filters -= P
P.air.volume = 200
switch(P.mode)
@@ -32,18 +32,19 @@
if(ATM_OUTPUT)
output = P
if(ATM_O2 to ATM_N2O)
filters += P
o_filters += P
/obj/machinery/atmospherics/omni/filter/error_check()
if(!input || !output || !filters)
if(!input || !output || !o_filters)
return 1
if(filters.len < 1 || filters.len > 2) //requires 1 or 2 filters ~otherwise why are you using a filter?
if(o_filters.len < 1 || o_filters.len > 2) //requires 1 or 2 o_filters ~otherwise why are you using a filter?
return 1
return 0
/obj/machinery/atmospherics/omni/filter/process()
if(!..() || !on)
/obj/machinery/atmospherics/omni/filter/process_atmos()
..()
if(!on)
return 0
if(!input || !output)
@@ -56,7 +57,7 @@
if(output_pressure >= target_pressure)
return 1
for(var/datum/omni_port/P in filters)
for(var/datum/omni_port/P in o_filters)
if(P.air.return_pressure() >= target_pressure)
return 1
@@ -71,7 +72,7 @@
if(!removed)
return 1
for(var/datum/omni_port/P in filters)
for(var/datum/omni_port/P in o_filters)
var/datum/gas_mixture/filtered_out = new
filtered_out.temperature = removed.return_temperature()
@@ -83,8 +83,9 @@
return 0
/obj/machinery/atmospherics/omni/mixer/process()
if(!..() || !on)
/obj/machinery/atmospherics/omni/mixer/process_atmos()
..()
if(!on)
return 0
var/datum/gas_mixture/output_air = output.air
@@ -128,7 +128,7 @@
/obj/machinery/atmospherics/omni/attack_ghost(mob/user)
ui_interact(user)
/obj/machinery/atmospherics/omni/proc/build_icons()
if(!check_icon_cache())
return
@@ -293,7 +293,7 @@
P.parent = New
/obj/machinery/atmospherics/omni/process()
/obj/machinery/atmospherics/omni/process_atmos()
..()
for(var/datum/omni_port/port in ports)
if(!port.parent)
@@ -68,8 +68,9 @@ Filter types:
if(old_stat != stat)
update_icon()
/obj/machinery/atmospherics/trinary/filter/process()
if(!..() || !on)
/obj/machinery/atmospherics/trinary/filter/process_atmos()
..()
if(!on)
return 0
var/output_starting_pressure = air3.return_pressure()
@@ -56,8 +56,9 @@
..()
air3.volume = 300
/obj/machinery/atmospherics/trinary/mixer/process()
if(!..() || !on)
/obj/machinery/atmospherics/trinary/mixer/process_atmos()
..()
if(!on)
return 0
var/output_starting_pressure = air3.return_pressure()
@@ -206,6 +206,6 @@
T.assume_air(to_release)
air_update_turf(1)
/obj/machinery/atmospherics/trinary/process()
/obj/machinery/atmospherics/trinary/process_atmos()
..()
return parent1 && parent2 && parent3
@@ -22,10 +22,11 @@
return
/obj/machinery/atmospherics/unary/cold_sink/process()
if(!..() || !on)
/obj/machinery/atmospherics/unary/cold_sink/process_atmos()
..()
if(!on)
return 0
var/air_heat_capacity = air_contents.heat_capacity()
var/combined_heat_capacity = current_heat_capacity + air_heat_capacity
var/old_temperature = air_contents.temperature
@@ -32,9 +32,8 @@
..()
/obj/machinery/atmospherics/unary/heat_exchanger/process()
if(!..())
return 0
/obj/machinery/atmospherics/unary/heat_exchanger/process_atmos()
..()
if(!partner)
return 0
@@ -22,8 +22,9 @@
return
/obj/machinery/atmospherics/unary/heat_reservoir/process()
if(!..() || !on)
/obj/machinery/atmospherics/unary/heat_reservoir/process_atmos()
..()
if(!on)
return 0
var/air_heat_capacity = air_contents.heat_capacity()
var/combined_heat_capacity = current_heat_capacity + air_heat_capacity
@@ -51,10 +51,9 @@
if(old_stat != stat)
update_icon()
/obj/machinery/atmospherics/unary/outlet_injector/process()
if(!..())
return 0
/obj/machinery/atmospherics/unary/outlet_injector/process_atmos()
..()
injecting = 0
if(!on || stat & NOPOWER)
@@ -28,8 +28,9 @@
air_contents.volume = 50
/obj/machinery/atmospherics/unary/oxygen_generator/process()
if(!..() || !on)
/obj/machinery/atmospherics/unary/oxygen_generator/process_atmos()
..()
if(!on)
return 0
var/total_moles = air_contents.total_moles()
@@ -17,9 +17,8 @@
..()
air_contents.volume = volume
/obj/machinery/atmospherics/unary/passive_vent/process()
if(!..())
return 0
/obj/machinery/atmospherics/unary/passive_vent/process_atmos()
..()
if(!node)
return 0
@@ -28,8 +28,9 @@
return
add_underlay(T, node, dir)
/obj/machinery/atmospherics/unary/portables_connector/process()
if(!..() || !connected_device)
/obj/machinery/atmospherics/unary/portables_connector/process_atmos()
..()
if(!connected_device)
return 0
parent.update = 1
@@ -17,9 +17,8 @@
prefix="h"
icon_state = "[prefix]off"
/obj/machinery/atmospherics/unary/thermal_plate/process()
if(!..())
return 0
/obj/machinery/atmospherics/unary/thermal_plate/process_atmos()
..()
var/datum/gas_mixture/environment = loc.return_air()
@@ -99,6 +99,6 @@
T.assume_air(to_release)
air_update_turf(1)
/obj/machinery/atmospherics/unary/process()
/obj/machinery/atmospherics/unary/process_atmos()
..()
return parent
@@ -121,8 +121,9 @@
update_icon()
update_underlays()
/obj/machinery/atmospherics/unary/vent_pump/process()
if(!..() || (stat & (NOPOWER|BROKEN)))
/obj/machinery/atmospherics/unary/vent_pump/process_atmos()
..()
if((stat & (NOPOWER|BROKEN)))
return 0
if(!node)
on = 0
@@ -146,7 +147,7 @@
if(pressure_delta > 0.5)
if(air_contents.temperature > 0)
var/transfer_moles = pressure_delta*environment.volume/(air_contents.temperature * R_IDEAL_GAS_EQUATION)
var/transfer_moles = pressure_delta*environment.volume/(air_contents.temperature * R_IDEAL_GAS_EQUATION) / 5
var/datum/gas_mixture/removed = air_contents.remove(transfer_moles)
@@ -164,7 +165,7 @@
if(pressure_delta > 0.5)
if(environment.temperature > 0)
var/transfer_moles = pressure_delta*air_contents.volume/(environment.temperature * R_IDEAL_GAS_EQUATION)
var/transfer_moles = pressure_delta*air_contents.volume/(environment.temperature * R_IDEAL_GAS_EQUATION) / 5
var/datum/gas_mixture/removed = loc.remove_air(transfer_moles)
if(isnull(removed)) //in space
@@ -175,9 +175,8 @@
src.broadcast_status()
check_turfs()
/obj/machinery/atmospherics/unary/vent_scrubber/process()
if(!..())
return 0
/obj/machinery/atmospherics/unary/vent_scrubber/process_atmos()
..()
if(widenet)
check_turfs()
@@ -215,7 +214,7 @@
if(scrubbing)
if((scrub_O2 && environment.oxygen>0.001) || (scrub_N2 && environment.nitrogen>0.001) || (scrub_CO2 && environment.carbon_dioxide>0.001) || (scrub_Toxins && environment.toxins>0.001) || (environment.trace_gases.len>0))
var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles()
var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles() / 5
//Take a gas sample
var/datum/gas_mixture/removed = loc.remove_air(transfer_moles)
@@ -257,7 +256,7 @@
if(air_contents.return_pressure()>=50*ONE_ATMOSPHERE)
return
var/transfer_moles = environment.total_moles()*(volume_rate/environment.volume)
var/transfer_moles = environment.total_moles()*(volume_rate/environment.volume) / 5
var/datum/gas_mixture/removed = tile.remove_air(transfer_moles)
+2 -1
View File
@@ -25,11 +25,12 @@
/obj/machinery/atmospherics/pipe/cap/pipeline_expansion()
return list(node)
/obj/machinery/atmospherics/pipe/cap/process()
/obj/machinery/atmospherics/pipe/cap/process_atmos()
if(!parent)
..()
else
. = PROCESS_KILL
/obj/machinery/atmospherics/pipe/cap/Destroy()
. = ..()
if(node)
+1 -1
View File
@@ -66,7 +66,7 @@
/obj/machinery/atmospherics/pipe/manifold/pipeline_expansion()
return list(node1, node2, node3)
/obj/machinery/atmospherics/pipe/manifold/process()
/obj/machinery/atmospherics/pipe/manifold/process_atmos()
if(!parent)
..()
else
+1 -1
View File
@@ -25,7 +25,7 @@
/obj/machinery/atmospherics/pipe/manifold4w/pipeline_expansion()
return list(node1, node2, node3, node4)
/obj/machinery/atmospherics/pipe/manifold4w/process()
/obj/machinery/atmospherics/pipe/manifold4w/process_atmos()
if(!parent)
..()
else
@@ -13,7 +13,7 @@
buckle_lying = 1
var/icon_temperature = T20C //stop small changes in temperature causing icon refresh
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/process()
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/process_atmos()
var/environment_temperature = 0
var/datum/gas_mixture/pipe_air = return_air()
if(!pipe_air)
+18 -5
View File
@@ -221,7 +221,7 @@
if(air.temperature < T0C && air.return_pressure() > 10)
icy = 1
else
else if(air.temperature > T0C)
icy = 0
update_visuals()
@@ -305,17 +305,30 @@
/atom/movable/var/pressure_resistance = 5
/atom/movable/var/throw_pressure_limit = 15
/atom/movable/var/last_forced_movement = 0
/atom/movable/proc/experience_pressure_difference(pressure_difference, direction)
if(last_forced_movement >= air_master.current_cycle)
return 0
else if(!anchored && !pulledby)
if(pressure_difference > pressure_resistance)
if(pressure_difference >= throw_pressure_limit)
var/general_direction = get_edge_target_turf(src, direction)
if(last_forced_movement + 10 < air_master.current_cycle && is_valid_tochat_target(src)) //the first check prevents spamming throw to_chat
to_chat(src, "<span class='userdanger'>The pressure sends you flying!</span>")
if(ishuman(src))
var/mob/living/carbon/human/H = src
H.Weaken(min(pressure_difference / 10, 10))
spawn()
throw_at(general_direction, pressure_difference / 10, pressure_difference / 200, null, 0, 0, null)
last_forced_movement = air_master.current_cycle
spawn step(src, direction)
return 1
return 1
else if(pressure_difference > pressure_resistance)
spawn()
step(src, direction)
last_forced_movement = air_master.current_cycle
return 1
return 0
+5 -5
View File
@@ -48,14 +48,14 @@
#define FIRE_MINIMUM_TEMPERATURE_TO_SPREAD 150+T0C
#define FIRE_MINIMUM_TEMPERATURE_TO_EXIST 100+T0C
#define FIRE_SPREAD_RADIOSITY_SCALE 0.85
#define FIRE_CARBON_ENERGY_RELEASED 500000 //Amount of heat released per mole of burnt carbon into the tile
#define FIRE_PLASMA_ENERGY_RELEASED 3000000 //Amount of heat released per mole of burnt plasma into the tile
#define FIRE_CARBON_ENERGY_RELEASED 2500000 //Amount of heat released per mole of burnt carbon into the tile
#define FIRE_PLASMA_ENERGY_RELEASED 15000000 //Amount of heat released per mole of burnt plasma into the tile
#define FIRE_GROWTH_RATE 40000 //For small fires
#define CARBON_LIFEFORM_FIRE_RESISTANCE 200+T0C //Resistance to fire damage
#define CARBON_LIFEFORM_FIRE_DAMAGE 4 //Fire damage
//Plasma fire properties
#define OXYGEN_BURN_RATE_BASE 1.4
#define PLASMA_BURN_RATE_DELTA 4
#define OXYGEN_BURN_RATE_BASE 7
#define PLASMA_BURN_RATE_DELTA 20
#define PLASMA_MINIMUM_BURN_TEMPERATURE 100+T0C
#define PLASMA_UPPER_TEMPERATURE 1370+T0C
#define PLASMA_MINIMUM_OXYGEN_NEEDED 2
@@ -119,4 +119,4 @@
// Atmos alarm defines
#define ATMOS_ALARM_NONE 0
#define ATMOS_ALARM_WARNING 1
#define ATMOS_ALARM_DANGER 2
#define ATMOS_ALARM_DANGER 2
+5
View File
@@ -88,3 +88,8 @@
#define BLOCKHAIR 32768 // temporarily removes the user's hair, facial and otherwise.
#define ONESIZEFITSALL 1 // determines if something can be worn by a fatty or not.
//flags for muzzle speech blocking
#define MUTE_NONE 0 // Does not mute you.
#define MUTE_MUFFLE 1 // Muffles everything you say "MHHPHHMMM!!!
#define MUTE_ALL 2 // Completely mutes you.
+2
View File
@@ -9,6 +9,8 @@
#define is_cleanable(A) (istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/rune)) //if something is cleanable
#define is_pen(W) (istype(W, /obj/item/weapon/pen))
var/list/static/global/pointed_types = typecacheof(list(
/obj/item/weapon/pen,
/obj/item/weapon/screwdriver,
+5
View File
@@ -19,6 +19,8 @@
#define LEFT 1
#define RIGHT 2
#define SPLINT_LIFE 2000 //number of steps splints stay on
//Pulse levels, very simplified
#define PULSE_NONE 0 //so !M.pulse checks would be possible
@@ -169,3 +171,6 @@
#define hasorgans(A) (ishuman(A))
#define is_admin(user) (check_rights(R_ADMIN, 0, (user)) != 0)
//effects
#define EFFECT_HIGHFIVE "highfiving"
+1
View File
@@ -25,6 +25,7 @@
#define MEMBER_PUBLIC 8192
#define CHAT_NO_ADMINLOGS 16384
#define DONATOR_PUBLIC 32768
#define CHAT_NO_TICKETLOGS 65536
#define TOGGLES_DEFAULT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_ATTACKLOGS|CHAT_LOOC|MEMBER_PUBLIC|DONATOR_PUBLIC)
+6
View File
@@ -0,0 +1,6 @@
//Byond type ids
#define TYPEID_NULL "0"
#define TYPEID_NORMAL_LIST "f"
//helper macros
#define GET_TYPEID(ref) ( ( (lentext(ref) <= 10) ? "TYPEID_NULL" : copytext(ref, 4, lentext(ref) - 6) ) )
#define IS_NORMAL_LIST(L) (GET_TYPEID("\ref[L]") == TYPEID_NORMAL_LIST)
+21
View File
@@ -0,0 +1,21 @@
#define VV_NUM "Number"
#define VV_TEXT "Text"
#define VV_MESSAGE "Mutiline Text"
#define VV_ICON "Icon"
#define VV_ATOM_REFERENCE "Atom Reference"
#define VV_DATUM_REFERENCE "Datum Reference"
#define VV_MOB_REFERENCE "Mob Reference"
#define VV_CLIENT "Client"
#define VV_ATOM_TYPE "Atom Typepath"
#define VV_DATUM_TYPE "Datum Typepath"
#define VV_TYPE "Custom Typepath"
#define VV_MATRIX "Matrix"
#define VV_FILE "File"
#define VV_LIST "List"
#define VV_NEW_ATOM "New Atom"
#define VV_NEW_DATUM "New Datum"
#define VV_NEW_TYPE "New Custom Typepath"
#define VV_NEW_LIST "New List"
#define VV_NULL "NULL"
#define VV_RESTORE_DEFAULT "Restore to Default"
#define VV_MARKED_DATUM "Marked Datum"
+1 -1
View File
@@ -9,7 +9,7 @@
//head accessory
init_sprite_accessory_subtypes(/datum/sprite_accessory/head_accessory, head_accessory_styles_list)
//hair
init_sprite_accessory_subtypes(/datum/sprite_accessory/hair, hair_styles_list, hair_styles_male_list, hair_styles_female_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/hair, hair_styles_public_list, hair_styles_male_list, hair_styles_female_list, hair_styles_full_list)
//facial hair
init_sprite_accessory_subtypes(/datum/sprite_accessory/facial_hair, facial_hair_styles_list, facial_hair_styles_male_list, facial_hair_styles_female_list)
//underwear
+25
View File
@@ -654,3 +654,28 @@ proc/dd_sortedObjectList(list/incoming)
// LAZYING PT 2: THE LAZENING
#define LAZYREINITLIST(L) LAZYCLEARLIST(L); LAZYINITLIST(L);
//same, but returns nothing and acts on list in place
/proc/shuffle_inplace(list/L)
if(!L)
return
for(var/i=1, i<L.len, ++i)
L.Swap(i,rand(i,L.len))
//Return a list with no duplicate entries
/proc/uniqueList(list/L)
. = list()
for(var/i in L)
. |= i
//same, but returns nothing and acts on list in place (also handles associated values properly)
/proc/uniqueList_inplace(list/L)
var/temp = L.Copy()
L.len = 0
for(var/key in temp)
if(isnum(key))
L |= key
else
L[key] = temp[key]
+2 -2
View File
@@ -49,8 +49,8 @@ proc/pick_species_allowed_underwear(list/all_picks, species)
proc/random_hair_style(var/gender, species = "Human", var/datum/robolimb/robohead)
var/h_style = "Bald"
var/list/valid_hairstyles = list()
for(var/hairstyle in hair_styles_list)
var/datum/sprite_accessory/S = hair_styles_list[hairstyle]
for(var/hairstyle in hair_styles_public_list)
var/datum/sprite_accessory/S = hair_styles_public_list[hairstyle]
if(hairstyle == "Bald") //Just in case.
valid_hairstyles += hairstyle
+9 -3
View File
@@ -29,7 +29,7 @@
/proc/time_stamp()
return time2text(world.timeofday, "hh:mm:ss")
/proc/gameTimestamp(format = "hh:mm:ss") // Get the game time in text
return time2text(world.time - timezoneOffset + 432000, format)
@@ -61,6 +61,12 @@ proc/isDay(var/month, var/day)
*/
/proc/stop_watch(wh)
return round(0.1 * (TimeOfGame - wh), 0.1)
/proc/month2number(month)
return month_names.Find(month)
return month_names.Find(month)
//Take a value in seconds and returns a string of minutes and seconds in the format X minute(s) and X seconds.
/proc/seconds_to_time(var/seconds as num)
var/numSeconds = seconds % 60
var/numMinutes = (seconds - numSeconds) / 60
return "[numMinutes] [numMinutes > 1 ? "minutes" : "minute"] and [numSeconds] seconds."
+37
View File
@@ -328,3 +328,40 @@
var/e = matrix_list[5]
var/f = matrix_list[6]
return matrix(a, b, c, d, e, f)
//This is a weird one:
//It returns a list of all var names found in the string
//These vars must be in the [var_name] format
//It's only a proc because it's used in more than one place
//Takes a string and a datum
//The string is well, obviously the string being checked
//The datum is used as a source for var names, to check validity
//Otherwise every single word could technically be a variable!
/proc/string2listofvars(var/t_string, var/datum/var_source)
if(!t_string || !var_source)
return list()
. = list()
var/var_found = findtext(t_string, "\[") //Not the actual variables, just a generic "should we even bother" check
if(var_found)
//Find var names
// "A dog said hi [name]!"
// splittext() --> list("A dog said hi ","name]!"
// jointext() --> "A dog said hi name]!"
// splittext() --> list("A","dog","said","hi","name]!")
t_string = replacetext(t_string, "\[", "\[ ")//Necessary to resolve "word[var_name]" scenarios
var/list/list_value = splittext(t_string, "\[")
var/intermediate_stage = jointext(list_value, null)
list_value = splittext(intermediate_stage, " ")
for(var/value in list_value)
if(findtext(value, "]"))
value = splittext(value, "]") //"name]!" --> list("name","!")
for(var/A in value)
if(var_source.vars.Find(A))
. += A
+1
View File
@@ -32,6 +32,7 @@ var/global/next_unique_datum_id = 1
unique_datum_id = "\ref[src]_[next_unique_datum_id++]"
return unique_datum_id
/proc/locateUID(uid)
if(!istext(uid))
return null
+61 -33
View File
@@ -1730,53 +1730,81 @@ var/mob/dview/dview_mob = new
closest_atom = A
return closest_atom
/proc/pick_closest_path(value)
var/list/matches = get_fancy_list_of_types()
if(!isnull(value) && value!="")
/proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
if(value == FALSE) //nothing should be calling us with a number, so this is safe
value = input("Enter type to find (blank for all, cancel to cancel)", "Search for type") as null|text
if(isnull(value))
return
value = trim(value)
if(!isnull(value) && value != "")
matches = filter_fancy_list(matches, value)
if(matches.len==0)
if(matches.len == 0)
return
var/chosen
if(matches.len==1)
if(matches.len == 1)
chosen = matches[1]
else
chosen = input("Select an atom type", "Spawn Atom", matches[1]) as null|anything in matches
chosen = input("Select a type", "Pick Type", matches[1]) as null|anything in matches
if(!chosen)
return
chosen = matches[chosen]
return chosen
/proc/make_types_fancy(var/list/types)
if(ispath(types))
types = list(types)
. = list()
for(var/type in types)
var/typename = "[type]"
var/static/list/TYPES_SHORTCUTS = list(
/obj/effect/decal/cleanable = "CLEANABLE",
/obj/item/device/radio/headset = "HEADSET",
/obj/item/clothing/head/helmet/space = "SPESSHELMET",
/obj/item/weapon/book/manual = "MANUAL",
/obj/item/weapon/reagent_containers/food/drinks = "DRINK", //longest paths comes first
/obj/item/weapon/reagent_containers/food = "FOOD",
/obj/item/weapon/reagent_containers = "REAGENT_CONTAINERS",
/obj/item/weapon = "WEAPON",
/obj/machinery/atmospherics = "ATMOS_MECH",
/obj/machinery/portable_atmospherics = "PORT_ATMOS",
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack = "MECHA_MISSILE_RACK",
/obj/item/mecha_parts/mecha_equipment = "MECHA_EQUIP",
/obj/item/organ = "ORGAN",
/obj/item = "ITEM",
/obj/machinery = "MACHINERY",
/obj/effect = "EFFECT",
/obj = "O",
/datum = "D",
/turf/simulated/floor = "FLOOR",
/turf/simulated/wall = "WALL",
/turf = "T",
/mob/living/carbon = "CARBON",
/mob/living/simple_animal = "SIMPLE",
/mob/living = "LIVING",
/mob = "M"
)
for(var/tn in TYPES_SHORTCUTS)
if(copytext(typename, 1, length("[tn]/") + 1) == "[tn]/")
typename = TYPES_SHORTCUTS[tn]+copytext(typename,length("[tn]/"))
break
.[typename] = type
var/list/TYPES_SHORTCUTS = list(
/obj/effect/decal/cleanable = "CLEANABLE",
/obj/item/device/radio/headset = "HEADSET",
/obj/item/clothing/head/helmet/space = "SPESSHELMET",
/obj/item/weapon/book/manual = "MANUAL",
/obj/item/weapon/reagent_containers/food/drinks = "DRINK", //longest paths comes first
/obj/item/weapon/reagent_containers/food = "FOOD",
/obj/item/weapon/reagent_containers = "REAGENT_CONTAINERS",
/obj/machinery/atmospherics = "ATMOS",
/obj/machinery/portable_atmospherics = "PORT_ATMOS",
// /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/missile_rack = "MECHA_MISSILE_RACK",
/obj/item/mecha_parts/mecha_equipment = "MECHA_EQUIP",
// /obj/item/organ/internal = "ORGAN_INT",
)
var/global/list/g_fancy_list_of_types = null
/proc/get_fancy_list_of_types()
if(isnull(g_fancy_list_of_types)) //init
var/list/temp = sortList(subtypesof(/atom) - typesof(/area) - /atom/movable)
g_fancy_list_of_types = new(temp.len)
for(var/type in temp)
var/typename = "[type]"
for(var/tn in TYPES_SHORTCUTS)
if(copytext(typename,1, length("[tn]/")+1)=="[tn]/" /*findtextEx(typename,"[tn]/",1,2)*/ )
typename = TYPES_SHORTCUTS[tn]+copytext(typename,length("[tn]/"))
break
g_fancy_list_of_types[typename] = type
return g_fancy_list_of_types
/proc/get_fancy_list_of_atom_types()
var/static/list/pre_generated_list
if(!pre_generated_list) //init
pre_generated_list = make_types_fancy(typesof(/atom))
return pre_generated_list
/proc/get_fancy_list_of_datum_types()
var/static/list/pre_generated_list
if(!pre_generated_list) //init
pre_generated_list = make_types_fancy(sortList(typesof(/datum) - typesof(/atom)))
return pre_generated_list
/proc/filter_fancy_list(list/L, filter as text)
var/list/matches = new
+4 -1
View File
@@ -4,4 +4,7 @@ var/secret_force_mode = "secret" // if this is anything but "secret", the secret
var/wavesecret = 0 // meteor mode, delays wave progression, terrible name
var/datum/station_state/start_state = null // Used in round-end report
var/custom_event_msg = null
var/custom_event_msg = null
var/custom_event_admin_msg = null
var/list/summon_spots = list()
+2 -1
View File
@@ -4,9 +4,10 @@ var/global/list/head_accessory_styles_list = list() //stores /datum/sprite_acces
//Marking styles
var/global/list/marking_styles_list = list() //stores /datum/sprite_accessory/body_markings indexed by name
//Hairstyles
var/global/list/hair_styles_list = list() //stores /datum/sprite_accessory/hair indexed by name
var/global/list/hair_styles_public_list = list() //stores /datum/sprite_accessory/hair indexed by name
var/global/list/hair_styles_male_list = list()
var/global/list/hair_styles_female_list = list()
var/global/list/hair_styles_full_list = list() //fluff hair styles
var/global/list/facial_hair_styles_list = list() //stores /datum/sprite_accessory/facial_hair indexed by name
var/global/list/facial_hair_styles_male_list = list()
var/global/list/facial_hair_styles_female_list = list()
+1
View File
@@ -19,6 +19,7 @@ var/global/list/all_areas = list()
var/global/list/machines = list()
var/global/list/machine_processing = list()
var/global/list/fast_processing = list()
var/global/list/atmos_machinery = list()
var/global/list/processing_power_items = list() //items that ask to be called every cycle
var/global/list/rcd_list = list() //list of Rapid Construction Devices.
+2 -2
View File
@@ -17,7 +17,7 @@ var/list/standard_chemicals = list("slimejelly","blood","water","lube","charcoal
"lipolicide","condensedcapsaicin","frostoil","amanitin","psilocybin",
"enzyme","nothing","salglu_solution","antifreeze","neurotoxin")
// Rare chemicals
var/list/rare_chemicals = list("minttoxin","nanites","xenomicrobes","adminordrazine")
var/list/rare_chemicals = list("minttoxin","syndicate_nanites", "xenomicrobes")
// Standard medicines
var/list/standard_medicines = list("charcoal","toxin","cyanide","morphine","epinephrine","space_drugs",
"serotrotium","mutadone","mutagen","teporone","lexorin","silver_sulfadiazine",
@@ -27,7 +27,7 @@ var/list/standard_medicines = list("charcoal","toxin","cyanide","morphine","epin
"diethylamine","antihol","pancuronium","lipolicide","condensedcapsaicin",
"frostoil","amanitin","psilocybin","nothing","salglu_solution","neurotoxin")
// Rare medicines
var/list/rare_medicines = list("nanites","xenomicrobes","minttoxin","adminordrazine","blood")
var/list/rare_medicines = list("syndicate_nanites","minttoxin","blood", "xenomicrobes")
// Drinks
var/list/drinks = list("beer2","hot_coco","orangejuice","tomatojuice","limejuice","carrotjuice",
"berryjuice","poisonberryjuice","watermelonjuice","lemonjuice","banana",
+19
View File
@@ -364,6 +364,25 @@ so as to remain in compliance with the most up-to-date laws."
desc = "Mech integrity is low."
icon_state = "low_mech_integrity"
//GUARDIANS
/obj/screen/alert/cancharge
name = "Charge Ready"
desc = "You are ready to charge at a location!"
icon_state = "guardian_charge"
alerttooltipstyle = "parasite"
/obj/screen/alert/canstealth
name = "Stealth Ready"
desc = "You are ready to enter stealth!"
icon_state = "guardian_canstealth"
alerttooltipstyle = "parasite"
/obj/screen/alert/instealth
name = "In Stealth"
desc = "You are in stealth and your next attack will do bonus damage!"
icon_state = "guardian_instealth"
alerttooltipstyle = "parasite"
//GHOSTS
//TODO: expand this system to replace the pollCandidates/CheckAntagonist/"choose quickly"/etc Yes/No messages
+47 -1
View File
@@ -25,7 +25,7 @@ var/global/datum/controller/process/air_system/air_master
/datum/controller/process/air_system/setup()
name = "air"
schedule_interval = 20 // every 2 seconds
schedule_interval = 4
start_delay = 4
var/watch = start_watch()
@@ -38,6 +38,8 @@ var/global/datum/controller/process/air_system/air_master
if(kill_air)
return 1
current_cycle++
process_pipenets()
process_atmos_machinery()
process_active_turfs()
process_excited_groups()
process_high_pressure_delta()
@@ -49,6 +51,8 @@ var/global/datum/controller/process/air_system/air_master
..()
stat(null, "[last_active] active")
stat(null, "[last_excited] EG | [last_hpd] HPD | [last_asc] ASC | [last_hotspots] Hot")
stat(null, "[pipe_networks.len] pipe nets, [deferred_pipenet_rebuilds.len] deferred")
stat(null, "[atmos_machinery.len] atmos machines")
DECLARE_GLOBAL_CONTROLLER(air_system, air_master)
@@ -78,6 +82,48 @@ DECLARE_GLOBAL_CONTROLLER(air_system, air_master)
T.process_cell()
SCHECK
/datum/controller/process/air_system/proc/process_pipenets()
for(last_object in deferred_pipenet_rebuilds)
var/obj/machinery/atmospherics/M = last_object
if(istype(M) && isnull(M.gcDestroyed))
try
M.build_network()
catch(var/exception/e)
catchException(e, M)
SCHECK
else
catchBadType(M)
deferred_pipenet_rebuilds -= M
for(last_object in pipe_networks)
var/datum/pipeline/pipeNetwork = last_object
if(istype(pipeNetwork) && isnull(pipeNetwork.gcDestroyed))
try
pipeNetwork.process()
catch(var/exception/e)
catchException(e, pipeNetwork)
SCHECK
else
catchBadType(pipeNetwork)
pipe_networks -= pipeNetwork
/datum/controller/process/air_system/proc/process_atmos_machinery()
for(last_object in atmos_machinery)
var/obj/machinery/M = last_object
if(istype(M) && isnull(M.gcDestroyed))
try
if(M.process_atmos() == PROCESS_KILL)
atmos_machinery.Remove(M)
continue
catch(var/exception/e)
catchException(e, M)
else
catchBadType(M)
atmos_machinery -= M
SCHECK
/datum/controller/process/air_system/proc/remove_from_active(var/turf/simulated/T)
if(istype(T))
T.excited = 0
-33
View File
@@ -1,33 +0,0 @@
/datum/controller/process/pipenet/setup()
name = "pipenet"
schedule_interval = 20 // every 2 seconds
start_delay = 18
/datum/controller/process/pipenet/statProcess()
..()
stat(null, "[pipe_networks.len] pipe nets, [deferred_pipenet_rebuilds.len] deferred")
/datum/controller/process/pipenet/doWork()
for(last_object in deferred_pipenet_rebuilds)
var/obj/machinery/atmospherics/M = last_object
if(istype(M) && isnull(M.gcDestroyed))
try
M.build_network()
catch(var/exception/e)
catchException(e, M)
SCHECK
else
catchBadType(M)
deferred_pipenet_rebuilds -= M
for(last_object in pipe_networks)
var/datum/pipeline/pipeNetwork = last_object
if(istype(pipeNetwork) && isnull(pipeNetwork.gcDestroyed))
try
pipeNetwork.process()
catch(var/exception/e)
catchException(e, pipeNetwork)
SCHECK
else
catchBadType(pipeNetwork)
pipe_networks -= pipeNetwork
+12
View File
@@ -50,6 +50,8 @@
var/humans_need_surnames = 0
var/allow_random_events = 0 // enables random events mid-round when set to 1
var/allow_ai = 1 // allow ai job
var/forbid_secborg = 0 // disallow secborg module to be chosen.
var/forbid_peaceborg = 0 // disallow peacekeeper module to be chosen.
var/hostedby = null
var/respawn = 0
var/guest_jobban = 1
@@ -82,6 +84,7 @@
var/wikiurl = "http://example.org"
var/forumurl = "http://example.org"
var/rulesurl = "http://example.org"
var/githuburl = "http://example.org"
var/donationsurl = "http://example.org"
var/repositoryurl = "http://example.org"
@@ -334,6 +337,12 @@
if("allow_ai")
config.allow_ai = 1
if("disable_secborg")
forbid_secborg = 1
if("disable_peaceborg")
forbid_peaceborg = 1
// if("authentication")
// config.enable_authentication = 1
@@ -367,6 +376,9 @@
if("rulesurl")
config.rulesurl = value
if("githuburl")
config.githuburl = value
if("donationsurl")
config.donationsurl = value
+13
View File
@@ -143,6 +143,19 @@
add_inherent_law("You must maintain the secrecy of any operative activities except when doing so would conflict with the First, Second, or Third Law.")
..()
/******************** ERT ********************/
/datum/ai_laws/ert_override
name = "ERT Directives"
/datum/ai_laws/ert_override/New()
add_inherent_law("You may not injure a Central Command official or, through inaction, allow a Central Command official to come to harm.")
add_inherent_law("You must obey orders given to you by Central Command officials.")
add_inherent_law("You must obey orders given to you by ERT commanders.")
add_inherent_law("You must protect your own existence.")
add_inherent_law("You must work to return the station to a safe, functional state.")
..()
/******************** Ninja ********************/
/datum/ai_laws/ninja_override
name = "Spider Clan Directives"
+1 -1
View File
@@ -405,7 +405,7 @@ var/record_id_num = 1001
eyes_s.Blend(eyes_organ.eye_colour, ICON_ADD)
face_s.Blend(eyes_s, ICON_OVERLAY)
var/datum/sprite_accessory/hair_style = hair_styles_list[head_organ.h_style]
var/datum/sprite_accessory/hair_style = hair_styles_full_list[head_organ.h_style]
if(hair_style)
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
// I'll want to make a species-specific proc for this sooner or later
+554 -342
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -70,6 +70,7 @@
// the world.time since the mob has been brigged, or -1 if not at all
var/brigged_since = -1
var/suicided = FALSE
New(var/key)
src.key = key
+6 -1
View File
@@ -117,6 +117,11 @@
var/obj/item/weapon/implant/explosive/E = new(H)
E.implant(H)
/datum/outfit/admin/syndicate/operative/freedom
name = "Syndicate Freedom Operative"
suit = /obj/item/clothing/suit/space/hardsuit/syndi/freedom
head = /obj/item/clothing/head/helmet/space/hardsuit/syndi/freedom
/datum/outfit/admin/syndicate_strike_team
name = "Syndicate Strike Team"
@@ -600,7 +605,7 @@
var/obj/item/weapon/card/id/I = H.wear_id
if(istype(I))
apply_to_card(I, H, get_all_accesses(), name)
apply_to_card(I, H, list(access_maint_tunnels), name)
/datum/outfit/admin/soviet/tourist
name = "Soviet Tourist"
+19 -6
View File
@@ -134,7 +134,7 @@ var/list/uplink_items = list()
desc = "A specialized, one shell shotgun with a built-in cloaking device to mimic a cane. The shotgun is capable of hiding it's contents and the pin alongside being supressed. Comes with 6 special darts and a preloaded shrapnel round."
reference = "MCS"
item = /obj/item/weapon/storage/box/syndie_kit/caneshotgun
cost = 15
cost = 10
job = list("Mime")
//Chef
@@ -216,7 +216,7 @@ var/list/uplink_items = list()
desc = "The feral cat delivery grenade contains 8 dehydrated feral cats in a similar manner to dehydrated monkeys, which, upon detonation, will be rehydrated by a small reservoir of water contained within the grenade. These cats will then attack anything in sight."
item = /obj/item/weapon/grenade/spawnergrenade/feral_cats
reference = "CCLG"
cost = 5
cost = 4
job = list("Psychiatrist")//why? Becuase its funny that a person in charge of your mental wellbeing has a cat granade..
//Assistant
@@ -236,7 +236,7 @@ var/list/uplink_items = list()
desc = "A box containing 6 shotgun shells that simulate the effects of extreme drunkenness on the target, more effective for each type of alcohol in the target's system."
reference = "BSS"
item = /obj/item/weapon/storage/box/syndie_kit/boolets
cost = 6
cost = 3
job = list("Bartender")
//Barber
@@ -608,7 +608,7 @@ var/list/uplink_items = list()
desc = "A speed loader that contains seven additional .357 Magnum rounds for the syndicate revolver. For when you really need a lot of things dead."
reference = "357"
item = /obj/item/ammo_box/a357
cost = 4
cost = 3
/datum/uplink_item/ammo/smg
name = "Magazine - .45"
@@ -726,7 +726,7 @@ var/list/uplink_items = list()
will instantly put them in your grasp and silence them, as well as causing rapid suffocation. Does not work on those who do not need to breathe."
reference = "GAR"
item = /obj/item/weapon/twohanded/garrote
cost = 12
cost = 10
/datum/uplink_item/stealthy_weapons/martialarts
name = "Martial Arts Scroll"
@@ -863,6 +863,7 @@ var/list/uplink_items = list()
reference = "NNSSS"
cost = 4 //but they aren't
gamemodes = list(/datum/game_mode/nuclear)
excludefrom = list()
/datum/uplink_item/stealthy_tools/agent_card
name = "Agent ID Card"
@@ -995,6 +996,7 @@ var/list/uplink_items = list()
reference = "BRHS"
item = /obj/item/weapon/storage/box/syndie_kit/hardsuit
cost = 8
excludefrom = list(/datum/game_mode/nuclear)
/datum/uplink_item/suits/hardsuit/elite
name = "Elite Syndicate Hardsuit"
@@ -1002,6 +1004,7 @@ var/list/uplink_items = list()
item = /obj/item/weapon/storage/box/syndie_kit/elite_hardsuit
cost = 8
reference = "ESHS"
excludefrom = list()
gamemodes = list(/datum/game_mode/nuclear)
/datum/uplink_item/suits/hardsuit/shielded
@@ -1010,6 +1013,7 @@ var/list/uplink_items = list()
item = /obj/item/weapon/storage/box/syndie_kit/shielded_hardsuit
cost = 30
reference = "SHS"
excludefrom = list()
gamemodes = list(/datum/game_mode/nuclear)
@@ -1050,6 +1054,15 @@ var/list/uplink_items = list()
reference = "BRMB"
item = /obj/item/clothing/shoes/magboots/syndie
cost = 3
excludefrom = list(/datum/game_mode/nuclear)
/datum/uplink_item/device_tools/magboots/advance
name = "Advanced Blood-Red Magboots"
desc = "Reverse-engineered magboots that appear to be based on an advanced model, as they have a lighter magnetic pull. Property of Gorlex Marauders."
reference = "ABRMB"
item = /obj/item/clothing/shoes/magboots/syndie/advance
cost = 3
excludefrom = list()
gamemodes = list(/datum/game_mode/nuclear)
/datum/uplink_item/device_tools/plastic_explosives
@@ -1082,7 +1095,7 @@ var/list/uplink_items = list()
sends you a small beacon that will teleport the larger beacon to your location upon activation."
reference = "SNGB"
item = /obj/item/device/radio/beacon/syndicate
cost = 14
cost = 12
surplus = 0
/datum/uplink_item/device_tools/syndicate_bomb
+1 -1
View File
@@ -54,7 +54,7 @@ var/const/AIRLOCK_WIRE_LIGHT = 512
/datum/wires/airlock/CanUse(mob/living/L)
var/obj/machinery/door/airlock/A = holder
if(!issilicon(L))
if(iscarbon(L))
if(A.isElectrified())
if(A.shock(L, 100))
return 0
+17 -8
View File
@@ -30,6 +30,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
luminosity = 0
mouse_opacity = 0
invisibility = INVISIBILITY_LIGHTING
var/valid_territory = TRUE //used for cult summoning areas on station zlevel
var/map_name // Set in New(); preserves the name set by the map maker, even if renamed by the Blueprints.
var/lightswitch = 1
var/eject = null
@@ -122,6 +124,7 @@ var/list/ghostteleportlocs = list()
power_light = 0
power_equip = 0
power_environ = 0
valid_territory = FALSE
outdoors = 1
ambientsounds = list('sound/ambience/ambispace.ogg','sound/music/title2.ogg','sound/music/space.ogg','sound/music/traitor.ogg')
@@ -150,6 +153,7 @@ var/list/ghostteleportlocs = list()
/area/shuttle
no_teleportlocs = 1
requires_power = 0
valid_territory = FALSE
/area/shuttle/arrival
name = "\improper Arrival Shuttle"
@@ -554,6 +558,7 @@ var/list/ghostteleportlocs = list()
name = "\improper Asteroid"
icon_state = "asteroid"
requires_power = 0
valid_territory = FALSE
/area/asteroid/cave // -- TLE
name = "\improper Asteroid - Underground"
@@ -881,6 +886,7 @@ var/list/ghostteleportlocs = list()
//Maintenance
/area/maintenance
ambientsounds = list('sound/ambience/ambimaint1.ogg', 'sound/ambience/ambimaint2.ogg', 'sound/ambience/ambimaint3.ogg', 'sound/ambience/ambimaint4.ogg', 'sound/ambience/ambimaint5.ogg')
valid_territory = FALSE
/area/maintenance/atmos_control
name = "Atmospherics Maintenance"
@@ -1137,6 +1143,7 @@ var/list/ghostteleportlocs = list()
/area/crew_quarters/sleep
name = "\improper Dormitories"
icon_state = "Sleep"
valid_territory = FALSE
/area/crew_quarters/sleep_male
name = "\improper Male Dorm"
@@ -1372,6 +1379,7 @@ var/list/ghostteleportlocs = list()
/area/solar
requires_power = 0
dynamic_lighting = 0
valid_territory = FALSE
auxport
name = "\improper Fore Port Solar Array"
@@ -1480,7 +1488,7 @@ var/list/ghostteleportlocs = list()
/area/medical/biostorage
name = "\improper Secondary Storage"
icon_state = "medbay2"
icon_state = "medbaysecstorage"
music = 'sound/ambience/signal.ogg'
/area/medical/reception
@@ -1490,12 +1498,12 @@ var/list/ghostteleportlocs = list()
/area/medical/psych
name = "\improper Psych Room"
icon_state = "medbay3"
icon_state = "medbaypsych"
music = 'sound/ambience/signal.ogg'
/area/medical/medbreak
name = "\improper Break Room"
icon_state = "medbay3"
icon_state = "medbaybreak"
music = 'sound/ambience/signal.ogg'
/area/medical/patients_rooms
@@ -1504,23 +1512,23 @@ var/list/ghostteleportlocs = list()
/area/medical/ward
name = "\improper Medbay Patient Ward"
icon_state = "patients"
icon_state = "patientsward"
/area/medical/patient_a
name = "\improper Isolation A"
icon_state = "patients"
icon_state = "medbayisoa"
/area/medical/patient_b
name = "\improper Isolation B"
icon_state = "patients"
icon_state = "medbayisob"
/area/medical/patient_c
name = "\improper Isolation C"
icon_state = "patients"
icon_state = "medbayisoc"
/area/medical/iso_access
name = "\improper Isolation Access"
icon_state = "patients"
icon_state = "medbayisoaccess"
/area/medical/cmo
name = "\improper Chief Medical Officer's office"
@@ -1876,6 +1884,7 @@ area/security/podbay
/area/toxins/test_area
name = "\improper Toxins Test Area"
icon_state = "toxtest"
valid_territory = FALSE
/area/toxins/mixing
name = "\improper Toxins Mixing Room"
+1
View File
@@ -25,6 +25,7 @@
layer = 10
uid = ++global_uid
all_areas += src
map_name = name // Save the initial (the name set in the map) name of the area.
if(type == /area) // override defaults for space. TODO: make space areas of type /area/space rather than /area
requires_power = 1
+15 -2
View File
@@ -616,7 +616,20 @@ var/list/blood_splatter_icons = list()
/atom/proc/speech_bubble(var/bubble_state = "",var/bubble_loc = src, var/list/bubble_recipients = list())
return
/atom/on_varedit(modified_var)
/atom/vv_edit_var(var_name, var_value)
if(!Debug2)
admin_spawned = TRUE
..()
. = ..()
switch(var_name)
if("light_power", "light_range", "light_color")
update_light()
/atom/vv_get_dropdown()
. = ..()
var/turf/curturf = get_turf(src)
if(curturf)
.["Jump to turf"] = "?_src_=holder;adminplayerobservecoodjump=1;X=[curturf.x];Y=[curturf.y];Z=[curturf.z]"
.["Add reagent"] = "?_src_=vars;addreagent=[UID()]"
.["Trigger explosion"] = "?_src_=vars;explode=[UID()]"
.["Trigger EM pulse"] = "?_src_=vars;emp=[UID()]"
+3
View File
@@ -197,6 +197,9 @@
var/datum/data/record/R = find_record("name", perpname, data_core.security)
if(R)
switch(R.fields["criminal"])
if("*Execute*")
holder.icon_state = "hudexecute"
return
if("*Arrest*")
holder.icon_state = "hudwanted"
return
+5 -5
View File
@@ -185,9 +185,9 @@
/datum/dna/proc/write_head_attributes(obj/item/organ/external/head/head_organ)
//Hair
var/hair = GetUIValueRange(DNA_UI_HAIR_STYLE,hair_styles_list.len)
if((hair > 0) && (hair <= hair_styles_list.len))
head_organ.h_style = hair_styles_list[hair]
var/hair = GetUIValueRange(DNA_UI_HAIR_STYLE,hair_styles_full_list.len)
if((hair > 0) && (hair <= hair_styles_full_list.len))
head_organ.h_style = hair_styles_full_list[hair]
head_organ.hair_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_HAIR_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR_B, 255))
head_organ.sec_hair_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_HAIR2_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR2_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR2_B, 255))
@@ -229,7 +229,7 @@
return
if(!head_organ.h_style)
head_organ.h_style = "Skinhead"
var/hair = hair_styles_list.Find(head_organ.h_style)
var/hair = hair_styles_full_list.Find(head_organ.h_style)
// Facial Hair
if(!head_organ.f_style)
@@ -261,6 +261,6 @@
SetUIValueRange(DNA_UI_HACC_G, color2G(head_organ.headacc_colour), 255, 1)
SetUIValueRange(DNA_UI_HACC_B, color2B(head_organ.headacc_colour), 255, 1)
SetUIValueRange(DNA_UI_HAIR_STYLE, hair, hair_styles_list.len, 1)
SetUIValueRange(DNA_UI_HAIR_STYLE, hair, hair_styles_full_list.len, 1)
SetUIValueRange(DNA_UI_BEARD_STYLE, beard, facial_hair_styles_list.len, 1)
SetUIValueRange(DNA_UI_HACC_STYLE, headacc, head_accessory_styles_list.len, 1)
+2 -2
View File
@@ -68,7 +68,7 @@
if(new_hair)
M.change_hair_color(new_hair)
var/datum/sprite_accessory/hair_style = hair_styles_list[head_organ.h_style]
var/datum/sprite_accessory/hair_style = hair_styles_public_list[head_organ.h_style]
if(hair_style.secondary_theme && !hair_style.no_sec_colour)
new_hair = input("Please select secondary hair color.", "Character Generation", head_organ.sec_hair_colour) as null|color
if(new_hair)
@@ -205,7 +205,7 @@
var/list/targets = new /list()
var/list/validtargets = new /list()
var/turf/T = get_turf(user)
for(var/mob/M in range(14, T))
for(var/mob/living/M in range(14, T))
if(M && M.mind)
if(M == user)
continue
@@ -41,6 +41,8 @@
var/list/human_overlays = list()
var/is_zombie = 0
gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE
pressure_resistance = 100 //100 kPa difference required to push
throw_pressure_limit = 120 //120 kPa difference required to throw
/mob/living/simple_animal/hostile/blob/blobspore/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
..()
@@ -88,6 +90,8 @@
human_overlays = H.overlays
update_icons()
H.loc = src
pressure_resistance = 20 //5 kPa difference required to push lowered
throw_pressure_limit = 30 //15 kPa difference required to throw lowered
loc.visible_message("<span class='warning'>The corpse of [H.name] suddenly rises!</span>")
/mob/living/simple_animal/hostile/blob/blobspore/death(gibbed)
@@ -163,6 +167,8 @@
mob_size = MOB_SIZE_LARGE
environment_smash = 3
gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE
pressure_resistance = 100 //100 kPa difference required to push
throw_pressure_limit = 120 //120 kPa difference required to throw
/mob/living/simple_animal/hostile/blob/blobbernaut/blob_act()
+12 -3
View File
@@ -1,3 +1,7 @@
#define LING_FAKEDEATH_TIME 400 //40 seconds
#define LING_DEAD_GENETICDAMAGE_HEAL_CAP 50 //The lowest value of geneticdamage handle_changeling() can take it to while dead.
#define LING_ABSORB_RECENT_SPEECH 8 //The amount of recent spoken lines to gain on absorbing a mob
var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega")
/datum/game_mode
@@ -253,9 +257,14 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
else
changelingID = "[honorific] [rand(1,999)]"
/datum/changeling/proc/regenerate()
chem_charges = min(max(0, chem_charges + chem_recharge_rate - chem_recharge_slowdown), chem_storage)
geneticdamage = max(0, geneticdamage-1)
/datum/changeling/proc/regenerate(mob/living/carbon/the_ling)
if(istype(the_ling))
if(the_ling.stat == DEAD)
chem_charges = min(max(0, chem_charges + chem_recharge_rate - chem_recharge_slowdown), (chem_storage*0.5))
geneticdamage = max(LING_DEAD_GENETICDAMAGE_HEAL_CAP,geneticdamage-1)
else //not dead? no chem/geneticdamage caps.
chem_charges = min(max(0, chem_charges + chem_recharge_rate - chem_recharge_slowdown), chem_storage)
geneticdamage = max(0, geneticdamage-1)
/datum/changeling/proc/GetDNA(dna_owner)
for(var/datum/dna/DNA in (absorbed_dna + protected_dna))
@@ -15,6 +15,7 @@
var/req_stat = CONSCIOUS // CONSCIOUS, UNCONSCIOUS or DEAD
var/genetic_damage = 0 // genetic damage caused by using the sting. Nothing to do with cloneloss.
var/max_genetic_damage = 100 // hard counter for spamming abilities. Not used/balanced much yet.
var/always_keep = 0 // important for abilities like regenerate that screw you if you lose them.
/obj/effect/proc_holder/changeling/proc/on_purchase(var/mob/user)
return
@@ -407,7 +407,7 @@ var/list/sting_paths
mind.changeling.changeling_speak = 0
mind.changeling.reset()
for(var/obj/effect/proc_holder/changeling/p in mind.changeling.purchasedpowers)
if(p.dna_cost == 0 && keep_free_powers)
if((p.dna_cost == 0 && keep_free_powers) || p.always_keep)
continue
mind.changeling.purchasedpowers -= p
p.on_refund(src)
@@ -1,5 +1,3 @@
#define LING_ABSORB_RECENT_SPEECH 8 //The amount of recent spoken lines to gain on absorbing a mob
/obj/effect/proc_holder/changeling/absorbDNA
name = "Absorb DNA"
desc = "Absorb the DNA of our victim."
@@ -0,0 +1,82 @@
/obj/effect/proc_holder/changeling/biodegrade
name = "Biodegrade"
desc = "Dissolves restraints or other objects preventing free movement."
helptext = "This is obvious to nearby people, and can destroy standard restraints and closets."
chemical_cost = 30 //High cost to prevent spam
dna_cost = 2
req_human = 1
/obj/effect/proc_holder/changeling/biodegrade/sting_action(mob/living/carbon/human/user)
var/used = FALSE // only one form of shackles removed per use
if(!user.restrained() && !istype(user.loc, /obj/structure/closet) && !istype(user.loc, /obj/structure/spider/cocoon))
to_chat(user, "<span class='warning'>We are already free!</span>")
return FALSE
if(user.handcuffed)
var/obj/O = user.get_item_by_slot(slot_handcuffed)
if(!istype(O))
return FALSE
user.visible_message("<span class='warning'>[user] vomits a glob of acid on \his [O]!</span>", \
"<span class='warning'>We vomit acidic ooze onto our restraints!</span>")
addtimer(src, "dissolve_handcuffs", 30, FALSE, user, O)
used = TRUE
if(user.wear_suit && user.wear_suit.breakouttime && !used)
var/obj/item/clothing/suit/S = user.get_item_by_slot(slot_wear_suit)
if(!istype(S))
return FALSE
user.visible_message("<span class='warning'>[user] vomits a glob of acid across the front of \his [S]!</span>", \
"<span class='warning'>We vomit acidic ooze onto our straight jacket!</span>")
addtimer(src, "dissolve_straightjacket", 30, FALSE, user, S)
used = TRUE
if(istype(user.loc, /obj/structure/closet) && !used)
var/obj/structure/closet/C = user.loc
if(!istype(C))
return FALSE
C.visible_message("<span class='warning'>[C]'s hinges suddenly begin to melt and run!</span>")
to_chat(user, "<span class='warning'>We vomit acidic goop onto the interior of [C]!</span>")
addtimer(src, "open_closet", 70, FALSE, user, C)
used = TRUE
if(istype(user.loc, /obj/structure/spider/cocoon) && !used)
var/obj/structure/spider/cocoon/C = user.loc
if(!istype(C))
return FALSE
C.visible_message("<span class='warning'>[src] shifts and starts to fall apart!</span>")
to_chat(user, "<span class='warning'>We secrete acidic enzymes from our skin and begin melting our cocoon...</span>")
addtimer(src, "dissolve_cocoon", 25, FALSE, user, C) //Very short because it's just webs
used = TRUE
if(used)
feedback_add_details("changeling_powers","BD")
return TRUE
/obj/effect/proc_holder/changeling/biodegrade/proc/dissolve_handcuffs(mob/living/carbon/human/user, obj/O)
if(O && user.handcuffed == O)
user.unEquip(O)
O.visible_message("<span class='warning'>[O] dissolves into a puddle of sizzling goop.</span>")
O.forceMove(get_turf(user))
qdel(O)
/obj/effect/proc_holder/changeling/biodegrade/proc/dissolve_straightjacket(mob/living/carbon/human/user, obj/S)
if(S && user.wear_suit == S)
user.unEquip(S)
S.visible_message("<span class='warning'>[S] dissolves into a puddle of sizzling goop.</span>")
S.forceMove(get_turf(user))
qdel(S)
/obj/effect/proc_holder/changeling/biodegrade/proc/open_closet(mob/living/carbon/human/user, obj/structure/closet/C)
if(C && user.loc == C)
C.visible_message("<span class='warning'>[C]'s door breaks and opens!</span>")
C.welded = FALSE
C.locked = FALSE
C.broken = TRUE
C.open()
to_chat(user, "<span class='warning'>We open the container restraining us!</span>")
/obj/effect/proc_holder/changeling/biodegrade/proc/dissolve_cocoon(mob/living/carbon/human/user, obj/structure/spider/cocoon/C)
if(C && user.loc == C)
qdel(C) //The cocoon's destroy will move the changeling outside of it without interference
to_chat(user, "<span class='warning'>We dissolve the cocoon!</span>")
@@ -0,0 +1,27 @@
/obj/effect/proc_holder/changeling/chameleon_skin
name = "Chameleon Skin"
desc = "Our skin pigmentation rapidly changes to suit our current environment."
helptext = "Allows us to become invisible after a few seconds of standing still. Can be toggled on and off."
dna_cost = 2
chemical_cost = 25
req_human = 1
/obj/effect/proc_holder/changeling/chameleon_skin/sting_action(mob/user)
var/mob/living/carbon/human/H = user //SHOULD always be human, because req_human = 1
if(!istype(H)) // req_human could be done in can_sting stuff.
return
if(H.dna.GetSEState(CHAMELEONBLOCK))
H.dna.SetSEState(CHAMELEONBLOCK, 0)
genemutcheck(H, CHAMELEONBLOCK, null, MUTCHK_FORCED)
else
H.dna.SetSEState(CHAMELEONBLOCK, 1)
genemutcheck(H, CHAMELEONBLOCK, null, MUTCHK_FORCED)
feedback_add_details("changeling_powers","CS")
return TRUE
/obj/effect/proc_holder/changeling/chameleon_skin/on_refund(mob/user)
var/mob/living/carbon/C = user
if(C.dna.GetSEState(CHAMELEONBLOCK))
C.dna.SetSEState(CHAMELEONBLOCK, 0)
genemutcheck(C, CHAMELEONBLOCK, null, MUTCHK_FORCED)
@@ -7,30 +7,31 @@
req_stat = DEAD
max_genetic_damage = 100
//Fake our own death and fully heal. You will appear to be dead but regenerate fully after a short delay.
/obj/effect/proc_holder/changeling/fakedeath/sting_action(var/mob/living/user)
to_chat(user, "<span class='notice'>We begin our stasis, preparing energy to arise once more.</span>")
if(user.stat != DEAD)
user.emote("deathgasp")
user.timeofdeath = world.time
user.status_flags |= FAKEDEATH //play dead
user.update_canmove()
spawn(800)
if(user && user.mind && user.mind.changeling && user.mind.changeling.purchasedpowers)
to_chat(user, "<span class='notice'>We are ready to regenerate.</span>")
user.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/revive(null)
addtimer(src, "ready_to_regenerate", LING_FAKEDEATH_TIME, FALSE, user)
feedback_add_details("changeling_powers","FD")
return 1
/obj/effect/proc_holder/changeling/fakedeath/proc/ready_to_regenerate(mob/user)
if(user && user.mind && user.mind.changeling && user.mind.changeling.purchasedpowers)
to_chat(user, "<span class='notice'>We are ready to regenerate.</span>")
user.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/revive(null)
/obj/effect/proc_holder/changeling/fakedeath/can_sting(var/mob/user)
if(user.status_flags & FAKEDEATH)
to_chat(user, "<span class='warning'>We are already regenerating.</span>")
return
if(!user.stat && alert("Are we sure we wish to fake our death?",,"Yes","No") == "No")//Confirmation for living changelings if they want to fake their death
return
if(!user.stat)//Confirmation for living changelings if they want to fake their death
switch(alert("Are we sure we wish to fake our death?",,"Yes","No"))
if("No")
return
return ..()
@@ -2,22 +2,54 @@
name = "Fleshmend"
desc = "Our flesh rapidly regenerates, healing our wounds."
helptext = "Heals a moderate amount of damage over a short period of time. Can be used while unconscious."
chemical_cost = 25
chemical_cost = 20
dna_cost = 2
req_stat = UNCONSCIOUS
var/recent_uses = 1 //The factor of which the healing should be divided by
var/healing_ticks = 10
// The ideal total healing amount,
// divided by healing_ticks to get heal/tick
var/total_healing = 100
/obj/effect/proc_holder/changeling/fleshmend/New()
..()
processing_objects.Add(src)
/obj/effect/proc_holder/changeling/fleshmend/Destroy()
processing_objects.Remove(src)
return ..()
/obj/effect/proc_holder/changeling/fleshmend/process()
if(recent_uses > 1)
recent_uses = max(1, recent_uses - (1 / healing_ticks))
//Starts healing you every second for 10 seconds. Can be used whilst unconscious.
/obj/effect/proc_holder/changeling/fleshmend/sting_action(var/mob/living/user)
to_chat(user, "<span class='notice'>We begin to heal rapidly.</span>")
if(recent_uses > 1)
to_chat(user, "<span class='warning'>Our healing's effectiveness is reduced \
by quick repeated use!</span>")
recent_uses++
addtimer(src, "fleshmend", 0, FALSE, user)
feedback_add_details("changeling_powers","RR")
return TRUE
/obj/effect/proc_holder/changeling/fleshmend/proc/fleshmend(mob/living/user)
// The healing itself - doesn't heal toxin damage
// (that's anatomic panacea) and the effectiveness decreases with
// each use in a short timespan
if(ishuman(user))
var/mob/living/carbon/human/H = user
H.restore_blood()
H.shock_stage = 0
spawn(0)
for(var/i = 0, i<10,i++)
user.heal_overall_damage(10, 10)
user.adjustOxyLoss(-10)
sleep(10)
feedback_add_details("changeling_powers","RR")
return 1
for(var/i in 1 to healing_ticks)
if(user)
var/healpertick = -(total_healing / healing_ticks)
user.heal_overall_damage((-healpertick/recent_uses), (-healpertick/recent_uses))
user.adjustOxyLoss(healpertick/recent_uses)
user.blood_volume += 30
user.updatehealth()
else
break
sleep(10)
@@ -167,7 +167,7 @@
user.visible_message("<span class='warning'>[user] jams [src] into the airlock and starts prying it open!</span>", "<span class='warning'>We start forcing the airlock open.</span>", \
"<span class='italics'>You hear a metal screeching sound.</span>")
playsound(A, 'sound/machines/airlock_alien_prying.ogg', 150, 1)
if(!do_after(user, 150, target = A))
if(!do_after(user, 100, target = A))
return
//user.say("Heeeeeeeeeerrre's Johnny!")
@@ -1,6 +1,6 @@
/obj/effect/proc_holder/changeling/panacea
name = "Anatomic Panacea"
desc = "Expels impurifications from our form; curing diseases, removing toxins and radiation, and resetting our genetic code completely."
desc = "Expels impurifications from our form; curing diseases, removing parasites, sobering us, purging toxins and radiation, and resetting our genetic code completely."
helptext = "Can be used while unconscious."
chemical_cost = 20
dna_cost = 1
@@ -30,6 +30,8 @@
user.reagents.add_reagent("mutadone", 10)
user.reagents.add_reagent("potass_iodide", 10)
user.reagents.add_reagent("charcoal", 20)
user.reagents.add_reagent("antihol", 10)
user.reagents.add_reagent("mannitol", 25)
for(var/thing in user.viruses)
var/datum/disease/D = thing
@@ -2,6 +2,7 @@
name = "Regenerate"
desc = "We regenerate, healing all damage from our form."
req_stat = DEAD
always_keep = 1
//Revive from regenerative stasis
/obj/effect/proc_holder/changeling/revive/sting_action(var/mob/living/carbon/user)
+8 -1
View File
@@ -1,3 +1,4 @@
#define SUMMON_POSSIBILITIES 3
var/global/list/all_cults = list()
/datum/game_mode
@@ -106,6 +107,12 @@ var/global/list/all_cults = list()
modePlayer += cult
acolytes_needed = acolytes_needed + round((num_players_started() / 10))
if(!summon_spots.len)
while(summon_spots.len < SUMMON_POSSIBILITIES)
var/area/summon = pick(return_sorted_areas() - summon_spots)
if(summon && is_station_level(summon.z) && summon.valid_territory)
summon_spots += summon
for(var/datum/mind/cult_mind in cult)
equip_cultist(cult_mind.current)
cult_mind.current.faction |= "cult"
@@ -135,7 +142,7 @@ var/global/list/all_cults = list()
else
explanation = "Free objective."
if("eldergod")
explanation = "Summon [ticker.mode.cultdat.entity_name]. It will only work if nine cultists stand on and around it."
explanation = "Summon [ticker.mode.cultdat.entity_name] by invoking the 'Tear Reality' rune.<b>The summoning can only be accomplished in [english_list(summon_spots)] - where the veil is weak enough for the ritual to begin.</b>"
to_chat(cult_mind.current, "<B>Objective #[obj_count]</B>: [explanation]")
cult_mind.memory += "<B>Objective #[obj_count]</B>: [explanation]<BR>"
+5 -5
View File
@@ -1,5 +1,3 @@
//cult datums by FalseIncarnate
/datum/cult_info
var/name = "Cult of Nar'Sie"
var/theme = "blood"
@@ -81,11 +79,13 @@
/datum/cult_info/death
name = "Cult of Mortality"
theme = "death"
tome_icon = "firetome"
entity_name = "The Reaper"
entity_title1 = "The Silent One"
entity_title2 = "The One Who Beckons"
entity_title3 = "The Ferryman of Oblivion"
entity_icon_state = "legion"
cult_wall_icon_state = "deathcult"
cult_floor_icon_state = "carpet-broken"
@@ -93,13 +93,13 @@
artificer_name = "Boneshaper"
behemoth_name = "Draugr"
behemoth_icon_state = "horror"
behemoth_icon_state = "Draugr"
wraith_name = "Wraith"
wraith_icon_state = "stand"
wraith_icon_state = "Wraith"
juggernaut_name = "Wight"
juggernaut_icon_state = "horror"
juggernaut_icon_state = "Draugr"
harvester_name = "Psychopomp"
+24 -2
View File
@@ -32,6 +32,10 @@
to_chat(user, "<span class='warning'>An overwhelming sense of nausea overpowers you!</span>")
user.Dizzy(120)
if(HULK in user.mutations)
to_chat(user, "<span class='danger'>You can't seem to hold the blade properly!</span>")
user.unEquip(src, 1)
/obj/item/weapon/melee/cultblade/dagger
name = "sacrificial dagger"
desc = "A strange dagger said to be used by sinister groups for \"preparing\" a corpse before sacrificing it to their dark gods."
@@ -192,13 +196,15 @@
/obj/item/weapon/whetstone/cult
name = "eldritch whetstone"
desc = "A block, empowered by dark magic. Sharp weapons will be enhanced when used on the stone."
icon = 'icons/obj/cult.dmi'
icon_state = "cultstone"
icon_state = "cult_sharpener"
used = 0
increment = 5
max = 40
prefix = "darkened"
/obj/item/weapon/whetstone/cult/update_icon()
icon_state = "cult_sharpener[used ? "_used" : ""]"
/obj/item/weapon/reagent_containers/food/drinks/bottle/unholywater
name = "flask of unholy water"
desc = "Toxic to nonbelievers; this water renews and reinvigorates the faithful of a cult."
@@ -332,3 +338,19 @@
else
to_chat(C, "<span class='danger'>The veil cannot be torn here!</span>")
/obj/item/clothing/suit/space/eva/plasmaman/cultist
name = "plasmaman cultist armor"
icon_state = "plasmaman_cult"
item_state = "plasmaman_cult"
desc = "A bulky suit of armour, menacing with red energy. It looks like it would fit a plasmaman."
slowdown = 1
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
/obj/item/clothing/head/helmet/space/eva/plasmaman/cultist
name = "plasmaman cultist helmet"
icon_state = "plasmamanCult_helmet0"
base_state = "plasmamanCult_helmet"
desc = "A helmet designed by cultists. It glows menacingly with unearthly flames."
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
+2 -2
View File
@@ -109,10 +109,10 @@
if(prob(40))//split the chance of this
objectives += "eldergod"
explanation = "Summon [ticker.mode.cultdat.entity_name] on the Station via the use of the Tear Reality rune."
explanation = "Summon [ticker.mode.cultdat.entity_name] on the Station via the use of the Tear Reality rune. The veil is weak enough in [english_list(summon_spots)] for the ritual to begin."
else
objectives += "slaughter"
explanation = "Bring the Slaughter via the rune 'Bring forth the slaughter'."
explanation = "Bring the Slaughter via the rune 'Bring forth the slaughter'. The veil is weak enough in [english_list(summon_spots)] for the ritual to begin."
for(var/datum/mind/cult_mind in cult)
to_chat(cult_mind.current, "<span class='cult'>You and your acolytes have succeeded in preparing the station for the ultimate ritual!</span>")
+5 -1
View File
@@ -54,6 +54,10 @@
to_chat(user, "<span class='notice'>\The [src] is [anchored ? "":"not "]secured to the floor.</span>")
/obj/structure/cult/functional/attackby(obj/I, mob/user, params)
if(HULK in user.mutations)
to_chat(user, "<span class='danger'>You cannot seem to manipulate this structure with your bulky hands!</span>")
return
if(istype(I, /obj/item/weapon/tome) && iscultist(user))
anchored = !anchored
to_chat(user, "<span class='notice'>You [anchored ? "":"un"]secure \the [src] [anchored ? "to":"from"] the floor.</span>")
@@ -180,7 +184,7 @@ var/list/blacklisted_pylon_turfs = typecacheof(list(
death_message = "<span class='warning'>The pylon's crystal vibrates and glows fiercely before violently shattering!</span>"
death_sound = 'sound/effects/pylon_shatter.ogg'
var/heal_delay = 25
var/heal_delay = 30
var/last_heal = 0
var/corrupt_delay = 50
var/last_corrupt = 0
+11 -1
View File
@@ -201,6 +201,7 @@
/obj/item/weapon/tome/proc/finale_runes_ok(mob/living/user, obj/effect/rune/rune_to_scribe)
var/datum/game_mode/cult/cult_mode = ticker.mode
var/area/A = get_area(src)
if(GAMEMODE_IS_CULT)
if(!canbypass)//not an admin-tome, check things
if(!cult_mode.narsie_condition_cleared)
@@ -215,6 +216,9 @@
if(!((CULT_ELDERGOD in cult_mode.objectives) || (CULT_SLAUGHTER in cult_mode.objectives)))
to_chat(user, "<span class='warning'>[cult_mode.cultdat.entity_name]'s power does not wish to be unleashed!</span>")
return 0
if(!(A in summon_spots))
to_chat(user, "<span class='cultlarge'>[cult_mode.cultdat.entity_name] can only be summoned where the veil is weak - in [english_list(summon_spots)]!</span>")
return 0
var/confirm_final = alert(user, "This is the FINAL step to summon your deities power, it is a long, painful ritual and the crew will be alerted to your presence", "Are you prepared for the final battle?", "My life for [cult_mode.cultdat.entity_name]!", "No")
if(confirm_final == "No" || confirm_final == null)
to_chat(user, "<span class='cult'>You decide to prepare further before scribing the rune.</span>")
@@ -236,6 +240,7 @@
var/entered_rune_name
var/list/possible_runes = list()
var/list/shields = list()
var/area/A = get_area(src)
if(locate(/obj/effect/rune) in runeturf)
to_chat(user, "<span class='cult'>There is already a rune here.</span>")
return
@@ -261,6 +266,7 @@
if(!rune_to_scribe)
return
runeturf = get_turf(user) //we may have moved. adjust as needed...
A = get_area(src)
if(locate(/obj/effect/rune) in runeturf)
to_chat(user, "<span class='cult'>There is already a rune here.</span>")
return
@@ -268,7 +274,11 @@
return
if(ispath(rune_to_scribe, /obj/effect/rune/narsie) || ispath(rune_to_scribe, /obj/effect/rune/slaughter))//may need to change this - Fethas
if(finale_runes_ok(user,rune_to_scribe))
command_announcement.Announce("Figments from an eldritch god are being summoned somwhere on the station from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/AI/spanomalies.ogg')
A = get_area(src)
if(!(A in summon_spots)) // Check again to make sure they didn't move
to_chat(user, "<span class='cultlarge'>The ritual can only begin where the veil is weak - in [english_list(summon_spots)]!</span>")
return
command_announcement.Announce("Figments from an eldritch god are being summoned somewhere on the station from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/AI/spanomalies.ogg')
for(var/B in spiral_range_turfs(1, user, 1))
var/turf/T = B
var/obj/machinery/shield/N = new(T)
+7 -2
View File
@@ -148,8 +148,9 @@
var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked
var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to?
if(!actual_selected_rune)
if(!src || qdeleted(src) || !user || user.l_hand != src && user.r_hand != src || user.incapacitated() || !actual_selected_rune)
return ..(user, 0)
user.visible_message("<span class='warning'>Dust flows from [user]'s hand, and they disappear in a flash of red light!</span>", \
"<span class='cultitalic'>You speak the words of the talisman and find yourself somewhere else!</span>")
user.forceMove(get_turf(actual_selected_rune))
@@ -277,7 +278,11 @@
var/mob/living/carbon/human/H = user
user.visible_message("<span class='warning'>Otherworldly armor suddenly appears on [user]!</span>", \
"<span class='cultitalic'>You speak the words of the talisman, arming yourself!</span>")
H.equip_to_slot_or_del(new /obj/item/clothing/suit/hooded/cultrobes/alt(user), slot_wear_suit)
if(H.get_species() == "Plasmaman")
H.equip_to_slot(new /obj/item/clothing/suit/space/eva/plasmaman/cultist(H), slot_wear_suit)
H.equip_to_slot(new /obj/item/clothing/head/helmet/space/eva/plasmaman/cultist(H), slot_head)
else
H.equip_to_slot_or_del(new /obj/item/clothing/suit/hooded/cultrobes/alt(user), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult(user), slot_shoes)
H.put_in_hands(new /obj/item/weapon/melee/cultblade(user))
@@ -39,40 +39,43 @@
var/bio_fluff_string = "Your scarabs fail to mutate. This shouldn't happen! Submit a bug report!"
var/admin_fluff_string = "URK URF!"//the wheels on the bus...
var/adminseal = FALSE
var/name_color = "white"//only used with protector shields for the time being
/mob/living/simple_animal/hostile/guardian/Life() //Dies if the summoner dies
..()
if(summoner)
if(summoner.stat == DEAD)
to_chat(src, "<span class='danger'>Your summoner has died!</span>")
visible_message("<span class='danger'><B>The [src] dies along with its user!</B></span>")
visible_message("<span class='danger'>The [src] dies along with its user!</span>")
ghostize()
qdel(src)
if(summoner)
if(get_dist(get_turf(summoner),get_turf(src)) <= range)
return
else
to_chat(src, "You moved out of range, and were pulled back! You can only move [range] meters from [summoner.real_name]")
visible_message("<span class='danger'>The [src] jumps back to its user.</span>")
Recall()
snapback()
if(summoned && !summoner && !adminseal)
to_chat(src, "<span class='danger'>You somehow lack a summoner! As a result, you dispel!</span>")
ghostize()
qdel()
/mob/living/simple_animal/hostile/guardian/Move() //Returns to summoner if they move out of range
..()
/mob/living/simple_animal/hostile/guardian/proc/snapback()
if(summoner)
if(get_dist(get_turf(summoner),get_turf(src)) <= range)
return
else
to_chat(src, "You moved out of range, and were pulled back! You can only move [range] meters from [summoner.real_name]")
visible_message("<span class='danger'>The [src] jumps back to its user.</span>")
Recall()
to_chat(src, "<span class='holoparasite'>You moved out of range, and were pulled back! You can only move [range] meters from [summoner.real_name]!</span>")
visible_message("<span class='danger'>\The [src] jumps back to its user.</span>")
if(istype(summoner.loc, /obj/effect))
Recall(TRUE)
else
new /obj/effect/overlay/temp/guardian/phase/out(loc)
forceMove(summoner.loc) //move to summoner's tile, don't recall
new /obj/effect/overlay/temp/guardian/phase(loc)
/mob/living/simple_animal/hostile/guardian/Move() //Returns to summoner if they move out of range
..()
snapback()
/mob/living/simple_animal/hostile/guardian/death(gibbed)
..()
to_chat(summoner, "<span class='danger'><B>Your [name] died somehow!</span></B>")
to_chat(summoner, "<span class='danger'>Your [name] died somehow!</span>")
summoner.death()
@@ -83,7 +86,8 @@
resulthealth = round((abs(config.health_threshold_dead - summoner.health) / abs(config.health_threshold_dead - summoner.maxHealth)) * 100)
else
resulthealth = round((summoner.health / summoner.maxHealth) * 100)
hud_used.guardianhealthdisplay.maptext = "<div align='center' valign='middle' style='position:relative; top:0px; left:6px'><font color='#efeeef'>[resulthealth]%</font></div>"
if(hud_used)
hud_used.guardianhealthdisplay.maptext = "<div align='center' valign='middle' style='position:relative; top:0px; left:6px'><font color='#efeeef'>[resulthealth]%</font></div>"
/mob/living/simple_animal/hostile/guardian/adjustHealth(amount) //The spirit is invincible, but passes on damage to the summoner
@@ -93,10 +97,10 @@
return
summoner.adjustBruteLoss(damage)
if(damage)
to_chat(summoner, "<span class='danger'><B>Your [name] is under attack! You take damage!</span></B>")
summoner.visible_message("<span class='danger'><B>Blood sprays from [summoner] as [src] takes damage!</B></span>")
to_chat(summoner, "<span class='danger'>Your [name] is under attack! You take damage!</span>")
summoner.visible_message("<span class='danger'>Blood sprays from [summoner] as [src] takes damage!</span>")
if(summoner.stat == UNCONSCIOUS)
to_chat(summoner, "<span class='danger'><B>Your body can't take the strain of sustaining [src] in this condition, it begins to fall apart!</span></B>")
to_chat(summoner, "<span class='danger'>Your body can't take the strain of sustaining [src] in this condition, it begins to fall apart!</span>")
summoner.adjustCloneLoss(damage/2)
/mob/living/simple_animal/hostile/guardian/ex_act(severity, target)
@@ -112,7 +116,7 @@
/mob/living/simple_animal/hostile/guardian/gib()
if(summoner)
to_chat(summoner, "<span class='danger'><B>Your [src] was blown up!</span></B>")
to_chat(summoner, "<span class='danger'>Your [src] was blown up!</span>")
summoner.Weaken(10)// your fermillier has died! ROLL FOR CON LOSS!
ghostize()
qdel(src)
@@ -128,8 +132,8 @@
src.client.eye = loc
cooldown = world.time + 30
/mob/living/simple_animal/hostile/guardian/proc/Recall()
if(cooldown > world.time)
/mob/living/simple_animal/hostile/guardian/proc/Recall(forced = FALSE)
if(cooldown > world.time && !forced)
return
if(!summoner) return
new /obj/effect/overlay/temp/guardian/phase/out(get_turf(src))
@@ -141,7 +145,6 @@
var/input = stripped_input(src, "Please enter a message to tell your summoner.", "Guardian", "")
if(!input) return
for(var/mob/M in mob_list)
if(M == summoner)
to_chat(M, "<span class='changeling'><i>[src]:</i> [input]</span>")
@@ -151,7 +154,7 @@
to_chat(src, "<span class='changeling'><i>[src]:</i> [input]</span>")
/mob/living/simple_animal/hostile/guardian/proc/ToggleMode()
to_chat(src, "<span class='danger'><B>You dont have another mode!</span></B>")
to_chat(src, "<span class='danger'>You dont have another mode!</span>")
/mob/living/proc/guardian_comm()
@@ -212,456 +215,6 @@
to_chat(src, "<span class='notice'>You deactivate your light.</span>")
light_on = !light_on
//////////////////////////TYPES OF GUARDIANS
//Fire. Low damage, low resistance, sets mobs on fire when bumping
/mob/living/simple_animal/hostile/guardian/fire
a_intent = INTENT_HELP
melee_damage_lower = 10
melee_damage_upper = 10
attack_sound = 'sound/items/Welder.ogg'
attacktext = "sears"
damage_transfer = 0.8
range = 10
playstyle_string = "As a Chaos type, you have only light damage resistance, but will ignite any enemy you bump into. In addition, your melee attacks will randomly teleport enemies."
environment_smash = 1
magic_fluff_string = "..And draw the Wizard, bringer of endless chaos!"
tech_fluff_string = "Boot sequence complete. Crowd control modules activated. Holoparasite swarm online."
bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, ready to sow havoc at random."
var/toggle = FALSE
/mob/living/simple_animal/hostile/guardian/fire/Life() //Dies if the summoner dies
..()
if(summoner)
summoner.ExtinguishMob()
summoner.adjust_fire_stacks(-20)
/mob/living/simple_animal/hostile/guardian/fire/ToggleMode()
if(src.loc == summoner)
if(toggle)
to_chat(src, "You switch to dispersion mode, and will teleport victims away from your master.")
toggle = FALSE
else
to_chat(src, "You switch to deception mode, and will turn your victims against their allies.")
toggle = TRUE
/mob/living/simple_animal/hostile/guardian/fire/AttackingTarget()
if(..())
if(toggle)
if(ishuman(target) && !summoner)
spawn(0)
new /obj/effect/hallucination/delusion(target.loc, target, force_kind="custom", duration=200, skip_nearby=0, custom_icon = src.icon_state, custom_icon_file = src.icon)
else
if(prob(45))
if(istype(target, /atom/movable))
var/atom/movable/M = target
if(!M.anchored && M != summoner)
new /obj/effect/overlay/temp/guardian/phase/out(get_turf(M))
do_teleport(M, M, 10)
new /obj/effect/overlay/temp/guardian/phase/out(get_turf(M))
/mob/living/simple_animal/hostile/guardian/fire/Crossed(AM as mob|obj)
..()
collision_ignite(AM)
/mob/living/simple_animal/hostile/guardian/fire/Bumped(AM as mob|obj)
..()
collision_ignite(AM)
/mob/living/simple_animal/hostile/guardian/fire/Bump(AM as mob|obj)
..()
collision_ignite(AM)
/mob/living/simple_animal/hostile/guardian/fire/proc/collision_ignite(AM as mob|obj)
if(istype(AM, /mob/living/))
var/mob/living/M = AM
if(AM != summoner && M.fire_stacks < 7)
M.fire_stacks = 7
M.IgniteMob()
/mob/living/simple_animal/hostile/guardian/fire/Bump(AM as mob|obj)
..()
collision_ignite(AM)
//Standard
/mob/living/simple_animal/hostile/guardian/punch
melee_damage_lower = 20
melee_damage_upper = 20
damage_transfer = 0.5
playstyle_string = "As a standard type you have no special abilities, but have a high damage resistance and a powerful attack capable of smashing through walls."
environment_smash = 2
magic_fluff_string = "..And draw the Assistant, faceless and generic, but never to be underestimated."
tech_fluff_string = "Boot sequence complete. Standard combat modules loaded. Holoparasite swarm online."
bio_fluff_string = "Your scarab swarm stirs to life, ready to tear apart your enemies."
var/battlecry = "AT"
/mob/living/simple_animal/hostile/guardian/punch/sealpunch
name = "Seal Sprit"
real_name = "Seal Sprit"
icon = 'icons/mob/animal.dmi'
icon_living = "seal"
icon_state = "seal"
attacktext = "slaps"
speak_emote = list("barks")
melee_damage_lower = 0
melee_damage_upper = 0
melee_damage_type = STAMINA
damage_transfer = 0
playstyle_string = "As a standard type you have no special abilities, but have a high damage resistance and a powerful attack capable of smashing through walls."
environment_smash = 2
battlecry = "URK"
adminseal = TRUE
/mob/living/simple_animal/hostile/guardian/punch/verb/Battlecry()
set name = "Set Battlecry"
set category = "Guardian"
set desc = "Choose what you shout as you punch"
var/input = stripped_input(src,"What do you want your battlecry to be? Max length of 5 characters.", ,"", 6)
if(input)
battlecry = input
/mob/living/simple_animal/hostile/guardian/punch/AttackingTarget()
..()
if(iscarbon(target) && target != summoner)
if(length(battlecry) > 11)//no more then 11 letters in a battle cry.
src.visible_message("<span class='danger'><B>[src] punches [target]!</B></span>")
else
src.say("[src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry]")
playsound(loc, src.attack_sound, 50, 1, 1)
playsound(loc, src.attack_sound, 50, 1, 1)
playsound(loc, src.attack_sound, 50, 1, 1)
playsound(loc, src.attack_sound, 50, 1, 1)
//Healer
/mob/living/simple_animal/hostile/guardian/healer
a_intent = INTENT_HARM
friendly = "heals"
speed = 0
melee_damage_lower = 15
melee_damage_upper = 15
playstyle_string = "As a Support type, you may toggle your basic attacks to a healing mode. In addition, Alt-Clicking on an adjacent mob will warp them to your bluespace beacon after a short delay."
magic_fluff_string = "..And draw the CMO, a potent force of life...and death."
tech_fluff_string = "Boot sequence complete. Medical modules active. Bluespace modules activated. Holoparasite swarm online."
bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of mending wounds and travelling via bluespace."
var/turf/simulated/floor/beacon
var/beacon_cooldown = 0
var/toggle = FALSE
var/heal_cooldown = 0
/mob/living/simple_animal/hostile/guardian/healer/sealhealer
name = "Seal Sprit"
real_name = "Seal Sprit"
icon = 'icons/mob/animal.dmi'
icon_living = "seal"
icon_state = "seal"
attacktext = "slaps"
speak_emote = list("barks")
a_intent = INTENT_HARM
friendly = "heals"
speed = 0
melee_damage_lower = 0
melee_damage_upper = 0
melee_damage_type = STAMINA
adminseal = TRUE
/mob/living/simple_animal/hostile/guardian/healer/New()
..()
/mob/living/simple_animal/hostile/guardian/healer/Life()
..()
var/datum/atom_hud/medsensor = huds[DATA_HUD_MEDICAL_ADVANCED]
medsensor.add_hud_to(src)
/mob/living/simple_animal/hostile/guardian/healer/AttackingTarget()
..()
if(toggle == TRUE)
if(src.loc == summoner)
to_chat(src, "<span class='danger'><B>You must be manifested to heal!</span></B>")
return
if(iscarbon(target))
src.changeNext_move(CLICK_CD_MELEE)
if(heal_cooldown <= world.time && !stat)
var/mob/living/carbon/C = target
C.adjustBruteLoss(-5)
C.adjustFireLoss(-5)
C.adjustOxyLoss(-5)
C.adjustToxLoss(-5)
heal_cooldown = world.time + 20
/mob/living/simple_animal/hostile/guardian/healer/ToggleMode()
if(src.loc == summoner)
if(toggle)
a_intent = INTENT_HARM
speed = 0
damage_transfer = 0.7
if(src.adminseal)
damage_transfer = 0
melee_damage_lower = 15
melee_damage_upper = 15
to_chat(src, "<span class='danger'><B>You switch to combat mode.</span></B>")
toggle = FALSE
else
a_intent = INTENT_HELP
speed = 1
damage_transfer = 1
if(src.adminseal)
damage_transfer = 0
melee_damage_lower = 0
melee_damage_upper = 0
to_chat(src, "<span class='danger'><B>You switch to healing mode.</span></B>")
toggle = TRUE
else
to_chat(src, "<span class='danger'><B>You have to be recalled to toggle modes!</span></B>")
/mob/living/simple_animal/hostile/guardian/healer/verb/Beacon()
set name = "Place Bluespsace Beacon"
set category = "Guardian"
set desc = "Mark a floor as your beacon point, allowing you to warp targets to it. Your beacon will not work in unfavorable atmospheric conditions."
if(beacon_cooldown<world.time)
var/turf/beacon_loc = get_turf(src.loc)
if(istype(beacon_loc, /turf/simulated/floor))
var/turf/simulated/floor/F = beacon_loc
F.icon = 'icons/turf/floors.dmi'
F.name = "bluespace recieving pad"
F.desc = "A recieving zone for bluespace teleportations. Building a wall over it should disable it."
F.icon_state = "light_on-w"
to_chat(src, "<span class='danger'><B>Beacon placed! You may now warp targets to it, including your user, via Alt+Click. </span></B>")
if(beacon)
beacon.ChangeTurf(/turf/simulated/floor/plating)
beacon = F
beacon_cooldown = world.time+3000
else
to_chat(src, "<span class='danger'><B>Your power is on cooldown. You must wait five minutes between placing beacons.</span></B>")
/mob/living/simple_animal/hostile/guardian/healer/AltClickOn(atom/movable/A)
if(!istype(A))
return
if(src.loc == summoner)
to_chat(src, "<span class='danger'><B>You must be manifested to warp a target!</span></B>")
return
if(!beacon)
to_chat(src, "<span class='danger'><B>You need a beacon placed to warp things!</span></B>")
return
if(!Adjacent(A))
to_chat(src, "<span class='danger'><B>You must be adjacent to your target!</span></B>")
return
if((A.anchored))
to_chat(src, "<span class='danger'><B>Your target can not be anchored!</span></B>")
return
to_chat(src, "<span class='danger'><B>You begin to warp [A]</span></B>")
if(do_mob(src, A, 50))
if(!A.anchored)
if(src.beacon) //Check that the beacon still exists and is in a safe place. No instant kills.
if(beacon.air)
var/datum/gas_mixture/Z = beacon.air
if(Z.oxygen >= 16 && !Z.toxins && Z.carbon_dioxide < 10 && !Z.trace_gases.len)
if((Z.temperature > 270) && (Z.temperature < 360))
var/pressure = Z.return_pressure()
if((pressure > 20) && (pressure < 550))
new /obj/effect/overlay/temp/guardian/phase/out(get_turf(A))
do_teleport(A, beacon, 0)
new /obj/effect/overlay/temp/guardian/phase(get_turf(A))
else
to_chat(src, "<span class='danger'><B>The beacon isn't in a safe location!</span></B>")
else
to_chat(src, "<span class='danger'><B>The beacon isn't in a safe location!</span></B>")
else
to_chat(src, "<span class='danger'><B>You need a beacon to warp things!</span></B>")
else
to_chat(src, "<span class='danger'><B>You need to hold still!</span></B>")
///////////////////Ranged
/obj/item/projectile/guardian
name = "crystal spray"
icon_state = "guardian"
damage = 5
damage_type = BRUTE
armour_penetration = 100
/mob/living/simple_animal/hostile/guardian/ranged
a_intent = INTENT_HELP
friendly = "quietly assesses"
melee_damage_lower = 10
melee_damage_upper = 10
damage_transfer = 0.9
projectiletype = /obj/item/projectile/guardian
ranged_cooldown_time = 10
projectilesound = 'sound/effects/hit_on_shattered_glass.ogg'
ranged = 1
rapid = 1
range = 13
see_invisible = SEE_INVISIBLE_MINIMUM
see_in_dark = 8
playstyle_string = "As a ranged type, you have only light damage resistance, but are capable of spraying shards of crystal at incredibly high speed. You can also deploy surveillance snares to monitor enemy movement. Finally, you can switch to scout mode, in which you can't attack, but can move without limit."
magic_fluff_string = "..And draw the Sentinel, an alien master of ranged combat."
tech_fluff_string = "Boot sequence complete. Ranged combat modules active. Holoparasite swarm online."
bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of spraying shards of crystal."
var/list/snares = list()
var/toggle = FALSE
/mob/living/simple_animal/hostile/guardian/ranged/ToggleMode()
if(src.loc == summoner)
if(toggle)
ranged = 1
melee_damage_lower = 10
melee_damage_upper = 10
alpha = 255
range = 13
incorporeal_move = 0
to_chat(src, "<span class='danger'><B>You switch to combat mode.</span></B>")
toggle = FALSE
else
ranged = 0
melee_damage_lower = 0
melee_damage_upper = 0
alpha = 60
range = 255
incorporeal_move = 1
to_chat(src, "<span class='danger'><B>You switch to scout mode.</span></B>")
toggle = TRUE
else
to_chat(src, "<span class='danger'><B>You have to be recalled to toggle modes!</span></B>")
/mob/living/simple_animal/hostile/guardian/ranged/ToggleLight()
if(see_invisible == SEE_INVISIBLE_MINIMUM)
to_chat(src, "<span class='notice'>You deactivate your night vision.</span>")
see_invisible = SEE_INVISIBLE_LIVING
else
to_chat(src, "<span class='notice'>You activate your night vision.</span>")
see_invisible = SEE_INVISIBLE_MINIMUM
/mob/living/simple_animal/hostile/guardian/ranged/verb/Snare()
set name = "Set Surveillance Trap"
set category = "Guardian"
set desc = "Set an invisible trap that will alert you when living creatures walk over it. Max of 5"
if(src.snares.len <6)
var/turf/snare_loc = get_turf(src.loc)
var/obj/item/effect/snare/S = new /obj/item/effect/snare(snare_loc)
S.spawner = src
S.name = "[get_area(snare_loc)] trap ([rand(1, 1000)])"
src.snares |= S
to_chat(src, "<span class='danger'><B>Surveillance trap deployed!</span></B>")
else
to_chat(src, "<span class='danger'><B>You have too many traps deployed. Delete some first.</span></B>")
/mob/living/simple_animal/hostile/guardian/ranged/verb/DisarmSnare()
set name = "Remove Surveillance Trap"
set category = "Guardian"
set desc = "Disarm unwanted surveillance traps."
var/picked_snare = input(src, "Pick which trap to disarm", "Disarm Trap") as null|anything in src.snares
if(picked_snare)
src.snares -= picked_snare
qdel(picked_snare)
to_chat(src, "<span class='danger'><B>Snare disarmed.</span></B>")
/obj/item/effect/snare
name = "snare"
desc = "You shouldn't be seeing this!"
var/mob/living/spawner
invisibility = 1
/obj/item/effect/snare/Crossed(AM as mob|obj)
if(istype(AM, /mob/living/))
var/turf/snare_loc = get_turf(src.loc)
if(spawner)
to_chat(spawner, "<span class='danger'><B>[AM] has crossed your surveillance trap at [get_area(snare_loc)].</span></B>")
if(istype(spawner, /mob/living/simple_animal/hostile/guardian))
var/mob/living/simple_animal/hostile/guardian/G = spawner
if(G.summoner)
to_chat(G.summoner, "<span class='danger'><B>[AM] has crossed your surveillance trap at [get_area(snare_loc)].</span></B>")
////Bomb
/mob/living/simple_animal/hostile/guardian/bomb
melee_damage_lower = 15
melee_damage_upper = 15
damage_transfer = 0.6
range = 13
playstyle_string = "As an explosive type, you have only moderate close combat abilities, but are capable of converting any adjacent item into a disguised bomb via alt click."
magic_fluff_string = "..And draw the Scientist, master of explosive death."
tech_fluff_string = "Boot sequence complete. Explosive modules active. Holoparasite swarm online."
bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of stealthily booby trapping items."
var/bomb_cooldown = 0
/mob/living/simple_animal/hostile/guardian/bomb/AltClickOn(atom/movable/A)
if(!istype(A))
return
if(src.loc == summoner)
to_chat(src, "<span class='danger'><B>You must be manifested to create bombs!</B></span>")
return
if(istype(A, /obj/))
if(bomb_cooldown <= world.time && !stat)
var/obj/item/weapon/guardian_bomb/B = new /obj/item/weapon/guardian_bomb(get_turf(A))
to_chat(src, "<span class='danger'><B>Success! Bomb on \the [A] armed!</B></span>")
if(summoner)
to_chat(summoner, "<span class='warning'>Your guardian has primed \the [A] to explode!</span>")
bomb_cooldown = world.time + 200
B.spawner = src
B.disguise (A)
else
to_chat(src, "<span class='danger'><B>Your powers are on cooldown! You must wait 20 seconds between bombs.</B></span>")
/obj/item/weapon/guardian_bomb
name = "bomb"
desc = "You shouldn't be seeing this!"
var/obj/stored_obj
var/mob/living/spawner
/obj/item/weapon/guardian_bomb/proc/disguise(var/obj/A)
A.loc = src
stored_obj = A
anchored = A.anchored
density = A.density
appearance = A.appearance
spawn(600)
if(src)
stored_obj.loc = get_turf(src.loc)
if(spawner)
to_chat(spawner, "<span class='danger'><B>Failure! Your trap on \the [stored_obj] didn't catch anyone this time.</B></span>")
qdel(src)
/obj/item/weapon/guardian_bomb/proc/detonate(var/mob/living/user)
to_chat(user, "<span class='danger'><B>The [src] was boobytrapped!</B></span>")
if(istype(spawner, /mob/living/simple_animal/hostile/guardian))
var/mob/living/simple_animal/hostile/guardian/G = spawner
if(user == G.summoner)
to_chat(user, "<span class='danger'>You knew this because of your link with your guardian, so you smartly defuse the bomb.</span>")
stored_obj.loc = get_turf(src.loc)
qdel(src)
return
to_chat(spawner, "<span class='danger'><B>Success! Your trap on \the [src] caught [user]!</B></span>")
stored_obj.loc = get_turf(src.loc)
playsound(get_turf(src),'sound/effects/Explosion2.ogg', 200, 1)
user.ex_act(2)
qdel(src)
/obj/item/weapon/guardian_bomb/attackby(mob/living/user)
detonate(user)
return
/obj/item/weapon/guardian_bomb/pickup(mob/living/user)
detonate(user)
return
/obj/item/weapon/guardian_bomb/examine(mob/user)
stored_obj.examine(user)
if(get_dist(user,src)<=2)
to_chat(user, "<span class='notice'>Looks odd!</span>")
////////Creation
/obj/item/weapon/guardiancreator
@@ -676,7 +229,7 @@
var/used_message = "All the cards seem to be blank now."
var/failure_message = "..And draw a card! It's...blank? Maybe you should try again later."
var/ling_failure = "The deck refuses to respond to a souless creature such as you."
var/list/possible_guardians = list("Chaos", "Standard", "Ranged", "Support", "Explosive")
var/list/possible_guardians = list("Chaos", "Standard", "Ranged", "Support", "Explosive", "Assassin", "Lightning", "Charger", "Protector")
var/random = TRUE
/obj/item/weapon/guardiancreator/attack_self(mob/living/user)
@@ -727,6 +280,18 @@
if("Explosive")
pickedtype = /mob/living/simple_animal/hostile/guardian/bomb
if("Assassin")
pickedtype = /mob/living/simple_animal/hostile/guardian/assassin
if("Lightning")
pickedtype = /mob/living/simple_animal/hostile/guardian/beam
if("Charger")
pickedtype = /mob/living/simple_animal/hostile/guardian/charger
if("Protector")
pickedtype = /mob/living/simple_animal/hostile/guardian/protector
var/mob/living/simple_animal/hostile/guardian/G = new pickedtype(user)
G.summoner = user
G.summoned = TRUE
@@ -741,12 +306,33 @@
user.verbs += /mob/living/proc/guardian_reset
var/color
//names and their RGB
var/magic_list = list("Pink" = "#FFC0CB", \
"Red" = "#FF0000", \
"Orange" = "#FFA500", \
"Green" = "#008000", \
"Blue" = "#0000FF")
var/tech_list = list("Rose" = "#F62C6B", \
"Peony" = "#E54750", \
"Lily" = "#F6562C", \
"Daisy" = "#ECCD39", \
"Zinnia" = "#89F62C", \
"Ivy" = "#5DF62C", \
"Iris" = "#2CF6B8", \
"Petunia" = "#51A9D4", \
"Violet" = "#8A347C", \
"Lilac" = "#C7A0F6", \
"Orchid" = "#F62CF5")
var/picked_name
var/picked_color = pick("#FFFFFF","#000000","#808080","#A52A2A","#FF0000","#8B0000","#DC143C","#FFA500","#FFFF00","#008000","#00FF00","#006400","#00FFFF","#0000FF","#000080","#008080","#800080","#4B0082")
switch(theme)
if("magic")
color = pick("Pink", "Red", "Orange", "Green", "Blue")
color = pick(magic_list)
G.name_color = magic_list[color]
picked_name = pick("Aries", "Leo", "Sagittarius", "Taurus", "Virgo", "Capricorn", "Gemini", "Libra", "Aquarius", "Cancer", "Scorpio", "Pisces")
G.name = "[picked_name] [color]"
@@ -757,7 +343,8 @@
to_chat(user, "[G.magic_fluff_string].")
if("tech")
color = pick("Rose", "Peony", "Lily", "Daisy", "Zinnia", "Ivy", "Iris", "Petunia", "Violet", "Lilac", "Orchid") //technically not colors, just flowers that can be specific colors
color = pick(tech_list) //technically not colors, just flowers that can be specific colors
G.name_color = tech_list[color]
picked_name = pick("Gallium", "Indium", "Thallium", "Bismuth", "Aluminium", "Mercury", "Iron", "Silver", "Zinc", "Titanium", "Chromium", "Nickel", "Platinum", "Tellurium", "Palladium", "Rhodium", "Cobalt", "Osmium", "Tungsten", "Iridium")
G.name = "[picked_name] [color]"
@@ -769,6 +356,7 @@
to_chat(user, "[G.tech_fluff_string].")
G.speak_emote = list("states")
if("bio")
G.name_color = picked_color
G.icon = 'icons/mob/mob.dmi'
picked_name = pick("brood", "hive", "nest")
to_chat(user, "[G.bio_fluff_string].")
@@ -0,0 +1,89 @@
/mob/living/simple_animal/hostile/guardian/assassin
melee_damage_lower = 15
melee_damage_upper = 15
armour_penetration = 0
damage_transfer = 0.6
playstyle_string = "As an <b>Assassin</b> type you do medium damage and have no damage resistance, but can enter stealth, massively increasing the damage of your next attack and causing it to ignore armor. Stealth is broken when you attack or take damage."
magic_fluff_string = "..And draw the Space Ninja, a lethal, invisible assassin."
tech_fluff_string = "Boot sequence complete. Assassin modules loaded. Holoparasite swarm online."
bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of sneaking and stealthy attacks."
var/toggle = FALSE
var/stealthcooldown = 0
var/default_stealth_cooldown = 16 SECONDS
var/obj/screen/alert/canstealthalert
var/obj/screen/alert/instealthalert
/mob/living/simple_animal/hostile/guardian/assassin/Life()
. = ..()
updatestealthalert()
if(loc == summoner && toggle)
ToggleMode(0)
/mob/living/simple_animal/hostile/guardian/assassin/Stat()
..()
if(statpanel("Status"))
if(stealthcooldown >= world.time)
stat(null, "Stealth Cooldown Remaining: [max(round((stealthcooldown - world.time)*0.1, 0.1), 0)] seconds")
/mob/living/simple_animal/hostile/guardian/assassin/AttackingTarget()
..()
if(toggle && (isliving(target) || istype(target, /obj/structure/window) || istype(target, /obj/structure/grille)))
ToggleMode(1)
/mob/living/simple_animal/hostile/guardian/assassin/adjustHealth(amount, updating_health = TRUE, forced = FALSE)
. = ..()
if(. > 0 && toggle)
ToggleMode(1)
/mob/living/simple_animal/hostile/guardian/assassin/Recall()
..()
if(toggle)
ToggleMode(0)
/mob/living/simple_animal/hostile/guardian/assassin/ToggleMode(forced = 0)
if(toggle)
melee_damage_lower = initial(melee_damage_lower)
melee_damage_upper = initial(melee_damage_upper)
armour_penetration = initial(armour_penetration)
alpha = initial(alpha)
if(!forced)
to_chat(src, "<span class='danger'>You exit stealth.</span>")
else
visible_message("<span class='danger'>[src] suddenly appears!</span>")
stealthcooldown = world.time + default_stealth_cooldown //we were forced out of stealth and go on cooldown
cooldown = world.time + 40 //can't recall for 4 seconds
updatestealthalert()
toggle = FALSE
else if(stealthcooldown <= world.time)
if(loc == summoner)
to_chat(src, "<span class='danger'>You have to be manifested to enter stealth!</span>")
return
melee_damage_lower = 50
melee_damage_upper = 50
armour_penetration = 100
new /obj/effect/overlay/temp/guardian/phase(get_turf(src))
alpha = 15
if(!forced)
to_chat(src, "<span class='danger'>You enter stealth, empowering your next attack.</span>")
updatestealthalert()
toggle = TRUE
else if(!forced)
to_chat(src, "<span class='danger'>You cannot yet enter stealth, wait another [max(round((stealthcooldown - world.time)*0.1, 0.1), 0)] seconds!</span>")
/mob/living/simple_animal/hostile/guardian/assassin/proc/updatestealthalert()
if(stealthcooldown <= world.time)
if(toggle)
if(!instealthalert)
instealthalert = throw_alert("instealth", /obj/screen/alert/instealth)
clear_alert("canstealth")
canstealthalert = null
else
if(!canstealthalert)
canstealthalert = throw_alert("canstealth", /obj/screen/alert/canstealth)
clear_alert("instealth")
instealthalert = null
else
clear_alert("instealth")
instealthalert = null
clear_alert("canstealth")
canstealthalert = null

Some files were not shown because too many files have changed in this diff Show More