From e6911e7c5594cf95fac8ece4f71622e74221378b Mon Sep 17 00:00:00 2001 From: Kyep Date: Fri, 5 Jan 2018 22:38:40 -0800 Subject: [PATCH] better alert levels, more computer functionality, less cheese, powergrids, etc - Adds 'toggle falsewall' functionality to door control computer TESTED - Adds teleport control computer with 'toggle beacon' functionality TESTED - Converts structure/fusionreactor to use obj_integrity by request of uraniummeltdown TESTED - Makes bluespace_beacon a permanent map feature (can be turned on/off with agent ID) rather than a random spawn TESTED - Deletes all other invulnerable structures (e.g comms structures) from the map TESTED - Makes depot use BLUE/RED/DELTA alert level system with appropriate lighting TESTED - Refactors raise_alert so it always says WHY the alert was raised TESTED - Gives syndicate officers unique names TESTED - Adds area powergrids - main grid can be turned off to allow easy crowbarring of doors, external lights/etc are on different network from internal grid TESTED - Adds powergrid alarm - syndie commms computer losing power increases alert level TESTED - Sentry bot now raises alert level if destroyed, or cheesed TESTED - Overloaded fusion reactor now emits massive AoE fire effect to scare the pants off players TESTED - Syndie computer consoles now use varied icons, instead of all the same icons TESTED - Depot now contains many contraband posters TESTED - Added more turrets and mobs to the SE area TESTED --- _maps/map_files/cyberiad/z6.dmm | 263 ++++++++++-------- code/game/area/Space Station 13 areas.dm | 83 ++++-- code/game/machinery/Beacon.dm | 44 ++- code/game/machinery/computer/depot.dm | 107 +++++-- .../effects/spawners/random_spawners.dm | 8 - .../overload.dm => structures/depot.dm} | 39 +-- .../mob/living/simple_animal/bot/syndicate.dm | 19 +- .../living/simple_animal/hostile/syndicate.dm | 9 +- paradise.dme | 2 +- 9 files changed, 355 insertions(+), 219 deletions(-) rename code/game/objects/{effects/overload.dm => structures/depot.dm} (70%) diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm index 80592a01c66..db69151b649 100644 --- a/_maps/map_files/cyberiad/z6.dmm +++ b/_maps/map_files/cyberiad/z6.dmm @@ -647,14 +647,14 @@ "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) -"mz" = (/turf/simulated/floor/plating/airless,/area/syndicate_depot) -"mA" = (/obj/effect/spawner/random_spawners/blood_often,/turf/simulated/floor/plating/airless,/area/syndicate_depot) -"mB" = (/obj/structure/sign/poster/contraband/syndicate_recruitment,/turf/simulated/wall/r_wall,/area/syndicate_depot) -"mC" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/red,/obj/item/weapon/bedsheet/red,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"mD" = (/obj/effect/spawner/random_spawners/syndicate/turret,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"mz" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"mA" = (/turf/simulated/floor/plating/airless,/area/syndicate_depot) +"mB" = (/obj/effect/spawner/random_spawners/blood_often,/turf/simulated/floor/plating/airless,/area/syndicate_depot) +"mC" = (/obj/structure/sign/poster/contraband/syndicate_recruitment,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"mD" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/red,/obj/item/weapon/bedsheet/red,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) "mE" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"mF" = (/obj/effect/spawner/random_spawners/blood_often,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plating/airless,/area/syndicate_depot) -"mG" = (/obj/structure/lattice,/obj/effect/spawner/random_spawners/syndicate/turret/external,/turf/simulated/floor/plating/airless,/area/syndicate_depot) +"mF" = (/obj/effect/spawner/random_spawners/syndicate/turret,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"mG" = (/obj/structure/sign/poster/contraband/lamarr,/turf/simulated/wall/r_wall,/area/syndicate_depot) "mH" = (/turf/simulated/mineral,/area/space) "mI" = (/turf/simulated/floor/plating/airless/asteroid,/area/space) "mJ" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/space) @@ -666,10 +666,10 @@ "mP" = (/obj/structure/closet/crate,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/turf/simulated/floor/plasteel/airless,/area/space) "mQ" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/ore/bananium,/obj/item/weapon/grenade/bananade,/turf/simulated/floor/plasteel/airless,/area/space) "mR" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (EAST)"; icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/space) -"mS" = (/obj/item/stack/sheet/metal{layer = 4.1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"mS" = (/obj/effect/spawner/random_spawners/blood_often,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plating/airless,/area/syndicate_depot) "mT" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless/asteroid,/area/space) "mU" = (/obj/item/weapon/ore/bananium,/turf/simulated/floor/plasteel/airless,/area/space) -"mV" = (/obj/effect/decal/cleanable/blood,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"mV" = (/obj/structure/lattice,/obj/effect/spawner/random_spawners/syndicate/turret/external,/turf/simulated/floor/plating/airless,/area/syndicate_depot) "mW" = (/obj/structure/computerframe/HONKputer,/turf/simulated/floor/plasteel/airless,/area/space) "mX" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/space) "mY" = (/obj/effect/landmark/corpse/clown{name = "Clown Pilot"},/turf/simulated/floor/plasteel/airless,/area/space) @@ -681,11 +681,11 @@ "ne" = (/turf/simulated/floor/plasteel/airless,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/space) "nf" = (/obj/item/weapon/pickaxe,/turf/simulated/floor/plasteel/airless,/area/space) "ng" = (/obj/structure/closet/crate,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/turf/simulated/floor/plasteel/airless,/area/space) -"nh" = (/obj/item/stack/sheet/metal{layer = 4.1},/obj/effect/spawner/random_spawners/syndicate/trap/mine,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"ni" = (/obj/item/flag/chameleon{icon_state = "syndiflag"; name = "Syndicate Flag"; used = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nj" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nh" = (/obj/item/stack/sheet/metal{layer = 4.1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"ni" = (/obj/effect/decal/cleanable/blood,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nj" = (/obj/item/stack/sheet/metal{layer = 4.1},/obj/effect/spawner/random_spawners/syndicate/trap/mine,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) "nk" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (NORTH)"; icon_state = "heater"; dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/space) -"nl" = (/obj/structure/sign/poster/contraband/syndicate_pistol,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"nl" = (/obj/item/flag/chameleon{icon_state = "syndiflag"; name = "Syndicate Flag"; used = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) "nm" = (/obj/item/weapon/shard,/turf/simulated/floor/plasteel/airless,/area/space) "nn" = (/obj/item/weapon/broken_bottle,/turf/simulated/floor/plasteel/airless,/area/space) "no" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area/space) @@ -696,93 +696,112 @@ "nt" = (/obj/item/weapon/shard,/turf/simulated/floor/plating/airless/asteroid,/area/space) "nu" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/space) "nv" = (/obj/effect/landmark/corpse/mime{name = "Mime Pilot"},/turf/simulated/floor/plasteel/airless,/area/space) -"nw" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nx" = (/obj/machinery/light{dir = 1; on = 1},/obj/item/flag/chameleon{icon_state = "syndiflag"; name = "Syndicate Flag"; used = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"ny" = (/obj/effect/decal/warning_stripes/red/hollow,/obj/effect/spawner/random_spawners/syndicate/layout/telebeacon,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nz" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) -"nA" = (/obj/machinery/navbeacon/invisible{codes_txt = "patrol;next_patrol=SDSW"; invisibility = 100; location = "SDNW"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) -"nB" = (/obj/effect/spawner/random_spawners/blood_often,/obj/machinery/light/small,/turf/simulated/floor/plating/airless,/area/syndicate_depot) -"nC" = (/obj/machinery/light/small,/turf/simulated/floor/plating/airless,/area/syndicate_depot) -"nD" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nE" = (/obj/machinery/telepad,/obj/effect/decal/warning_stripes/blue/hollow,/turf/simulated/floor/plasteel{icon_state = "dark"},/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/structure/table,/obj/effect/spawner/random_spawners/syndicate/loot/drugs,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nJ" = (/obj/effect/decal/warning_stripes/green/hollow,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nw" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nx" = (/obj/machinery/computer/syndicate_depot/teleporter,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"ny" = (/obj/machinery/light{dir = 1; on = 1},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nz" = (/obj/machinery/bluespace_beacon/syndicate,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nA" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) +"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" = (/turf/space,/area/syndicate_depot/outer) "nL" = (/obj/item/weapon/lighter/zippo/black,/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) "nM" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/loot/medicalkit,/turf/simulated/floor/plasteel{icon_state = "dark"},/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/contraband/hacking_guide,/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 = 1; on = 1},/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nV" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nW" = (/obj/structure/dispenser,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nX" = (/obj/item/weapon/storage/box/donkpockets,/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nY" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"nZ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/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/sign/poster/official/ion_rifle,/turf/simulated/wall/r_wall,/area/syndicate_depot) -"of" = (/obj/effect/decal/warning_stripes/red,/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/fusionreactor,/turf/simulated/floor/syndicate,/area/syndicate_depot) -"og" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oh" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/syndicake,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oi" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/loot/minerals,/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" = (/turf/simulated/floor/syndicate,/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,/obj/effect/spawner/random_spawners/syndicate/loot/jammer,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"op" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/trap/documents,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oq" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/turf/simulated/floor/mineral/silver,/area/syndicate_depot) -"or" = (/obj/machinery/computer/syndicate_depot/selfdestruct,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"os" = (/obj/machinery/turretid/syndicate{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"ot" = (/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) -"ou" = (/obj/structure/rack,/obj/effect/spawner/random_spawners/syndicate/loot/m90,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"ov" = (/obj/structure/rack,/obj/effect/spawner/random_spawners/syndicate/loot/thermals,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"ow" = (/obj/item/mounted/mirror{anchored = 1},/turf/simulated/wall/r_wall,/area/syndicate_depot) -"ox" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 12; pixel_y = 0},/turf/simulated/floor/mineral/plasma,/area/syndicate_depot) -"oy" = (/obj/structure{icon = 'icons/obj/stationobjs.dmi'; icon_state = "broadcaster"; name = "syndicate comms transmitter"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oz" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oA" = (/obj/structure{icon = 'icons/obj/stationobjs.dmi'; icon_state = "relay"; name = "syndicate frequency relay"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oB" = (/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oC" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oD" = (/obj/structure/toilet{dir = 8},/turf/simulated/floor/mineral/silver,/area/syndicate_depot) -"oE" = (/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) -"oF" = (/obj/structure/closet/crate,/obj/effect/spawner/random_spawners/syndicate/trap/toolbox,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oG" = (/obj/structure/closet/crate,/obj/effect/spawner/random_spawners/syndicate/loot/radiokey,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oH" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) -"oI" = (/obj/structure/closet/crate,/obj/effect/spawner/random_spawners/syndicate/loot/pistol,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oJ" = (/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) -"oK" = (/obj/effect/spawner/random_spawners/blood_maybe,/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot) -"oL" = (/obj/machinery/light{dir = 1; on = 1},/obj/effect/spawner/random_spawners/syndicate/turret,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oM" = (/obj/structure/closet/crate,/obj/effect/spawner/random_spawners/syndicate/loot/camoprojector,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oN" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/loot/cyborg,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oO" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oP" = (/obj/item/candle,/obj/structure/table,/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot) -"oQ" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot) -"oR" = (/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) -"oS" = (/obj/machinery/computer/syndicate_depot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oT" = (/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) -"oU" = (/obj/machinery/door/poddoor{id_tag = "syndi_depot_rear"; name = "Sealed Doors"; protected = 0},/turf/simulated/floor/plating/airless,/area/syndicate_depot) -"oV" = (/obj/structure/falsewall,/turf/simulated/floor/plating/airless,/area/syndicate_depot) -"oW" = (/turf/simulated/wall,/area/syndicate_depot) -"oX" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/loot/cigs,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oY" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/trap/toolbox,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"oZ" = (/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) -"pa" = (/obj/structure/closet/crate,/obj/effect/spawner/random_spawners/syndicate/loot/minerals,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pb" = (/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) -"pc" = (/obj/machinery/navbeacon/invisible{codes_txt = "patrol;next_patrol=SDSE"; invisibility = 100; location = "SDSW"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) -"pd" = (/obj/machinery/light/small{dir = 8},/obj/effect/spawner/random_spawners/syndicate/turret,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"pe" = (/obj/machinery/navbeacon/invisible{codes_txt = "patrol;next_patrol=SDNE"; invisibility = 100; location = "SDSE"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) +"nN" = (/obj/structure/sign/poster/contraband/lusty_xenomorph,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"nO" = (/obj/effect/spawner/random_spawners/syndicate/loot/spacepod{icon_state = "pod_civ"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nP" = (/obj/structure/rack,/obj/effect/spawner/random_spawners/syndicate/loot/spacesuit,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nQ" = (/obj/machinery/light{dir = 1; on = 1},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nR" = (/obj/structure/sign/poster/official/high_class_martini,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"nS" = (/obj/machinery/computer/syndicate_depot/syndiecomms,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nT" = (/obj/structure/table,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nU" = (/obj/structure/closet/crate,/obj/effect/spawner/random_spawners/syndicate/loot/ammo10mm,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nV" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nW" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nX" = (/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) +"nY" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"nZ" = (/obj/structure/dispenser,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oa" = (/obj/structure/sign/poster/official/air1,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"ob" = (/obj/item/weapon/storage/box/donkpockets,/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oc" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"od" = (/obj/structure/sign/poster/contraband/tools,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"oe" = (/obj/structure/sign/poster/contraband/hacking_guide,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"of" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"og" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oh" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/trap/pizzabomb,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oi" = (/obj/machinery/vending/syndisnack,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oj" = (/obj/machinery/door/airlock/silver,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"ok" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/trap/documents,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"ol" = (/obj/machinery/computer/syndicate_depot/selfdestruct,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"om" = (/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) +"on" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oo" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/syndicake,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"op" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/loot/minerals,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oq" = (/obj/machinery/vending/syndicigs,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"or" = (/turf/simulated/floor/mineral/silver,/area/syndicate_depot) +"os" = (/obj/machinery/door/airlock/plasma{welded = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"ot" = (/turf/simulated/floor/mineral/plasma,/area/syndicate_depot) +"ou" = (/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) +"ov" = (/obj/structure/cable,/obj/machinery/power/terminal,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"ow" = (/obj/structure/sign/poster/contraband/energy_swords,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"ox" = (/obj/effect/spawner/random_spawners/syndicate/mob,/turf/simulated/floor/mineral/plasma,/area/syndicate_depot) +"oy" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/turf/simulated/floor/mineral/silver,/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/item/mounted/mirror{anchored = 1},/turf/simulated/wall/r_wall,/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/official/state_laws,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oI" = (/obj/structure/sign/poster/contraband/missing_gloves,/turf/simulated/wall/r_wall,/area/syndicate_depot) +"oJ" = (/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oK" = (/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) +"oL" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oM" = (/obj/structure/sign/poster/contraband/revolver,/turf/simulated/wall/r_wall,/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/recharge_station,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"pd" = (/obj/item/candle,/obj/structure/table,/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot) +"pe" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot) +"pf" = (/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) +"pg" = (/obj/machinery/computer/syndicate_depot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"ph" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"pi" = (/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) +"pj" = (/obj/machinery/door/poddoor{id_tag = "syndi_depot_rear"; name = "Sealed Doors"; protected = 0},/turf/simulated/floor/plating/airless,/area/syndicate_depot) +"pk" = (/obj/structure/falsewall,/turf/simulated/floor/plating/airless,/area/syndicate_depot) +"pl" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"pm" = (/turf/simulated/wall,/area/syndicate_depot) +"pn" = (/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) +"po" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/loot/cigs,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"pp" = (/obj/structure/table,/obj/effect/spawner/random_spawners/syndicate/trap/toolbox,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"pq" = (/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) +"pr" = (/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) +"ps" = (/obj/structure/closet/crate,/obj/effect/spawner/random_spawners/syndicate/loot/minerals,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"pt" = (/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) +"pu" = (/obj/machinery/navbeacon/invisible{codes_txt = "patrol;next_patrol=SDSE"; invisibility = 100; location = "SDSW"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) +"pv" = (/obj/machinery/light/small{dir = 8},/obj/effect/spawner/random_spawners/syndicate/turret,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"pw" = (/obj/machinery/power/apc/noalarm{dir = 4; pixel_x = 24},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/syndicate_depot/outer) +"px" = (/obj/machinery/navbeacon/invisible{codes_txt = "patrol;next_patrol=SDNE"; invisibility = 100; location = "SDSE"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -994,31 +1013,31 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvcvcvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakVaaaaaaaaaaaaaamHmHmnmfmfmfmfmfmfmfmgmcmnlZmbmbmombmpmbmbmbmbmbmpmbmombmblZlZlZlZaaaaaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacznknknkmJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZlZmnmfmfmfmgmcmfmqmfmkmnlZlZlZmrmrmrmrmrmrmrmrmrmrmrmsmbmblZlZlZlZaaaamHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamLnnnmncmLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZlZmnmtmtmnmnmnmnmnmnmnmnlZlZlZmrmjmimvmumimimimimjmrmwmrmbmblZlZlZaaaaaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacznonpaznpnqmJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZlZlZlZmfmflZlZlZlZlZlZlZlZlZlZlZmrmjmimimimimimimimjmymimrmbmblZlZlZmHmHaaaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHaaaaaaaamInrnomTnsnsnqmMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbmrmrmAmzmrmrmrmrmrmBmrmrmrmrmrmrmCmimDmimimimrmymrmrmrmrmombmblZlZmHmHmHaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHaaaamHmHmHmHmHntnvnumHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmlmbmrmzmzmAmFmzmGmrmrmSnhmVnjnimrmrmrmrmrnlmrmymrminxnwnymrmbmbmblZlZmHmHmHaamHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmImImHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZmbnAnzmrmGnBmAmzmznCmyminhmSnhnjmimymimiminDmimimimrmiminwnEmrmsmblZlZlZaaaamHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZmbmbmbmrmrmrmrnFmimrmrmimSnhmrmrmymrminGminHmiminImrmininwnJmrmbmblZlZnKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmImIaaaaczmKmKmLmLmKmKmKmKmJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZlZmbmomrmiminDmimimrmrmrmrmrmrnLmimrmimimimimiminMmrmymrmrmrmrmbmblZlZnKaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmIczmKmNmImOazazmPmPmQazmRdlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmrnNmimimimimrnHnPnOmrnDmimimrmrnQmrmrmymrmrmrminSnRnTmrmbmblZlZlZmHmHaaaaaaaaaaaaaaaaaakVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmTazazazazazmUazmRehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbmrmiminHmimimrmimimimymimimimymimimDnUmimimimymimxnVmimrmbmblZlZlZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmWmXmYazmZmUazmUazmUmRehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakVaaaaaaaalZlZmbnzmrnWmimimimimymimimimrmDmimimrmimimimimiminXmrmimimimimrmsmbmblZlZmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHnaaznbazncazmOazazazmUmRehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmrnYmimimimimrmrmymrmrmrmrmrmrmimEnZoboamiocmrmrmrmrodmrmomblZlZlZmHbBmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHndmKneaznfazazngmPmPazmRhZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZmbmbmomrmrmrmyoemrmrmiminDmimiogofmrmimEohoioamiojmrokomolonmrmbmblZlZlZmImImIbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmHndmKmKmLmLmKmKmKmKmMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmwmimymimioomrmimimimiopmxmrmrmymrmrmrmrmymrmrmrmronoqmrmbmblZlZmbmIbBmImIaaaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmrmrmrminHmimymimDmimimEormrosnwouotovmrmiminDmDowoloxmrmbmblZlZmnmImHmImIaaaabBmHmIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHaamHmHmHmHmHmImImHmHmHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbnzmrozoymioAmrmimioBmimimimymimioCoCoCmrmimimimiowonoDmrmsmblZlZmbmImHmHmIaaaaaamImIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmImImImHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbmomrmrmrmymrmrmioFoEmimioGmrmDmimimimimymimioBmimrodmrmrmbmblZlZmbmHmHmHmImIaamHbBmHmIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHaaaaaaaamImImHmImHmHmImImIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmbmboHmrminHmrmrmrmrmymrmrmrmrmrmrmrmrmroImimimimrmimDmrmbmblYoJoKmHmImImImIbBmHaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHaaaaaaaaaaaamImHmHmHmHmHmHmIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmbmbmbmrmiminDmimimrmioLmrmioMoFnDoNoOmrmrmrmrmrmrmimimrmemrlYoPoQbBmIbBmHmImHmImImHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZlZlZlZlZmbmbmrmroRoSoamimymimimymimimimimimimymiminDoTmymimimemzoUoVlXoKmHmImHmImImImHmImHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZlZlZlZlZmbmbmrmrmrmrmrmrozmimrmDmimioBmimimrmDmimimimrozmimrmemrlYlYoWmHmImImImHmImHmIbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHaamHlZlZmombmboHmbmbmbmrmrmymrmrmymrmymrmrmrmroImimimroXoYmrmbmblZlZlZaamImHbBmHmImHmImHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZlZmbmbmlmbmbmbmbmrozmymimimrmioZpbpamrmimimimrmrmrmrmbmblZlZmbmHaaaamIaamImImIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZnKlZlZmbpcmbmbmbmbmrmrmrpdmimymimimimimymimimimrmbmboHmbmblZlZmbmIaaaaaaaamImIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanKlZlZmbmbmbmbmomboHmbmrmrmymrmrmrmrmimrnHmimDmrmbmbmbmbmblZlZmbbBaaaaaaaamIaaaaaaaaaaaaaaaakVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZlZlZlZlZmbmbmbmbmbmboHmbmbmbmbmrmrmrmrmrmrmrmombmlmblZlZlZmbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakVaaaaaaaaaaaaaaaamHlZlZlZlZlZlZlZlZlZlZlZmbmbmbmbmbmbmomboHmbmbmboHmbpemblZlZlZlZnKmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacznonpaznpnqmJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZlZlZlZmfmflZlZlZlZlZlZlZlZlZlZlZmrmjmimimimimimimimjmymzmrmbmblZlZlZmHmHaaaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHaaaaaaaamInrnomTnsnsnqmMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbmrmrmBmAmrmrmrmrmrmCmrmrmrmrmrmrmDmimFmimimimrmymGmrmrmrmombmblZlZmHmHmHaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHaaaamHmHmHmHmHntnvnumHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmlmbmrmAmAmBmSmAmVmrmrnhnjninwnlmrmrmrmrmrmrmrmymrminynxnzmrmbmbmblZlZmHmHmHaamHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmImImHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZmbnBnAmrmVnCmBmAmAnDmyminjnhnjnwmimymimiminEmimimimrmimimimimrmsmblZlZlZaaaamHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZmbmbmbmrmrmrnFnGmimrmrminhnjmrmrmymrminHminImiminJmrminlminlmrmbmblZlZnKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmImIaaaaczmKmKmLmLmKmKmKmKmJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZlZmbmomrmimimimimimrmrmrmrmrmrnLmimrmimimimimiminMmrmynNmrmrmrmbmblZlZnKaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmIczmKmNmImOazazmPmPmQazmRdlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmrnOmimimimimrnInQnPmrnEmimimrmrnRmrmrmymrmrmrminTnSnUmrmbmblZlZlZmHmHaaaaaaaaaaaaaaaaaakVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmTazazazazazmUazmRehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbmrnVmimiminWmrmimimimymimimimymimimFnXmimimimymimxnYmimrmbmblZlZlZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmWmXmYazmZmUazmUazmUmRehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakVaaaaaaaalZlZmbnAoanZmimimimimymimimimrmFmimimrmimimimimimiobmrmimimimimrmsmbmblZlZmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHnaaznbazncazmOazazazmUmRehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmrocmFmimimFmrodmymrmrmroemrmrmimEofohogmioimrmrmrmrojmrmomblZlZlZmHbBmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHndmKneaznfazazngmPmPazmRhZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZmbmbmomrmrmrmymrmrmrokminEmEolonommrmimEooopogmioqmrmiosorotmrmbmblZlZlZmImImIbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmHndmKmKmLmLmKmKmKmKmMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmwmzmymimioumrmxmimimimiovmrmrmymrowmrmrmymrmrmrmroxoymrmbmblZlZmbmIbBmImIaaaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmrmrmrminImimymimFmimimiozmroBoAoDoCoEmrmiminEmFoForoGmrmbmblZlZmnmImHmImIaaaabBmHmIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHaamHmHmHmHmHmImImHmHmHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbnAmroHmiminWoImimioJmionoKmymimioLoLoLoMmimimimioFotoNmrmsmblZlZmbmImHmHmIaaaaaamImIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmImImImHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbmomrmrmrmymrmrmioPoOmioQoRmrmFmimimimimymimioJmimrojmrmrmbmblZlZmbmHmHmHmImIaamHbBmHmIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHaaaaaaaamImImHmImHmHmImImIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmbmboSmrminImroTmrmrmyoUmrmrmroVmrmrmrmroWmimimimrmimFmrmbmblYoXoYmHmImImImIbBmHaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHaaaaaaaaaaaamImHmHmHmHmHmHmIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmbmbmbmrmiminEmimimrmioZmrmipaoPnEpbpcmrmrmrmrmrmrnVmimrmemrlYpdpebBmIbBmHmImHmImImHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZlZlZlZlZmbmbmrmrpfpgogmimymiphmymimimimimimimymiminEpimymimimenDpjpklXoYmHmImHmImImImHmImHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZlZlZlZlZmbmbmrmrmrmrmrmrplphmrmFmimioJmimimrmFmimimimCmimimrmemrlYlYpmmHmImImImHmImHmIbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHaamHlZlZmombmboSmbmbmbmrmrpnmrmrmymrmymrmrmrmroWmimimrpoppmrmbmblZlZlZaamImHbBmHmImHmImHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZlZmbmbmlmbmbmbmbmrpqmymimimrmiprptpsmrmimimimrmrmrmrmbmblZlZmbmHaaaamIaamImImIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZnKlZlZmbpumbmbmbmbmroUmrpvmimymimimimimymimimimrmbmboSmbmblZlZmbmIaaaaaaaamImIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanKlZlZmbmbmbmbmomboSpwmrmrmymrmrmrmrnImrnImimFmrmbmbmbmbmblZlZmbbBaaaaaaaamIaaaaaaaaaaaaaaaakVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZlZlZlZlZmbmbmbmbmbmboSmbmbmbmbmrmrmrmrmrmrmrmombmlmblZlZlZmbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakVaaaaaaaaaaaaaaaamHlZlZlZlZlZlZlZlZlZlZlZmbmbmbmbmbmbmomboSmbmbmboSmbpxmblZlZlZlZnKmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZnKnKlZlZlZlZlZlZlZlZlZlZmbmbmbmbmbmbmbmbmbmbmbmblZlZlZlZlZnKaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHaaaaaamHmHmHaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHaaaamHaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index c3be3b17cdb..6a9813218a7 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -550,46 +550,66 @@ var/list/ghostteleportlocs = list() name = "Suspicious Supply Depot" icon_state = "red" tele_proof = 1 - requires_power = 0 - var/local_alarm = FALSE - var/called_backup = FALSE - var/used_self_destruct = FALSE - + 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/obj/structure/fusionreactor/reactor -/area/syndicate_depot/proc/increase_alert() + +/area/syndicate_depot/updateicon() + if(destroyed) + icon_state = null + invisibility = INVISIBILITY_MAXIMUM + else if(used_self_destruct) + icon_state = "radiation" + invisibility = INVISIBILITY_LIGHTING + else if(called_backup) + icon_state = "red" + invisibility = INVISIBILITY_LIGHTING + else if(local_alarm) + icon_state = "bluenew" + invisibility = INVISIBILITY_LIGHTING + else + icon_state = null + invisibility = INVISIBILITY_MAXIMUM + +/area/syndicate_depot/proc/increase_alert(var/reason) if(!local_alarm) - local_alarm() + local_alarm(reason, FALSE) return if(!called_backup) - call_backup() + call_backup(reason, FALSE) return if(!used_self_destruct) - activate_self_destruct(FALSE) + activate_self_destruct(FALSE, null) + updateicon() -/area/syndicate_depot/proc/local_alarm(silent) +/area/syndicate_depot/proc/local_alarm(var/reason, var/silent) if(local_alarm) return local_alarm = TRUE if(!silent) - announce_here("Incursion detected. Red alert!") + announce_here("Depot Code BLUE", reason) var/list/possible_bot_spawns = list() for(var/obj/effect/landmark/L in landmarks_list) if(L.name == "syndi_depot_bot") possible_bot_spawns |= L if(possible_bot_spawns.len) var/obj/effect/landmark/S = pick(possible_bot_spawns) - new /mob/living/simple_animal/bot/ed209/syndicate(get_turf(S)) - spawn(0) - set_fire_alarm_effect() + 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() -/area/syndicate_depot/proc/call_backup(silent) +/area/syndicate_depot/proc/call_backup(var/reason, var/silent) if(called_backup || used_self_destruct) return called_backup = TRUE if(!silent) - announce_here("Critical breach. Locking down the depot and requesting backup from Syndicate HQ.") + 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() @@ -598,15 +618,19 @@ var/list/ghostteleportlocs = list() if(L.name == "syndi_depot_backup") var/mob/living/simple_animal/hostile/syndicate/ranged/space/autogib/S = new /mob/living/simple_animal/hostile/syndicate/ranged/space/autogib(get_turf(L)) S.name = "Syndicate Backup" + updateicon() -/area/syndicate_depot/proc/activate_self_destruct(var/deliberate, var/mob/user) +/area/syndicate_depot/proc/activate_self_destruct(var/containment_failure, var/mob/user) if(used_self_destruct) return used_self_destruct = TRUE - local_alarm(TRUE) + local_alarm("", TRUE) activate_lockdown(TRUE) - if(!deliberate) - announce_here("Defeat imminent. Self-destruct active.") + if(containment_failure) + announce_here("Depot Code DELTA","Fusion reactor containment failure. All hands, evacuate. All hands, evacuate. Core breach imminent!") + else + announce_here("Depot Code DELTA","Depot declared lost to hostile forces. Priming self-destruct!") + if(user) var/turf/T = get_turf(user) var/area/A = get_area(T) @@ -617,10 +641,8 @@ var/list/ghostteleportlocs = list() playsound(user, 'sound/machines/Alarm.ogg', 100, 0, 0) else log_game("Depot self destruct activated.") - - if(reactor) - reactor.overload(FALSE) - + reactor.overload(containment_failure) + updateicon() /area/syndicate_depot/proc/activate_lockdown() if(used_lockdown) @@ -640,8 +662,17 @@ var/list/ghostteleportlocs = list() A.locked = !A.locked A.update_icon() -/area/syndicate_depot/proc/announce_here(var/a_text) - var/msg_text = "Depot Defense Alert
[a_text]" +/area/syndicate_depot/proc/toggle_falsewalls() + for(var/obj/structure/falsewall/reinforced/F in src) + spawn(0) + F.toggle() + +/area/syndicate_depot/proc/toggle_teleport_beacon() + for(var/obj/machinery/bluespace_beacon/syndicate/B in src) + return B.toggle() + +/area/syndicate_depot/proc/announce_here(var/a_header = "Depot Defense Alert", var/a_text = "") + var/msg_text = "[a_header]
[a_text]" var/list/receivers = list() for(var/mob/M in mob_list) if(!M.ckey) diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm index 12ecb200eef..24ed47defa5 100644 --- a/code/game/machinery/Beacon.dm +++ b/code/game/machinery/Beacon.dm @@ -10,22 +10,31 @@ idle_power_usage = 0 var/syndicate = 0 var/obj/item/device/radio/beacon/Beacon + var/enabled = TRUE /obj/machinery/bluespace_beacon/New() ..() + create_beacon() + +/obj/machinery/bluespace_beacon/proc/create_beacon() var/turf/T = loc Beacon = new /obj/item/device/radio/beacon Beacon.invisibility = INVISIBILITY_MAXIMUM Beacon.loc = T Beacon.syndicate = syndicate - hide(T.intact) -/obj/machinery/bluespace_beacon/Destroy() +/obj/machinery/bluespace_beacon/proc/destroy_beacon() QDEL_NULL(Beacon) + +/obj/machinery/bluespace_beacon/proc/toggle() + enabled = !enabled + return enabled + +/obj/machinery/bluespace_beacon/Destroy() + destroy_beacon() return ..() -// update the invisibility and icon /obj/machinery/bluespace_beacon/hide(var/intact) invisibility = intact ? 101 : 0 update_icon() @@ -33,24 +42,29 @@ // update the icon_state /obj/machinery/bluespace_beacon/update_icon() var/state="floor_beacon" - if(invisibility) icon_state = "[state]f" - else icon_state = "[state]" /obj/machinery/bluespace_beacon/process() - if(!Beacon) - var/turf/T = loc - Beacon = new /obj/item/device/radio/beacon - Beacon.invisibility = INVISIBILITY_MAXIMUM - Beacon.loc = T - if(Beacon) - if(Beacon.loc != loc) - Beacon.loc = loc - + if(enabled) + if(Beacon) + if(Beacon.loc != loc) + Beacon.loc = loc + else + create_beacon() + else + if(Beacon) + destroy_beacon() update_icon() + /obj/machinery/bluespace_beacon/syndicate - syndicate = 1 \ No newline at end of file + syndicate = 1 + +/obj/machinery/bluespace_beacon/syndicate/New() + ..() + if(prob(50)) + enabled = FALSE + diff --git a/code/game/machinery/computer/depot.dm b/code/game/machinery/computer/depot.dm index 379f2c0167f..355426d3400 100644 --- a/code/game/machinery/computer/depot.dm +++ b/code/game/machinery/computer/depot.dm @@ -3,10 +3,18 @@ name = "depot door control computer" icon = 'icons/obj/computer.dmi' icon_keyboard = "syndie_key" - icon_screen = "syndishuttle" + icon_screen = "tcboss" light_color = LIGHT_COLOR_PURE_CYAN req_access = list(access_syndicate) var/activated = FALSE + var/sound_yes = 'sound/machines/twobeep.ogg' + var/sound_no = 'sound/machines/buzz-sigh.ogg' + var/sound_click = 'sound/machines/click.ogg' + var/area/syndicate_depot/depotarea + +/obj/machinery/computer/syndicate_depot/New() + . = ..() + depotarea = areaMaster /obj/machinery/computer/syndicate_depot/attack_ai(var/mob/user as mob) if(req_access.len) @@ -47,8 +55,10 @@ return 1 if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon))) usr.set_machine(src) - if(href_list["activate"]) - activate(usr) + if(href_list["primary"]) + primary(usr) + if(href_list["secondary"]) + secondary(usr) add_fingerprint(usr) updateUsrDialog() return @@ -64,52 +74,58 @@ /obj/machinery/computer/syndicate_depot/proc/get_menu() return {"Syndicate Depot Door Control Computer
-

Toggle Door Security +

Toggle Airlocks +

Toggle Hidden Doors
"} -/obj/machinery/computer/syndicate_depot/proc/activate(var/mob/user) - var/area/syndicate_depot/D = get_area(src) - if(D) - D.toggle_door_locks(src) +/obj/machinery/computer/syndicate_depot/proc/primary(var/mob/user) + if(depotarea) + depotarea.toggle_door_locks(src) + +/obj/machinery/computer/syndicate_depot/proc/secondary(var/mob/user) + if(depotarea) + depotarea.toggle_falsewalls(src) + + +/obj/machinery/computer/syndicate_depot/proc/raise_alert(var/reason) + if(depotarea) + depotarea.increase_alert(reason) + -/obj/machinery/computer/syndicate_depot/proc/raise_alert() - var/area/syndicate_depot/D = get_area(src) - if(D) - D.increase_alert() /obj/machinery/computer/syndicate_depot/selfdestruct name = "reactor control computer" + icon_screen = "explosive" req_access = list() /obj/machinery/computer/syndicate_depot/selfdestruct/get_menu() return {"Syndicate Depot Fission Reactor Control
-

Disable Containment Field +

Disable Containment Field
"} -/obj/machinery/computer/syndicate_depot/selfdestruct/activate(var/mob/user) +/obj/machinery/computer/syndicate_depot/selfdestruct/primary(var/mob/user) if(activated) - playsound(user, 'sound/machines/buzz-sigh.ogg', 50, 0) + playsound(user, sound_no, 50, 0) return activated = TRUE - playsound(user, 'sound/machines/click.ogg', 20, 1) - var/area/syndicate_depot/D = get_area(src) - if(D) - D.activate_self_destruct(TRUE, user) + playsound(user, sound_click, 20, 1) + if(depotarea) + depotarea.activate_self_destruct(TRUE, user) /obj/machinery/computer/syndicate_depot/syndiecomms name = "syndicate communications computer" - icon_state = "computer" + icon_screen = "syndishuttle" req_access = list() /obj/machinery/computer/syndicate_depot/syndiecomms/get_menu() return {"Syndicate Communications Relay
-

Contact Syndicate Command +

Contact Syndicate Command
"} -/obj/machinery/computer/syndicate_depot/syndiecomms/activate(var/mob/user) +/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.") @@ -122,8 +138,49 @@ return Syndicate_announce(input, user) to_chat(user, "Message transmitted.") - log_say("[key_name(user)] has made a Syndicate announcement: [input]") + log_say("[key_name(user)] has made a Syndicate announcement from the depot: [input]") else - to_chat(user, "ERROR: unauthorized access detected. [user] does not work for us.") - raise_alert() + to_chat(user, "ERROR: unauthorized access detected.") + raise_alert("Detected unauthorized access to [src]!") +/obj/machinery/computer/syndicate_depot/syndiecomms/power_change() + . = ..() + if(!activated && (stat & NOPOWER)) + activated = TRUE + raise_alert("Powergrid failure.") + +/obj/machinery/computer/syndicate_depot/teleporter + name = "syndicate teleporter console" + icon_screen = "telesci" + icon_keyboard = "teleport_key" + var/obj/machinery/bluespace_beacon/syndicate/mybeacon + +/obj/machinery/computer/syndicate_depot/teleporter/New() + . = ..() + spawn(10) + findbeacon() + +/obj/machinery/computer/syndicate_depot/teleporter/proc/findbeacon() + for(var/obj/machinery/bluespace_beacon/syndicate/B in myArea) + mybeacon = B + playsound(loc, sound_yes, 50, 0) + return TRUE + playsound(loc, sound_no, 50, 0) + return FALSE + +/obj/machinery/computer/syndicate_depot/teleporter/get_menu() + var/menutext = "Syndicate Teleporter Control
" + if(mybeacon) + menutext += {"

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

Status: Reconnecting to beacon..."} + return menutext + +/obj/machinery/computer/syndicate_depot/teleporter/primary(var/mob/user) + activated = TRUE + if(!mybeacon && user) + to_chat(user, "Unable to connect to teleport beacon.") + return + var/bresult = mybeacon.toggle() + to_chat(user, "Syndicate Teleporter Beacon: [bresult ? "ONLINE" : "OFFLINE"]") diff --git a/code/game/objects/effects/spawners/random_spawners.dm b/code/game/objects/effects/spawners/random_spawners.dm index e55271ee8d0..f698a2bd22a 100644 --- a/code/game/objects/effects/spawners/random_spawners.dm +++ b/code/game/objects/effects/spawners/random_spawners.dm @@ -383,11 +383,3 @@ /turf/simulated/wall/r_wall = 1, /obj/structure/falsewall/reinforced = 1 ) - -/obj/effect/spawner/random_spawners/syndicate/layout/telebeacon - name = "50pc feature telebeacon" - icon = 'icons/obj/objects.dmi' - icon_state = "floor_beaconf" - result = list( - /obj/machinery/bluespace_beacon/syndicate = 1 - ) diff --git a/code/game/objects/effects/overload.dm b/code/game/objects/structures/depot.dm similarity index 70% rename from code/game/objects/effects/overload.dm rename to code/game/objects/structures/depot.dm index f29aea16655..b2287288ffd 100644 --- a/code/game/objects/effects/overload.dm +++ b/code/game/objects/structures/depot.dm @@ -2,12 +2,10 @@ /obj/structure/fusionreactor name = "syndicate fusion reactor" desc = "" - icon = 'icons/obj/singularity.dmi' - icon_state = "beaconsynd1" - //icon = 'icons/obj/device.dmi' - //icon_state = "powersink1" + icon = 'icons/obj/device.dmi' + icon_state = "powersink1" anchored = 1 - var/health = 30 + max_integrity = 50 var/area/syndicate_depot/depotarea /obj/structure/fusionreactor/New() @@ -17,17 +15,17 @@ depotarea.reactor = src /obj/structure/fusionreactor/ex_act(severity) - health -= 10 * severity + obj_integrity -= 10 * severity healthcheck() /obj/structure/fusionreactor/bullet_act(var/obj/item/projectile/Proj) - health -= Proj.damage + obj_integrity -= Proj.damage ..() healthcheck() /obj/structure/fusionreactor/proc/healthcheck() - if(health <= 0) - overload(FALSE) + if(obj_integrity <= 0) + overload(TRUE) /obj/structure/fusionreactor/attackby(obj/item/I, mob/user, params) if(iswrench(I)) @@ -43,9 +41,9 @@ else return ..(I, user, params) -/obj/structure/fusionreactor/proc/overload(var/deliberate) +/obj/structure/fusionreactor/proc/overload(var/containment_failure) var/obj/effect/overload/O = new /obj/effect/overload(get_turf(src)) - if(deliberate) + if(containment_failure) O.deliberate = TRUE O.max_cycles = 7 qdel(src) @@ -60,10 +58,17 @@ var/beepsound = 'sound/items/timer.ogg' var/deliberate = FALSE var/max_cycles = 15 + var/max_fire_range = 6 + var/area/syndicate_depot/depotarea /obj/effect/overload/New() ..() processing_objects.Add(src) + depotarea = areaMaster + if(depotarea) + if(!depotarea.used_self_destruct) + depotarea.used_self_destruct = TRUE // Silences all further alerts from this point onwards. + depotarea.updateicon() /obj/effect/overload/process() if(cycles < max_cycles) @@ -71,15 +76,17 @@ playsound(loc, beepsound, 50, 0) cycles++ var/fire_range = cycles - if(fire_range > 3) - fire_range = 5 + if(max_fire_range > 6) + max_fire_range = 6 var/turf/T = get_turf(src) for(var/turf/simulated/turf in range(fire_range, T)) new /obj/effect/hotspot(turf) return - if(areaMaster.fire) - areaMaster.fire_reset() - explosion(get_turf(src), 20, 30, 40, 50, 1, 1, 40, 0, 1) + if(depotarea) + depotarea.destroyed = TRUE + depotarea.updateicon() + + explosion(get_turf(src), 25, 35, 45, 55, 1, 1, 60, 0, 0) processing_objects.Remove(src) qdel(src) diff --git a/code/modules/mob/living/simple_animal/bot/syndicate.dm b/code/modules/mob/living/simple_animal/bot/syndicate.dm index 6a38090b325..5f3ffa2545e 100644 --- a/code/modules/mob/living/simple_animal/bot/syndicate.dm +++ b/code/modules/mob/living/simple_animal/bot/syndicate.dm @@ -1,6 +1,6 @@ /mob/living/simple_animal/bot/ed209/syndicate - name = "ED-411 Security Robot" + name = "Syndicate Sentry Bot" desc = "A syndicate security bot." icon = 'icons/mecha/mecha.dmi' icon_state = "darkgygax" @@ -19,6 +19,8 @@ throw_pressure_limit = 120 var/turf/saved_turf var/stepsound = 'sound/mecha/mechstep.ogg' + var/area/syndicate_depot/depotarea + var/raised_alert = FALSE /mob/living/simple_animal/bot/ed209/syndicate/New() @@ -123,6 +125,7 @@ s.start() new /obj/effect/decal/cleanable/blood/oil(loc) new /obj/effect/decal/mecha_wreckage/gygax/dark(loc) + raise_alert("[src] destroyed.") qdel(src) @@ -150,4 +153,16 @@ return /mob/living/simple_animal/bot/ed209/syndicate/Process_Spacemove(var/movement_dir = 0) - return 1 \ No newline at end of file + return 1 + +/mob/living/simple_animal/bot/ed209/syndicate/start_patrol() + if(tries >= BOT_STEP_MAX_RETRIES) + raise_alert("[src] captured by hostile forces.") + return ..() + +/mob/living/simple_animal/bot/ed209/syndicate/proc/raise_alert(var/reason) + if(raised_alert) + return + raised_alert = TRUE + if(depotarea) + depotarea.increase_alert(reason) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index dc7f4c5c4a6..7a6bf2ccfbe 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -77,6 +77,7 @@ /mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss/New() ..() + name = "[name] [pick(last_names)]" depotarea = areaMaster /mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss/Aggro() @@ -87,18 +88,18 @@ if(seen_enemy) aggro_cycles++ if(!raised_alert && aggro_cycles >= 60) - raise_alert() + raise_alert("[name] has reported contact with hostile forces.") ..() -/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss/proc/raise_alert() +/mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss/proc/raise_alert(var/reason) if(depotarea && !raised_alert) say("Intruder!") raised_alert = TRUE - depotarea.increase_alert() + depotarea.increase_alert(reason) /mob/living/simple_animal/hostile/syndicate/melee/autogib/depotboss/death() - raise_alert() + raise_alert("[name] has died.") return ..() diff --git a/paradise.dme b/paradise.dme index a23101b425f..6a447cb6ba6 100644 --- a/paradise.dme +++ b/paradise.dme @@ -699,7 +699,6 @@ #include "code\game\objects\effects\mines.dm" #include "code\game\objects\effects\misc.dm" #include "code\game\objects\effects\overlays.dm" -#include "code\game\objects\effects\overload.dm" #include "code\game\objects\effects\portals.dm" #include "code\game\objects\effects\spiders.dm" #include "code\game\objects\effects\step_triggers.dm" @@ -927,6 +926,7 @@ #include "code\game\objects\structures\bedsheet_bin.dm" #include "code\game\objects\structures\coathanger.dm" #include "code\game\objects\structures\curtains.dm" +#include "code\game\objects\structures\depot.dm" #include "code\game\objects\structures\displaycase.dm" #include "code\game\objects\structures\door_assembly.dm" #include "code\game\objects\structures\dresser.dm"