From 83192c3678b5a56e444b5db13d693c6c8cbbc032 Mon Sep 17 00:00:00 2001 From: Kyep Date: Sun, 7 Jan 2018 01:12:12 -0800 Subject: [PATCH] peaceful mode, loot rework, hand tele respect areas, AI --- _maps/map_files/cyberiad/z6.dmm | 242 +++++++++--------- code/game/area/Space Station 13 areas.dm | 53 +++- code/game/machinery/computer/depot.dm | 80 +++++- .../effects/spawners/random_spawners.dm | 222 +++++----------- .../objects/items/weapons/teleportation.dm | 4 +- .../structures/crates_lockers/closets.dm | 16 +- .../crates_lockers/closets/secure/depot.dm | 39 +++ .../modules/mob/living/silicon/decoy/decoy.dm | 51 +++- .../mob/living/simple_animal/bot/syndicate.dm | 2 +- paradise.dme | 1 + 10 files changed, 400 insertions(+), 310 deletions(-) create mode 100644 code/game/objects/structures/crates_lockers/closets/secure/depot.dm diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm index 8220315bf67..d8599282c66 100644 --- a/_maps/map_files/cyberiad/z6.dmm +++ b/_maps/map_files/cyberiad/z6.dmm @@ -642,8 +642,8 @@ "mr" = (/turf/simulated/wall/r_wall,/area/syndicate_depot) "ms" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) "mt" = (/obj/structure/falsewall,/turf/simulated/floor/plating/airless,/area/syndicate_depot/outer) -"mu" = (/obj/structure/closet/crate{name = "foot locker"},/obj/machinery/light{dir = 1; on = 1},/obj/effect/spawner/random_spawners/syndicate/loot/cigs,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"mv" = (/obj/structure/closet/crate{name = "foot locker"},/obj/effect/spawner/random_spawners/syndicate/trap/toolbox,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"mu" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"mv" = (/obj/effect/spawner/random_spawners/syndicate/loot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) "mw" = (/obj/machinery/door/airlock/hatch{req_access_txt = "150"},/obj/machinery/door/poddoor{id_tag = "syndi_depot_lvl2"; name = "Level 2 Blast Doors"; protected = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) "mx" = (/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) "my" = (/obj/effect/spawner/random_spawners/syndicate/layout/door,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) @@ -704,106 +704,94 @@ "nB" = (/obj/machinery/navbeacon/invisible{codes_txt = "patrol;next_patrol=SDSW"; invisibility = 100; location = "SDNW"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) "nC" = (/obj/effect/spawner/random_spawners/blood_often,/obj/machinery/light/small,/turf/simulated/floor/plating/airless,/area/syndicate_depot) "nD" = (/obj/machinery/light/small,/turf/simulated/floor/plating/airless,/area/syndicate_depot) -"nE" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nF" = (/obj/structure/sign/poster/contraband/fun_police,/turf/simulated/wall/r_wall,/area/syndicate_depot) -"nG" = (/obj/machinery/door/poddoor/multi_tile/two_tile_hor,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nH" = (/obj/effect/spawner/random_spawners/syndicate/trap/medbot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nI" = (/obj/effect/spawner/random_spawners/syndicate/mob,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nJ" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/loot/drugs,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nK" = (/obj/item/weapon/lighter/zippo/black,/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nL" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/loot/medicalkit,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nM" = (/obj/structure/sign/poster/contraband/lusty_xenomorph,/turf/simulated/wall/r_wall,/area/syndicate_depot) -"nN" = (/obj/effect/spawner/random_spawners/syndicate/loot/spacepod{icon_state = "pod_civ"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nO" = (/obj/structure/rack,/obj/effect/spawner/random_spawners/syndicate/loot/spacesuit,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nP" = (/obj/machinery/light{dir = 1; on = 1},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nQ" = (/obj/structure/sign/poster/official/high_class_martini,/turf/simulated/wall/r_wall,/area/syndicate_depot) -"nR" = (/obj/machinery/computer/syndicate_depot/syndiecomms,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nS" = (/obj/structure/table,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nT" = (/obj/structure/closet/crate,/obj/effect/spawner/random_spawners/syndicate/loot/ammo10mm,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nU" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nV" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nW" = (/obj/machinery/light{dir = 1; on = 1},/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nX" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nY" = (/obj/structure/dispenser,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nZ" = (/obj/structure/sign/poster/official/air1,/turf/simulated/wall/r_wall,/area/syndicate_depot) -"oa" = (/obj/item/weapon/storage/box/donkpockets,/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"ob" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oc" = (/obj/structure/sign/poster/contraband/tools,/turf/simulated/wall/r_wall,/area/syndicate_depot) -"od" = (/obj/structure/sign/poster/contraband/hacking_guide,/turf/simulated/wall/r_wall,/area/syndicate_depot) -"oe" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"of" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"og" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/trap/pizzabomb,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oh" = (/obj/machinery/vending/syndisnack,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oi" = (/obj/machinery/door/airlock/silver,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oj" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/trap/documents,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"ok" = (/obj/machinery/computer/syndicate_depot/selfdestruct,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"ol" = (/obj/effect/decal/warning_stripes/red,/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/fusionreactor,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"om" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"on" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/syndicake,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oo" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/loot/minerals,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"op" = (/obj/machinery/vending/syndicigs,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oq" = (/turf/simulated/floor/mineral/silver,/area/syndicate_depot) -"or" = (/obj/machinery/door/airlock/plasma{welded = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"os" = (/turf/simulated/floor/mineral/plasma,/area/syndicate_depot) -"ot" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/effect/spawner/random_spawners/syndicate/loot/jammer,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"ou" = (/obj/structure/cable,/obj/machinery/power/terminal,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"ov" = (/obj/structure/sign/poster/contraband/energy_swords,/turf/simulated/wall/r_wall,/area/syndicate_depot) -"ow" = (/obj/effect/spawner/random_spawners/syndicate/mob,/turf/simulated/floor/mineral/plasma,/area/syndicate_depot) -"ox" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/turf/simulated/floor/mineral/silver,/area/syndicate_depot) -"oy" = (/obj/structure/sign/poster/official/state_laws,/turf/simulated/wall/r_wall,/area/syndicate_depot) -"oz" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/smes/upgraded{charge = 5e+006; input_level = 20000; output_level = 100000},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oA" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oB" = (/obj/machinery/turretid/syndicate{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oC" = (/obj/machinery/light{dir = 1; on = 1},/obj/structure/rack,/obj/effect/spawner/random_spawners/syndicate/loot/m90ammo,/obj/effect/spawner/random_spawners/syndicate/loot/m90ammo,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oD" = (/obj/structure/rack,/obj/effect/spawner/random_spawners/syndicate/loot/m90,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oE" = (/obj/structure/rack,/obj/effect/spawner/random_spawners/syndicate/loot/thermals,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oF" = (/obj/structure/mirror{pixel_x = -32},/turf/simulated/floor/mineral/silver,/area/syndicate_depot) -"oG" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 12; pixel_y = 0},/turf/simulated/floor/mineral/plasma,/area/syndicate_depot) -"oH" = (/obj/structure/sign/poster/contraband/missing_gloves,/turf/simulated/wall/r_wall,/area/syndicate_depot) -"oI" = (/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oK" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oL" = (/obj/structure/sign/poster/contraband/revolver,/turf/simulated/wall/r_wall,/area/syndicate_depot) -"oM" = (/obj/structure/mirror{pixel_x = -32},/turf/simulated/floor/mineral/plasma,/area/syndicate_depot) -"oN" = (/obj/structure/toilet{dir = 8},/turf/simulated/floor/mineral/silver,/area/syndicate_depot) -"oO" = (/obj/structure/closet/crate,/obj/machinery/light,/obj/effect/spawner/random_spawners/syndicate/loot/rcd,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oP" = (/obj/structure/closet/crate,/obj/effect/spawner/random_spawners/syndicate/trap/toolbox,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oQ" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oR" = (/obj/structure/closet/crate,/obj/effect/spawner/random_spawners/syndicate/loot/radiokey,/obj/structure/cable,/obj/machinery/power/apc/noalarm{dir = 4; pixel_x = 24; req_access = list(150)},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oS" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) -"oT" = (/obj/structure/sign/poster/official/obey,/turf/simulated/wall/r_wall,/area/syndicate_depot) -"oU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/wall/r_wall,/area/syndicate_depot) -"oV" = (/obj/structure/sign/poster/contraband/syndicate_pistol,/turf/simulated/wall/r_wall,/area/syndicate_depot) -"oW" = (/obj/structure/closet/crate,/obj/effect/spawner/random_spawners/syndicate/loot/pistol,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oX" = (/obj/machinery/door_control{active_power_usage = 0; id = "syndi_depot_rear"; idle_power_usage = 0; name = "mysterious button"; normaldoorcontrol = 0; use_power = 0},/obj/structure/sign/poster/contraband/syndicate_recruitment,/turf/simulated/wall,/area/syndicate_depot) -"oY" = (/obj/effect/spawner/random_spawners/blood_maybe,/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot) -"oZ" = (/obj/machinery/light{dir = 1; on = 1},/obj/effect/spawner/random_spawners/syndicate/turret,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pa" = (/obj/structure/closet/crate,/obj/effect/spawner/random_spawners/syndicate/loot/camoprojector,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pb" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/loot/cyborg,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pc" = (/obj/machinery/light{dir = 1; on = 1},/obj/effect/spawner/random_spawners/syndicate/turret,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pd" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pe" = (/obj/item/candle,/obj/structure/table,/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot) -"pf" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot) -"pg" = (/obj/structure/closet/crate{name = "foot locker"},/obj/effect/spawner/random_spawners/syndicate/loot/ammo10mm,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"ph" = (/obj/machinery/computer/syndicate_depot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pj" = (/obj/effect/spawner/random_spawners/syndicate/trap/mine,/obj/item/stack/sheet/metal{layer = 4.1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pk" = (/obj/machinery/door/poddoor{id_tag = "syndi_depot_rear"; name = "Sealed Doors"; protected = 0},/turf/simulated/floor/plating/airless,/area/syndicate_depot) -"pl" = (/obj/structure/falsewall,/turf/simulated/floor/plating/airless,/area/syndicate_depot) -"pm" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pn" = (/turf/simulated/wall,/area/syndicate_depot) -"po" = (/obj/effect/spawner/random_spawners/syndicate/layout/door,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pp" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/loot/cigs,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pq" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/trap/toolbox,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pr" = (/obj/machinery/light/small{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"ps" = (/obj/structure/rack,/obj/item/clothing/head/helmet/swat/syndicate,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pt" = (/obj/structure/closet/crate,/obj/effect/spawner/random_spawners/syndicate/loot/minerals,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pu" = (/obj/structure/rack,/obj/item/clothing/under/syndicate{pixel_x = 3; pixel_y = 3},/obj/effect/spawner/random_spawners/syndicate/loot/shoes,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pv" = (/obj/machinery/navbeacon/invisible{codes_txt = "patrol;next_patrol=SDSE"; invisibility = 100; location = "SDSW"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) -"pw" = (/obj/machinery/light/small{dir = 8},/obj/effect/spawner/random_spawners/syndicate/turret,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"px" = (/obj/machinery/power/apc/noalarm{dir = 4; pixel_x = 24},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/syndicate_depot/outer) -"py" = (/obj/machinery/navbeacon/invisible{codes_txt = "patrol;next_patrol=SDNE"; invisibility = 100; location = "SDSE"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) -"pz" = (/turf/space,/area/syndicate_depot/outer) +"nE" = (/obj/structure/sign/poster/contraband/fun_police,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"nF" = (/obj/machinery/door/poddoor/multi_tile/two_tile_hor,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nG" = (/obj/effect/spawner/random_spawners/syndicate/trap/medbot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nH" = (/obj/effect/spawner/random_spawners/syndicate/mob,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nI" = (/obj/effect/spawner/random_spawners/syndicate/loot/level2,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nJ" = (/obj/item/weapon/lighter/zippo/black,/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nK" = (/obj/structure/sign/poster/contraband/lusty_xenomorph,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"nL" = (/obj/machinery/light{dir = 1; on = 1},/obj/effect/spawner/random_spawners/syndicate/loot/level2,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nM" = (/obj/structure/sign/poster/official/high_class_martini,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"nN" = (/obj/machinery/computer/syndicate_depot/syndiecomms,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nO" = (/obj/structure/table,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nP" = (/obj/machinery/light{dir = 8},/obj/effect/spawner/random_spawners/syndicate/loot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nQ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/effect/spawner/random_spawners/syndicate/loot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nR" = (/obj/machinery/light{dir = 1; on = 1},/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nS" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nT" = (/obj/structure/dispenser,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nU" = (/obj/structure/sign/poster/official/air1,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"nV" = (/obj/item/weapon/storage/box/donkpockets,/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nW" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nX" = (/obj/structure/sign/poster/contraband/tools,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"nY" = (/obj/structure/sign/poster/contraband/hacking_guide,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"nZ" = (/obj/effect/spawner/random_spawners/syndicate/loot/level3,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oa" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"ob" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/trap/pizzabomb,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oc" = (/obj/machinery/vending/syndisnack,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"od" = (/obj/machinery/door/airlock/silver,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oe" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/trap/documents,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"of" = (/obj/machinery/computer/syndicate_depot/selfdestruct,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"og" = (/obj/effect/decal/warning_stripes/red,/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/fusionreactor,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oh" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oi" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/syndicake,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oj" = (/obj/machinery/vending/syndicigs,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"ok" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"ol" = (/turf/simulated/floor/mineral/silver,/area/syndicate_depot) +"om" = (/obj/machinery/door/airlock/plasma{welded = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"on" = (/turf/simulated/floor/mineral/plasma,/area/syndicate_depot) +"oo" = (/obj/structure/table,/obj/item/weapon/wrench,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"op" = (/obj/structure/cable,/obj/machinery/power/terminal,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oq" = (/obj/structure/sign/poster/contraband/energy_swords,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"or" = (/obj/effect/spawner/random_spawners/syndicate/mob,/turf/simulated/floor/mineral/plasma,/area/syndicate_depot) +"os" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/turf/simulated/floor/mineral/silver,/area/syndicate_depot) +"ot" = (/obj/structure/sign/poster/official/state_laws,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"ou" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/smes/upgraded{charge = 5e+006; input_level = 20000; output_level = 100000},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"ov" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"ow" = (/obj/machinery/turretid/syndicate{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"ox" = (/obj/machinery/light{dir = 1; on = 1},/obj/effect/spawner/random_spawners/syndicate/loot/level4,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oy" = (/obj/effect/spawner/random_spawners/syndicate/loot/level4,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oz" = (/obj/structure/mirror{pixel_x = -32},/turf/simulated/floor/mineral/silver,/area/syndicate_depot) +"oA" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 12; pixel_y = 0},/turf/simulated/floor/mineral/plasma,/area/syndicate_depot) +"oB" = (/obj/structure/sign/poster/contraband/missing_gloves,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"oC" = (/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oE" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oF" = (/obj/structure/sign/poster/contraband/revolver,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"oG" = (/obj/effect/spawner/random_spawners/syndicate/turret,/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oH" = (/obj/structure/mirror{pixel_x = -32},/turf/simulated/floor/mineral/plasma,/area/syndicate_depot) +"oI" = (/obj/structure/toilet{dir = 8},/turf/simulated/floor/mineral/silver,/area/syndicate_depot) +"oJ" = (/obj/machinery/light,/obj/effect/spawner/random_spawners/syndicate/loot/level3,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oK" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oL" = (/obj/structure/cable,/obj/machinery/power/apc/noalarm{dir = 4; pixel_x = 24; req_access = list(150)},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oM" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) +"oN" = (/obj/structure/sign/poster/official/obey,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"oO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/wall/r_wall,/area/syndicate_depot) +"oP" = (/obj/structure/sign/poster/contraband/syndicate_pistol,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"oQ" = (/mob/living/silicon/decoy/syndicate/depot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oR" = (/obj/machinery/door_control{active_power_usage = 0; id = "syndi_depot_rear"; idle_power_usage = 0; name = "mysterious button"; normaldoorcontrol = 0; use_power = 0},/obj/structure/sign/poster/contraband/syndicate_recruitment,/turf/simulated/wall,/area/syndicate_depot) +"oS" = (/obj/effect/spawner/random_spawners/blood_maybe,/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot) +"oT" = (/obj/machinery/light{dir = 1; on = 1},/obj/effect/spawner/random_spawners/syndicate/turret,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oU" = (/obj/machinery/light{dir = 1; on = 1},/obj/effect/spawner/random_spawners/syndicate/turret,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oV" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oW" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oX" = (/obj/item/candle,/obj/structure/table,/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot) +"oY" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot) +"oZ" = (/obj/machinery/computer/syndicate_depot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"pa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"pb" = (/obj/effect/spawner/random_spawners/syndicate/trap/mine,/obj/item/stack/sheet/metal{layer = 4.1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"pc" = (/obj/machinery/door/poddoor{id_tag = "syndi_depot_rear"; name = "Sealed Doors"; protected = 0},/turf/simulated/floor/plating/airless,/area/syndicate_depot) +"pd" = (/obj/structure/falsewall,/turf/simulated/floor/plating/airless,/area/syndicate_depot) +"pe" = (/obj/machinery/light/small{dir = 8},/obj/effect/spawner/random_spawners/syndicate/loot/level2,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"pf" = (/turf/simulated/wall,/area/syndicate_depot) +"pg" = (/obj/effect/spawner/random_spawners/syndicate/layout/door,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"ph" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/loot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"pi" = (/obj/machinery/light/small{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"pj" = (/obj/machinery/navbeacon/invisible{codes_txt = "patrol;next_patrol=SDSE"; invisibility = 100; location = "SDSW"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) +"pk" = (/obj/machinery/light/small{dir = 8},/obj/effect/spawner/random_spawners/syndicate/turret,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"pl" = (/obj/machinery/power/apc/noalarm{dir = 4; pixel_x = 24},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/syndicate_depot/outer) +"pm" = (/obj/machinery/navbeacon/invisible{codes_txt = "patrol;next_patrol=SDNE"; invisibility = 100; location = "SDSE"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) +"pn" = (/turf/space,/area/syndicate_depot/outer) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1014,33 +1002,33 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZmdmcmgmfmfmfmkmhmclZlZmlmmmbmbmbmbmbmbmbmbmbmbmbmbmblZlZlZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvcvcvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakVaaaaaaaaaaaaaamHmHmnmfmfmfmfmfmfmfmgmcmnlZmbmbmombmpmbmbmbmbmbmpmbmombmblZlZlZlZaaaaaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacznknknkmJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZlZmnmfmfmfmgmcmfmqmfmkmnlZlZlZmrmrmrmrmrmrmrmrmrmrmrmsmbmblZlZlZlZaaaamHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamLnnnmncmLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZlZmnmtmtmnmnmnmnmnmnmnmnlZlZlZmrmjmimvmumimimimimjmrmwmrmbmblZlZlZaaaaaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamLnnnmncmLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZlZmnmtmtmnmnmnmnmnmnmnmnlZlZlZmrmjmimimumvmimimimjmrmwmrmbmblZlZlZaaaaaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacznonpaznpnqmJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZlZlZlZmfmflZlZlZlZlZlZlZlZlZlZlZmrmjmimimimimimimimjmymzmrmbmblZlZlZmHmHaaaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHaaaaaaaamInrnomTnsnsnqmMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbmrmrmBmAmrmrmrmrmrmCmrmrmrmrmrmrmDmimFmimimimrmymGmrmrmrmombmblZlZmHmHmHaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHaaaaaaaamInrnomTnsnsnqmMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbmrmrmBmAmrmrmrmrmrmCmrmrmrmrmrmrmDmimFmvmimimrmymGmrmrmrmombmblZlZmHmHmHaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHaaaamHmHmHmHmHntnvnumHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmlmbmrmAmAmBmSmAmVmrmrnhnjninwnlmrmrmrmrmrmrmrmymrminynxnzmrmbmbmblZlZmHmHmHaamHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmImImHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZmbnBnAmrmVnCmBmAmAnDmyminjnhnjnwmimymimiminEmimimimrmimimimimrmsmblZlZlZaaaamHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZmbmbmbmrmrmrnFnGmimrmrminhnjmrmrmymrminHminImiminJmrminlminlmrmbmblZlZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmImIaaaaczmKmKmLmLmKmKmKmKmJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZlZmbmomrmimimimimimrmrmrmrmrmrnKmimrmimimimimiminLmrmynMmrmrmrmbmblZlZaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmIczmKmNmImOazazmPmPmQazmRdlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmrnNmimimimimrnInPnOmrnEmimimrmrnQmrmrmymrmrmrminSnRnTmrmbmblZlZlZmHmHaaaaaaaaaaaaaaaaaakVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmTazazazazazmUazmRehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbmrnUmimiminVmrmimimimymimimimymimimFnWmimimimymimxnXmimrmbmblZlZlZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmWmXmYazmZmUazmUazmUmRehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakVaaaaaaaalZlZmbnAnZnYmimimimimymimimimrmFmimimrmimimimimimioamrmimimimimrmsmbmblZlZmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHnaaznbazncazmOazazazmUmRehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmrobmFmimimFmrocmymrmrmrodmrmrmimEoeogofmiohmrmrmrmroimrmomblZlZlZmHbBmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHndmKneaznfazazngmPmPazmRhZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZmbmbmomrmrmrmymrmrmrojminEmEokomolmrmimEonooofmiopmrmioroqosmrmbmblZlZlZmImImIbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmHndmKmKmLmLmKmKmKmKmMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmwmzmymimiotmrmxmimimimioumrmrmymrovmrmrmymrmrmrmrowoxmrmbmblZlZmbmIbBmImIaaaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmrmroyminImimymimFmimimiozmroBoAoDoCoEmrmiminEmFmroFoGmrmbmblZlZmnmImHmImIaaaabBmHmIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHaamHmHmHmHmHmImImHmHmHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbnAmrmimiminVoHmimioImiomoJmymimioKoKoKoLmimimimimroMoNmrmsmblZlZmbmImHmHmIaaaaaamImIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmImImImHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbmomrmrmrmymrmrmioPoOmioQoRmrmFmimimimimymimioImimroimrmrmbmblZlZmbmHmHmHmImIaamHbBmHmIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHaaaaaaaamImImHmImHmHmImImIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmbmboSmrminImroTmrmrmyoUmrmrmroVmrmrmrmroWmimimimrmimFmrmbmblYoXoYmHmImImImIbBmHaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHaaaaaaaaaaaamImHmHmHmHmHmHmIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmbmbmbmrmiminEmimimrmioZmrmipaoPpcpbpdmrmrmrmrmrmrnUmimrmemrlYpepfbBmIbBmHmImHmImImHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZlZlZlZlZmbmbmrmrpgphofmimymipimymimimimimimimymiminEpjmymimimenDpkpllXoYmHmImHmImImImHmImHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZlZlZlZlZmbmbmrmrmrmrmrmrpmpimrmimimioImimimrmFmimimimCmimimrmemrlYlYpnmHmImImImHmImHmIbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHaamHlZlZmombmboSmbmbmbmrmrpomrmrmymrmymrmrmrmroWmimimrpppqmrmbmblZlZlZaamImHbBmHmImHmImHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZlZmbmbmlmbmbmbmbmrprmymimimrmipspuptmrmimimimrmrmrmrmbmblZlZmbmHaaaamIaamImImIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZaalZlZmbpvmbmbmbmbmroUmrpwmimymimimimimymimimimrmbmboSmbmblZlZmbmIaaaaaaaamImIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbmbmbmomboSpxmrmrmymrmrmrmrnImrnImimFmrmbmbmbmbmblZlZmbbBaaaaaaaamIaaaaaaaaaaaaaaaakVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZlZlZlZlZmbmbmbmbmbmboSmbmbmbmbmrmrmrmrmrmrmrmombmlmblZlZlZmbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakVaaaaaaaaaaaaaaaamHlZlZlZlZlZlZlZlZlZlZlZmbmbmbmbmbmbmomboSmbmbmboSmbpymblZlZlZlZpzmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZaaaalZlZlZlZlZlZlZlZlZlZmbmbmbmbmbmbmbmbmbmbmbmblZlZlZlZlZpzaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmImImHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZmbnBnAmrmVnCmBmAmAnDmyminjnhnjnwmimymimimimumimimimrmimimimimrmsmblZlZlZaaaamHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZmbmbmbmrmrmrnEnFmimrmrminhnjmrmrmymrminGminHmiminImrminlminlmrmbmblZlZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmImIaaaaczmKmKmLmLmKmKmKmKmJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZlZmbmomrmimimimimimrmrmrmrmrmrnJmimrnInImimimiminImrmynKmrmrmrmbmblZlZaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmIczmKmNmImOazazmPmPmQazmRdlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmrmimimimimimrnHnLnImrnLmimimrmrnMmrmrmymrmrmrminOnNmvmrmbmblZlZlZmHmHaaaaaaaaaaaaaaaaaakVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmTazazazazazmUazmRehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbmrnPmimiminQmrmimimimymimimimymimimFnRmimimimymimxnSmvmrmbmblZlZlZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmWmXmYazmZmUazmUazmUmRehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakVaaaaaaaalZlZmbnAnUnTmimimimimymimimimrmFmimimrmimimimimiminVmrmimimimimrmsmbmblZlZmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHnaaznbazncazmOazazazmUmRehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmrnWmFmimimFmrnXmymrmrmrnYmrmrmiminZoboamiocmrmrmrmrodmrmomblZlZlZmHbBmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHndmKneaznfazazngmPmPazmRhZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZmbmbmomrmrmrmymrmrmroemimumEofohogmrmiminZoioamiojmrokomolonmrmbmblZlZlZmImImIbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmHndmKmKmLmLmKmKmKmKmMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmwmzmymimioomrmxmimimimiopmrmrmymroqmrmrmymrmrmrmrorosmrmbmblZlZmbmIbBmImIaaaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmrmrotminHmimymimFmimimioumrowovoyoxoymrmimimumimrozoAmrmbmblZlZmnmImHmImIaaaabBmHmIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHaamHmHmHmHmHmImImHmHmHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbnAmrmvmiminQoBmimioCmiohoDmymimioEoEoEoFmimioGmimroHoImrmsmblZlZmbmImHmHmIaaaaaamImIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmImImImHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbmomrmrmrmymrmrminZoJmioKoLmrmFmimimimimymimimimimrodmrmrmbmblZlZmbmHmHmHmImIaamHbBmHmIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHaaaaaaaamImImHmImHmHmImImIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmbmboMmrminHmroNmrmrmyoOmrmrmroPmrmrmrmrnZnZmioQmrmimFmrmbmblYoRoSmHmImImImIbBmHaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHaaaaaaaaaaaamImHmHmHmHmHmHmIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmbmbmbmrmimimumimimrmioTmrminZnZoUmioVmrmrmrmymrmroWmimrmemrlYoXoYbBmIbBmHmImHmImImHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZlZlZlZlZmbmbmrmrnIoZoamimymipamymimimimimimimymimumipbmymimimenDpcpdlXoSmHmImHmImImImHmImHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZlZlZlZlZmbmbmrmrmrmrmrmrpepamrmimimioCmimimrmFmimimimCmimimrmemrlYlYpfmHmImImImHmImHmIbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHaamHlZlZmombmboMmbmbmbmrmrpgmrmrmymrmymrmrmrmrnImimimrmxphmrmbmblZlZlZaamImHbBmHmImHmImHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZlZmbmbmlmbmbmbmbmrpimymimimrminLnInImrnImimimrmrmrmrmbmblZlZmbmHaaaamIaamImImIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZaalZlZmbpjmbmbmbmbmroOmrpkmimymimimimimymimimimrmbmboMmbmblZlZmbmIaaaaaaaamImIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbmbmbmomboMplmrmrmymrmrmrmrnHmrnHmimFmrmbmbmbmbmblZlZmbbBaaaaaaaamIaaaaaaaaaaaaaaaakVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZlZlZlZlZmbmbmbmbmbmboMmbmbmbmbmrmrmrmrmrmrmrmombmlmblZlZlZmbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakVaaaaaaaaaaaaaaaamHlZlZlZlZlZlZlZlZlZlZlZmbmbmbmbmbmbmomboMmbmbmboMmbpmmblZlZlZlZpnmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZaaaalZlZlZlZlZlZlZlZlZlZmbmbmbmbmbmbmbmbmbmbmbmblZlZlZlZlZpnaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHaaaaaamHmHmHaaaalZlZlZlZlZlZlZlZlZlZlZlZlZlZlZlZlZlZlZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHaaaamHaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHaaaamHmHmHaaaamHmHmHaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 29ec84c0b1d..b84a183c9af 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -550,12 +550,18 @@ var/list/ghostteleportlocs = list() name = "Suspicious Supply Depot" icon_state = "red" tele_proof = 1 + var/local_alarm = FALSE // Level 1: Local alarm tripped, bot spawned, red fire overlay activated var/called_backup = FALSE // Level 2: Remote alarm tripped. Bot may path through depot. Backup spawned. var/used_self_destruct = FALSE // Level 3: Self destruct activated. Depot will be destroyed shortly. + var/list/guards_spawned = list() var/used_lockdown = FALSE var/destroyed = FALSE + var/something_looted = FALSE + var/on_peaceful = FALSE + var/list/peaceful_visitors = list() + var/peace_betrayed = FALSE var/obj/structure/fusionreactor/reactor @@ -563,6 +569,9 @@ var/list/ghostteleportlocs = list() if(destroyed) icon_state = null invisibility = INVISIBILITY_MAXIMUM + else if(on_peaceful) + icon_state = "green" + invisibility = INVISIBILITY_LIGHTING else if(used_self_destruct) icon_state = "radiation" invisibility = INVISIBILITY_LIGHTING @@ -583,6 +592,11 @@ var/list/ghostteleportlocs = list() updateicon() /area/syndicate_depot/proc/increase_alert(var/reason) + if(on_peaceful) + peaceful_mode(FALSE) + peace_betrayed = TRUE + activate_self_destruct("Depot has been infiltrated by double-agents.", FALSE, null) + return if(!local_alarm) local_alarm(reason, FALSE) return @@ -593,6 +607,40 @@ var/list/ghostteleportlocs = list() activate_self_destruct(reason, FALSE, null) updateicon() + +/area/syndicate_depot/proc/locker_looted() + something_looted = TRUE + if(on_peaceful) + peaceful_mode(FALSE) + increase_alert("Nobody steals from the Syndicate!") + +/area/syndicate_depot/proc/peaceful_mode(var/newvalue) + if(newvalue) + for(var/mob/living/simple_animal/bot/medbot/syndicate/B in src) + qdel(B) + for(var/obj/structure/closet/secure_closet/syndicate/depot/L in src) + if(L.opened) + L.close() + if(!L.locked) + L.locked = 1 + L.req_access = list(access_syndicate_leader) + L.update_icon() + else + for(var/obj/machinery/door/airlock/A in src) + A.req_access_txt = "[access_syndicate_leader]" + on_peaceful = newvalue + if(newvalue) + announce_here("Depot Code WHITE","Depot access granted to visitors. Defenses deactivated. Any attempt to steal depot supplies will result in revocation of access and summary execution!") + else + announce_here("Depot Alert","Depot access revoked. Defenses active! Shoot all visitors on sight.") + message_admins("Syndicate Depot has been robbed by Syndicate agents! Involved parties:") + for(var/mob/M in peaceful_visitors) + if("syndicate" in M.faction) + M.faction -= "syndicate" + message_admins("- SYNDI DEPOT ROBBER: [ADMIN_FULLMONTY(M)]") + peaceful_visitors = list() + updateicon() + /area/syndicate_depot/proc/local_alarm(var/reason, var/silent) if(local_alarm) return @@ -605,8 +653,10 @@ var/list/ghostteleportlocs = list() possible_bot_spawns |= L if(possible_bot_spawns.len) var/obj/effect/landmark/S = pick(possible_bot_spawns) + new /obj/effect/portal(get_turf(S)) var/mob/living/simple_animal/bot/ed209/syndicate/B = new /mob/living/simple_animal/bot/ed209/syndicate(get_turf(S)) guards_spawned |= B + B.depotarea = src updateicon() @@ -618,7 +668,8 @@ var/list/ghostteleportlocs = list() announce_here("Depot Code RED", reason) for(var/obj/machinery/door/poddoor/P in airlocks) if(P.density && P.id_tag == "syndi_depot_lvl2" && !P.operating) - P.open() + spawn(0) + P.open() spawn(0) for(var/obj/effect/landmark/L in landmarks_list) if(L.name == "syndi_depot_backup") diff --git a/code/game/machinery/computer/depot.dm b/code/game/machinery/computer/depot.dm index f53ff993c32..724190e35d7 100644 --- a/code/game/machinery/computer/depot.dm +++ b/code/game/machinery/computer/depot.dm @@ -1,4 +1,8 @@ +#define DEPOT_VISITOR_START 1 +#define DEPOT_VISITOR_END 2 +#define DEPOT_VISITOR_ADD 3 + /obj/machinery/computer/syndicate_depot name = "depot door control computer" icon = 'icons/obj/computer.dmi' @@ -46,7 +50,7 @@ to_chat(user, "Access Denied.") return user.set_machine(src) - var/dat = get_menu() + var/dat = get_menu(user) user << browse(dat, "window=computer;size=575x450") onclose(user, "computer") return @@ -65,7 +69,7 @@ if(href_list["primary"]) primary(usr) if(href_list["secondary"]) - secondary(usr) + secondary(usr, text2num(href_list["secondary"])) add_fingerprint(usr) updateUsrDialog() return @@ -79,7 +83,7 @@ summon() return ..() -/obj/machinery/computer/syndicate_depot/proc/get_menu() +/obj/machinery/computer/syndicate_depot/proc/get_menu(var/mob/user) return {"Syndicate Depot Door Control Computer


Toggle Airlocks

Toggle Hidden Doors @@ -90,7 +94,7 @@ depotarea.toggle_door_locks(src) to_chat(user, "Door locks toggled.") -/obj/machinery/computer/syndicate_depot/proc/secondary(var/mob/user) +/obj/machinery/computer/syndicate_depot/proc/secondary(var/mob/user, var/subcommand) if(depotarea) depotarea.toggle_falsewalls(src) to_chat(user, "False walls toggled.") @@ -106,7 +110,7 @@ icon_screen = "explosive" req_access = list() -/obj/machinery/computer/syndicate_depot/selfdestruct/get_menu() +/obj/machinery/computer/syndicate_depot/selfdestruct/get_menu(var/mob/user) return {"Syndicate Depot Fission Reactor Control


Disable Containment Field
"} @@ -128,15 +132,24 @@ icon_screen = "syndishuttle" req_access = list() -/obj/machinery/computer/syndicate_depot/syndiecomms/get_menu() - return {"Syndicate Communications Relay
-

Contact Syndicate Command -
"} +/obj/machinery/computer/syndicate_depot/syndiecomms/get_menu(var/mob/user) + var/menu = "Syndicate Communications Relay
" + menu += "

Contact Syndicate Command" + if(depotarea.on_peaceful) + if(user in depotarea.peaceful_visitors) + menu += "

[user] is recognized as a friendly visitor to the depot." + else + menu += "

(SYNDIE AGENT) Request visitor access (in addition to existing visitors)" + if(check_rights(R_ADMIN, 0, user)) + menu += "

(ADMIN/DEBUG) End visit. Re-power defense grid." + else + menu += "

(SYNDIE AGENT) Request visitor access" + return menu /obj/machinery/computer/syndicate_depot/syndiecomms/primary(var/mob/user) if(activated) playsound(user, 'sound/machines/buzz-sigh.ogg', 50, 0) - to_chat(user, "ERROR: terminal already used.") + to_chat(user, "[src] is under security lockout.") return activated = TRUE if(user.mind && user.mind.special_role == SPECIAL_ROLE_TRAITOR) @@ -148,9 +161,48 @@ to_chat(user, "Message transmitted.") log_say("[key_name(user)] has made a Syndicate announcement from the depot: [input]") else - to_chat(user, "ERROR: unauthorized access detected.") + to_chat(user, "[src] requires authentication with syndicate codewords, which you do not know.") raise_alert("Detected unauthorized access to [src]!") +/obj/machinery/computer/syndicate_depot/syndiecomms/secondary(var/mob/user, var/subcommand) + if(activated) + playsound(user, 'sound/machines/buzz-sigh.ogg', 50, 0) + to_chat(user, "[src] is under security lockout.") + return + if(depotarea) + if(depotarea.local_alarm || depotarea.called_backup || depotarea.used_self_destruct) + to_chat(user, "[src]: Request denied. Depot under security alert. No visitors permitted.") + else if(depotarea.on_peaceful) + if(subcommand == DEPOT_VISITOR_END) + if(check_rights(R_ADMIN, 0, user)) + depotarea.peaceful_mode(FALSE) + else if (subcommand == DEPOT_VISITOR_ADD) + if(user.mind && user.mind.special_role == SPECIAL_ROLE_TRAITOR) + if(user in depotarea.peaceful_visitors) + to_chat(user, "[src]: [user], you are already recognized as a depot visitor.") + else + grant_syndie_faction(user) + else + to_chat(user, "[src]: Request denied. You are not recognized as an Agent of the Syndicate.") + else if(subcommand == DEPOT_VISITOR_START) + if(depotarea.something_looted) + to_chat(user, "[src]: Request denied. You have already stolen from us, and NOW you want to claim you are a friend? Die, scum!") + raise_alert("Thieving con-men detected!") + else if(user.mind && user.mind.special_role == SPECIAL_ROLE_TRAITOR) + grant_syndie_faction(user) + depotarea.peaceful_mode(TRUE) + else + to_chat(user, "[src]: Request denied. You are not recognized as an Agent of the Syndicate.") + else + to_chat(user, "[src]: Unrecognized subcommand: [subcommand]") + else + to_chat(user, "[src]: Request denied. Unable to uplink to depot AI core.") + +/obj/machinery/computer/syndicate_depot/syndiecomms/proc/grant_syndie_faction(var/mob/user) + user.faction += "syndicate" + depotarea.peaceful_visitors += user + to_chat(user, "[src]: Depot access granted for: [user]") + /obj/machinery/computer/syndicate_depot/syndiecomms/power_change() . = ..() if(!activated && (stat & NOPOWER)) @@ -169,6 +221,8 @@ findbeacon() /obj/machinery/computer/syndicate_depot/teleporter/proc/findbeacon() + if(mybeacon) + return TRUE for(var/obj/machinery/bluespace_beacon/syndicate/B in myArea) mybeacon = B playsound(loc, sound_yes, 50, 0) @@ -176,12 +230,12 @@ playsound(loc, sound_no, 50, 0) return FALSE -/obj/machinery/computer/syndicate_depot/teleporter/get_menu() +/obj/machinery/computer/syndicate_depot/teleporter/get_menu(var/mob/user) var/menutext = "Syndicate Teleporter Control
" + findbeacon() if(mybeacon) menutext += {"

Syndicate Teleporter Beacon: [mybeacon.enabled ? "ON" : "OFF"]
"} else - findbeacon() menutext += {"

Status: Reconnecting to beacon..."} return menutext diff --git a/code/game/objects/effects/spawners/random_spawners.dm b/code/game/objects/effects/spawners/random_spawners.dm index 3e6cdd45b8e..6beb460b3b2 100644 --- a/code/game/objects/effects/spawners/random_spawners.dm +++ b/code/game/objects/effects/spawners/random_spawners.dm @@ -19,6 +19,9 @@ if(!T) log_runtime(EXCEPTION("Spawner placed in nullspace!"), src) return + spawn_item(T) + +/obj/effect/spawner/random_spawners/proc/spawn_item(var/turf/T) if(!prob(spawn_nothing_percentage)) var/thing_to_place = pickweight(result) if(ispath(thing_to_place, /turf)) @@ -112,11 +115,13 @@ /obj/effect/decal/cleanable/fungus = 7) -// Used in depot on z6 + +// z6 DEPOT SPAWNERS /obj/effect/spawner/random_spawners/syndicate spawn_nothing_percentage = 50 + // Turrets /obj/effect/spawner/random_spawners/syndicate/turret @@ -136,6 +141,7 @@ // Mobs + /obj/effect/spawner/random_spawners/syndicate/mob name = "50pc melee syndimob" icon = 'icons/mob/animal.dmi' @@ -145,6 +151,7 @@ /mob/living/simple_animal/hostile/syndicate/melee/autogib = 1 ) + // Traps /obj/effect/spawner/random_spawners/syndicate/trap @@ -176,16 +183,6 @@ /obj/effect/mine/explosive = 1 ) -/obj/effect/spawner/random_spawners/syndicate/trap/toolbox - name = "50pc trap toolbox" - icon = 'icons/obj/storage.dmi' - icon_state = "syndicate" - spawn_nothing_percentage = 0 - result = list( - /obj/item/weapon/storage/toolbox/syndicate = 1, - /obj/item/weapon/storage/toolbox/syndicate/trapped = 1 - ) - /obj/effect/spawner/random_spawners/syndicate/trap/documents icon = 'icons/obj/bureaucracy.dmi' icon_state = "folder_syellow" @@ -195,173 +192,77 @@ /obj/item/weapon/folder/syndicate/yellow_trapped = 1 ) + + // Loot /obj/effect/spawner/random_spawners/syndicate/loot - -/obj/effect/spawner/random_spawners/syndicate/loot/spacepod - name = "50pc loot spacepod" - icon = 'icons/goonstation/48x48/pods.dmi' - icon_state = "pod_synd" + name = "common loot" + icon = 'icons/misc/debug_rebuild.dmi' + icon_state = "1" result = list( - /obj/spacepod/syndi = 1, - /obj/spacepod/syndi/unlocked = 1 + /obj/item/weapon/storage/toolbox/syndicate = 1, + /obj/item/weapon/storage/toolbox/syndicate/trapped = 1, + /obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate = 1, + /obj/item/stack/sheet/mineral/plasma = 1, + /obj/item/stack/sheet/mineral/silver = 1, + /obj/item/stack/sheet/mineral/gold = 1, ) -/obj/effect/spawner/random_spawners/syndicate/loot/radiokey - name = "50pc loot key" - icon = 'icons/obj/radio.dmi' - icon_state = "cypherkey" - result = list( - /obj/item/device/radio/headset/syndicate = 1, - /obj/item/device/encryptionkey/syndicate = 1 - ) +/obj/effect/spawner/random_spawners/syndicate/loot/spawn_item(var/turf/T) + if(!prob(spawn_nothing_percentage)) + var/thing_to_place = pickweight(result) + if(ispath(thing_to_place, /turf)) + T.ChangeTurf(thing_to_place) + else + var/obj/O = new thing_to_place(T) + var/obj/structure/closet/secure_closet/syndicate/depot/E = new /obj/structure/closet/secure_closet/syndicate/depot(T) + O.forceMove(E) + qdel(src) - -/obj/effect/spawner/random_spawners/syndicate/loot/jammer - name = "50pc loot jammer" - icon = 'icons/obj/device.dmi' - icon_state = "jammer" - result = list( - /obj/item/device/jammer = 1 - ) - -/obj/effect/spawner/random_spawners/syndicate/loot/spacesuit - name = "50pc loot spacesuit kit" - icon = 'icons/obj/storage.dmi' - icon_state = "box_of_doom" +/obj/effect/spawner/random_spawners/syndicate/loot/level2 + name = "rare loot" + icon_state = "2" result = list( /obj/item/weapon/storage/box/syndie_kit/space = 1, - /obj/item/weapon/storage/box/syndie_kit/hardsuit = 1 + /obj/item/weapon/storage/box/syndie_kit/hardsuit = 1, + /obj/item/clothing/suit/armor/vest/combat = 1, + /obj/item/weapon/gun/projectile/automatic/pistol = 1, + /obj/item/ammo_box/magazine/m10mm = 1, + /obj/item/weapon/storage/pill_bottle/happy = 1, + /obj/item/weapon/storage/pill_bottle/zoom = 1, + /obj/item/weapon/storage/pill_bottle/random_drug_bottle = 2, + /obj/item/clothing/shoes/syndigaloshes = 1, + /obj/item/weapon/rcd_ammo = 1, ) - -/obj/effect/spawner/random_spawners/syndicate/loot/thermals - name = "50pc loot thermals" - icon = 'icons/obj/clothing/glasses.dmi' - icon_state = "thermal" - result = list( - /obj/item/clothing/glasses/thermal = 1 - ) - -/obj/effect/spawner/random_spawners/syndicate/loot/armor - name = "50pc loot armor" - icon = 'icons/obj/clothing/suits.dmi' - icon_state = "armor-combat" - result = list( - /obj/item/clothing/suit/armor/vest/combat = 1 - ) - -/obj/effect/spawner/random_spawners/syndicate/loot/cigs - name = "50pc loot cigs" - icon = 'icons/obj/cigarettes.dmi' - icon_state = "syndiepacket" - result = list( - /obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate = 1 - ) - -/obj/effect/spawner/random_spawners/syndicate/loot/pistol - name = "50pc loot stechkin pistol" - icon = 'icons/obj/guns/projectile.dmi' - icon_state = "pistol" - result = list( - /obj/item/weapon/gun/projectile/automatic/pistol = 1 - ) - -/obj/effect/spawner/random_spawners/syndicate/loot/ammo10mm - name = "50pc loot 10mm ammo" - - icon_state = "9x19p" - result = list( - /obj/item/ammo_box/magazine/m10mm = 1 - ) - -/obj/effect/spawner/random_spawners/syndicate/loot/m90 - name = "50pc loot m90 auto carbine" - icon = 'icons/obj/guns/projectile.dmi' - icon_state = "m90" - result = list( - /obj/item/weapon/gun/projectile/automatic/m90 = 1 - ) - -/obj/effect/spawner/random_spawners/syndicate/loot/m90ammo - name = "50pc loot ammo for m90" - icon = 'icons/obj/ammo.dmi' - icon_state = "a762-50" - result = list( - /obj/item/ammo_box/magazine/m556 = 1 - ) - -/obj/effect/spawner/random_spawners/syndicate/loot/camoprojector - name = "50pc loot camo projector" - icon = 'icons/obj/device.dmi' - icon_state = "shield0" - result = list( - /obj/item/device/chameleon = 1 - ) - -/obj/effect/spawner/random_spawners/syndicate/loot/medicalkit - name = "medkit 50pc tactical" - icon = 'icons/obj/storage.dmi' - icon_state = "bezerk" - spawn_nothing_percentage = 0 +/obj/effect/spawner/random_spawners/syndicate/loot/level3 + name = "officer loot" + icon_state = "3" result = list( + /obj/item/device/jammer = 1, /obj/item/weapon/storage/firstaid = 1, - /obj/item/weapon/storage/firstaid/tactical = 1 - ) - -/obj/effect/spawner/random_spawners/syndicate/loot/cyborg - name = "cyborg 50pc borgupgrade" - icon = 'icons/obj/module.dmi' - icon_state = "cyborg_upgrade3" - result = list( + /obj/item/weapon/storage/firstaid/tactical = 1, /obj/item/weapon/stock_parts/cell/bluespace = 1, /obj/item/borg/upgrade/vtec = 1, /obj/item/borg/upgrade/syndicate = 1, - /obj/item/borg/upgrade/selfrepair = 1 - ) - -/obj/effect/spawner/random_spawners/syndicate/loot/drugs - name = "medical 50pc drugs" - icon = 'icons/obj/chemical.dmi' - icon_state = "pill4" - result = list( - /obj/item/weapon/storage/pill_bottle/happy = 1, - /obj/item/weapon/storage/pill_bottle/zoom = 1, - /obj/item/weapon/storage/pill_bottle/random_drug_bottle = 3 - ) - -/obj/effect/spawner/random_spawners/syndicate/loot/minerals - name = "minerals 75pc" - icon = 'icons/obj/items.dmi' - icon_state = "sheet-gold" - spawn_nothing_percentage = 25 - result = list( + /obj/item/borg/upgrade/selfrepair = 1, /obj/item/stack/sheet/mineral/diamond = 1, /obj/item/stack/sheet/mineral/uranium = 1, - /obj/item/stack/sheet/mineral/plasma = 1, - /obj/item/stack/sheet/mineral/silver = 1, - /obj/item/stack/sheet/mineral/gold = 1 + /obj/item/weapon/rcd = 1, ) - -/obj/effect/spawner/random_spawners/syndicate/loot/shoes - name = "shoes 50pc" - icon = 'icons/obj/clothing/shoes.dmi' - icon_state = "brown" - spawn_nothing_percentage = 50 +/obj/effect/spawner/random_spawners/syndicate/loot/level4 + name = "armory loot" + icon_state = "4" result = list( - /obj/item/clothing/shoes/syndigaloshes = 1 + /obj/item/clothing/glasses/thermal = 1, + /obj/item/weapon/gun/projectile/automatic/m90 = 1, + /obj/item/ammo_box/magazine/m556 = 1, + /obj/item/device/chameleon = 1, + /obj/item/device/radio/headset/syndicate = 1, ) -/obj/effect/spawner/random_spawners/syndicate/loot/rcd - name = "rcd 50pc" - icon = 'icons/obj/tools.dmi' - icon_state = "rcd" - result = list( - /obj/item/weapon/rcd_ammo = 1, - /obj/item/weapon/rcd = 1 - ) -// Key layout features +// Layout-affecting spawns /obj/effect/spawner/random_spawners/syndicate/layout color = "#0000FF" @@ -376,3 +277,12 @@ /turf/simulated/wall/r_wall = 1, /obj/structure/falsewall/reinforced = 1 ) + +/obj/effect/spawner/random_spawners/syndicate/layout/spacepod + name = "50pc loot spacepod" + icon = 'icons/goonstation/48x48/pods.dmi' + icon_state = "pod_synd" + result = list( + /obj/spacepod/syndi = 1, + /obj/spacepod/syndi/unlocked = 1 + ) \ No newline at end of file diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm index 11da88ae680..111ad535abe 100644 --- a/code/game/objects/items/weapons/teleportation.dm +++ b/code/game/objects/items/weapons/teleportation.dm @@ -107,9 +107,11 @@ Frequency: /obj/item/weapon/hand_tele/attack_self(mob/user as mob) var/turf/current_location = get_turf(user)//What turf is the user on? - if(!current_location||!is_teleport_allowed(current_location.z))//If turf was not found or they're somewhere teleproof + var/area/current_area = get_area(user) + if(!current_location||!is_teleport_allowed(current_location.z) || current_area.tele_proof)//If turf was not found or they're somewhere teleproof to_chat(user, "\The [src] is malfunctioning.") return + var/list/L = list( ) for(var/obj/machinery/computer/teleporter/com in world) if(com.target) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 4c8a2528b1e..9c8ae067265 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -121,26 +121,25 @@ if(!(opened ? close() : open())) to_chat(user, "It won't budge!") -// this should probably use dump_contents() /obj/structure/closet/ex_act(severity) switch(severity) if(1) for(var/atom/movable/A in src)//pulls everything out of the locker and hits it with an explosion - A.forceMove(loc) A.ex_act(severity++) + dump_contents() qdel(src) if(2) if(prob(50)) for(var/atom/movable/A in src) - A.forceMove(loc) A.ex_act(severity++) + dump_contents() new /obj/item/stack/sheet/metal(loc) qdel(src) if(3) if(prob(5)) for(var/atom/movable/A in src) - A.forceMove(loc) A.ex_act(severity++) + dump_contents() new /obj/item/stack/sheet/metal(loc) qdel(src) @@ -149,23 +148,20 @@ if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) health -= Proj.damage if(health <= 0) - for(var/atom/movable/A in src) - A.forceMove(loc) + dump_contents() qdel(src) /obj/structure/closet/attack_animal(mob/living/simple_animal/user) if(user.environment_smash) user.do_attack_animation(src) visible_message("[user] destroys the [src].") - for(var/atom/movable/A in src) - A.forceMove(loc) + dump_contents() qdel(src) // this should probably use dump_contents() /obj/structure/closet/blob_act() if(prob(75)) - for(var/atom/movable/A in src) - A.forceMove(loc) + dump_contents() qdel(src) /obj/structure/closet/attackby(obj/item/weapon/W, mob/user, params) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/depot.dm b/code/game/objects/structures/crates_lockers/closets/secure/depot.dm new file mode 100644 index 00000000000..485bbaa899c --- /dev/null +++ b/code/game/objects/structures/crates_lockers/closets/secure/depot.dm @@ -0,0 +1,39 @@ + +/obj/structure/closet/secure_closet/syndicate/depot + name = "depot supply closet" + desc = "" + anchored = 1 + health = 200 + req_access = list() + +/obj/structure/closet/secure_closet/syndicate/depot/emag_act() + . = ..() + loot_pickup() + +/obj/structure/closet/secure_closet/syndicate/depot/open() + . = ..() + if(opened) + loot_pickup() + +/obj/structure/closet/secure_closet/syndicate/depot/dump_contents() + loot_pickup() + . = ..() + +/obj/structure/closet/secure_closet/syndicate/depot/proc/loot_pickup() + var/area/syndicate_depot/depotarea = areaMaster + if(depotarea) + depotarea.locker_looted() + +/obj/structure/closet/secure_closet/syndicate/depot/attack_animal(mob/M) + if(isanimal(M) && "syndicate" in M.faction) + to_chat(M, "The [src] resists your attack!") + return + return ..(M) + +/obj/structure/closet/secure_closet/syndicate/depot/emp_act(severity) + return + +/obj/structure/closet/secure_closet/syndicate/depot/togglelock(mob/user) + . = ..() + if(!locked) + loot_pickup() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/decoy/decoy.dm b/code/modules/mob/living/silicon/decoy/decoy.dm index bbbfe19dadb..c0b79d13367 100644 --- a/code/modules/mob/living/silicon/decoy/decoy.dm +++ b/code/modules/mob/living/silicon/decoy/decoy.dm @@ -9,4 +9,53 @@ src.icon = 'icons/mob/AI.dmi' src.icon_state = "ai" src.anchored = 1 - src.canmove = 0 \ No newline at end of file + src.canmove = 0 + + +/mob/living/silicon/decoy/syndicate + faction = list("syndicate") + name = "R.O.D.G.E.R" + desc = "Red Operations, Depot General Emission Regulator" + icon_state = "ai-magma" + +/mob/living/silicon/decoy/syndicate/New() + . = ..() + icon_state = "ai-magma" + + +/mob/living/silicon/decoy/syndicate/depot + var/exploded = FALSE + +/mob/living/silicon/decoy/syndicate/depot/proc/explode() + if(!exploded) + exploded = TRUE + raise_alert() + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(3, 1, src) + s.start() + new /obj/effect/decal/cleanable/blood/oil(loc) + qdel(src) + +/mob/living/silicon/decoy/syndicate/depot/proc/raise_alert() + var/area/syndicate_depot/depotarea = get_area(src) // Cannot use myArea or areaMaster as neither will be defined for this mob type + if(depotarea) + depotarea.increase_alert("AI Unit Offline") + else + say("Connection failure!") + +/mob/living/silicon/decoy/syndicate/depot/death(var/pass) + . = ..(pass) + explode() + +/mob/living/silicon/decoy/syndicate/depot/adjustBruteLoss(var/dmg) + health = health - dmg + if(health <= 0) + explode() + +/mob/living/silicon/decoy/syndicate/depot/adjustFireLoss(var/dmg) + health = health - dmg + if(health <= 0) + explode() + +/mob/living/silicon/decoy/syndicate/depot/ex_act(var/severity) + adjustBruteLoss(250) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/bot/syndicate.dm b/code/modules/mob/living/simple_animal/bot/syndicate.dm index d7d0bdba576..2788c359894 100644 --- a/code/modules/mob/living/simple_animal/bot/syndicate.dm +++ b/code/modules/mob/living/simple_animal/bot/syndicate.dm @@ -29,7 +29,7 @@ /mob/living/simple_animal/bot/ed209/syndicate/New() ..() if(access_card) - access_card.access = list(access_syndicate) + access_card.access = list(access_syndicate, access_syndicate_leader) set_weapon() update_icon() spawn_turf = get_turf(src) diff --git a/paradise.dme b/paradise.dme index 6a447cb6ba6..6a81620c6d4 100644 --- a/paradise.dme +++ b/paradise.dme @@ -984,6 +984,7 @@ #include "code\game\objects\structures\crates_lockers\closets\secure\bar.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\cargo.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\chaplain.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\depot.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\engineering.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\freezer.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\guncabinet.dm"